# Не актуально

Не актуальные инструкции, тк более не используются в моей инфраструктуре.

# Установка docker и Portainer в lxc контейнере proxmox

Использование Proxmox и lxc контейнеров в нем, позволяет оптимизировать использование ресурсов и повышает отказоустойчивость инфраструктуры, по сути lxc контейнер является сильно "облегченной" операционной системой, на которую можно установить только те пакеты которые необходимы. Но сама по себе идея работы lxc контейнера, не является новой, одним из самых популярных аналогов lxc контейнеров является docker. Так как я не ограничен никакими рамками в использовании ПО отказываться от docker и docker-compose я не вижу никакого смысла.  
Proxmox и его lxc контейнеры никак не ограниченны в установке ПО поэтому мне ничего не мешает выделить ресурсы ноды под использование другой контейнерной структуры.

Portainer — это открытый веб-интерфейс для управления контейнерами Docker, который упрощает работу частично освобождая от использования командной строки.

В гайде описан процесс установки в lxc контейнер docker и portainer

#### Создание LXC контейнера

Процесс создания lxc контейнера описан [тут](https://bookstack.redpunk.net/books/ispolzuemoe-po-i-instrukcii-po-ego-ustanovke/page/sozdanie-lxc-konteinera-proxmox "Создание LXC контейнера proxmox")

Нам необходимо создать контейнер с такими настройками:

- **General**: Hostname=portainer-docker
- **Template**: Ubuntu 22.04 или Debian 12
- **Disks**: 8GB
- **CPU**: 2 cores
- **Memory**: 2048 MB

Далее необходимо подключиться к нему через [ssh](https://bookstack.redpunk.net/books/ispolzuemoe-po-i-instrukcii-po-ego-ustanovke/page/podkliucenie-k-node-konteineru-ili-virtualnoi-masine-proxmox-cerez-ssh "Подключение к ноде, контейнеру или виртуальной машине proxmox через ssh")

#### Установка docker

```bash
apt update && apt install curl -y
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
```

#### Установка portainer

```
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer --restart always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest
```

Доступ http://&lt;ip lxc контейнера&gt;:9000

# Установка и настройка Nginx proxy manager в docker portainer, настройка split dns, настройка wildcard-сертификата

После установки [docker portainer](https://bookstack.redpunk.net/books/ispolzuemoe-po-i-instrukcii-po-ego-ustanovke/page/ustanovka-docker-i-portainer-v-lxc-konteinere-proxmox "docker и Portainer в lxc контейнере proxmox")

**Nginx Proxy Manager (NPM)** — это удобный инструмент с веб-интерфейсом для управления обратным прокси на базе Nginx, который упрощает маршрутизацию трафика к сервисам в Docker, LXC или VM без редактирования конфигов вручную.

**Основные функции**  
Поддерживает проксирование по доменам/поддоменам, автоматическое получение SSL-сертификатов Let's Encrypt, HTTP-аутентификацию, списки доступа (ACL) и блокировку IP. Позволяет настраивать перенаправления, кастомные страницы ошибок и потоки TCP/UDP через Streams.  
​

После покупки домена и регистрации его у dns провайдеров у нас появляется возможность реализовать обратный прокси трафика по доменному имени, это позволит нам убрать отображение ip адресов из нашей homelab и реализовать доступ из интернета к веб панелям необходимых нам сервисов.

#### Установка Nginx Proxy Manager

Для установки **Nginx Proxy Manager (npm)** в docker через portainer, нам необходимо перейти в веб-интерфейс portainer

```
http://<ip lxc контейнера>:9000
```

В веб интерфейсе необходимо перейти в **docker**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/pApimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/pApimage.png)

Слева или в центре экрана выбрать **Stacks**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/R8Eimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/R8Eimage.png)

Слева сверху выбрать **+Add stack**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/1dfimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/1dfimage.png)

В **name** указать название нашего контейнера **npm**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/KM2image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/KM2image.png)

Ниже в поле для ввода кода **Web editor**, вводим код нашего **docker-compose** файла

```yaml
version: '3.8'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'    # HTTP
      - '443:443'  # HTTPS
      - '81:81'    # Админка NPM
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    environment:
      DISABLE_IPV6: 'true'

```

После ввода необходимо нажать кнопку **Deploy the stack**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/5Vyimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/5Vyimage.png)

Если все в порядке, после установки у вас появится доступ к панели по адресу http://&lt;ip lxc контейнера с portain&gt;:81

#### Настройка Nginx Proxy Manager

После установки нам необходимо выполнить несколько обязательных вещей

##### Проброс портов к npm  


В OPNsense нам необходимо перейти в раздел **Firewall**, далее **NAT** и перейти в **Port Forward**, в открывшемся окне нажать справа сверху на **+**(add)

В открывшемся окне нужно заполнить поля

**Interface**: WAN

**TCP/IP Version**: IPv4

**Protocol**: TCP

**Destination**: WAN adress

**Destination port range**: from: HTTP; to: HTTP

**Redirect target IP**: Single host of Network, ниже ip используемого lxc контейнера

**Redirect target port**: HTTP

**Description**: NPM HTTP for Let's Encrypt

Нажать кнопку **Save**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/fc0image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/fc0image.png)

После этого нажимаем кнопку **Apply changes** и создаем следующее правило кнопкой **+**(add)

**Interface**: WAN

**TCP/IP Version**: IPv4

**Protocol**: TCP

**Destination**: WAN adress

**Destination port range**: from: HTTPS; to: HTTPS

**Redirect target IP**: Single host of Network, ниже ip используемого lxc контейнера

**Redirect target port**: HTTPS

**Description**: NPM HTTPS for Let's Encrypt

Нажать кнопку **Save**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/z64image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/z64image.png)

После этого нажимаем кнопку **Apply changes**

##### Покупка домена reg.ru

Для настройки доменных имен в npm доменное имя необходимо купить по этому поводу уже написана [подробная статья](https://habr.com/ru/articles/716002/)

После покупки доменного имени и указания его у ДНС провайдера потребуется время что бы запись появилась у ДНС резолверов, проверить это проще всего командой на любом клиенте сети с установленным линукс, я для этих целей создал отдельный тестовый [lxc контейнер](https://bookstack.redpunk.net/books/ispolzuemoe-po-i-instrukcii-po-ego-ustanovke/page/sozdanie-lxc-konteinera-proxmox "Создание LXC контейнера proxmox")

```
dig <ваш домен>
```

В выводе команды должен отобразится внешний ip адрес, запись проводится в течении 1-24 часов.

##### Настройка сертификата

Так как мы планируем использовать большое количество поддоменов нам не подходит вариант с обычным запросом сертификата через **certbot, reg.ru** позволяет запрашивать **wildcard** сертификат на домен и все поддомены, поэтому мы будем настраивать сразу его.

На сайте **reg.ru** заходишь в личный кабинет, далее Настройки API, запрашиваешь ключ API, его необходимо записать.

В **NPM** нужно создать **wildcard-сертификат**, во вкладке **Certificates** нужно нажать на кнопку **Let's Encrypt via DNS**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/oqIimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/oqIimage.png)

В открывшемся окне необходимо заполнить поля  
**Domain Names**: тут указываешь &lt;твоедоменноеимя.ru&gt; и &lt;\*.твоедоменноеимя.ru&gt;

**DNS Provider**: reg.ru

**Credentials File Content**:   
dns\_username=&lt;твоя почта на reg.ru&gt;  
dns\_password=&lt;api колюч&gt;

После этого необходимо нажать кнопку **Save** и подождать 1-5 минут.

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/rn1image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/rn1image.png)

##### Настройка split dns

Так как мы не хотим что бы все наши домены были доступны из сети, и для оптимизации подключения к доменам, нам необходимо настроить **split dns** на нашем **opnsense.** Технически можно реализовать эту технологию на любом локальном **dns** сервере, но в opnsense уже установлен **unbound dns**, в котором есть необходимый нам функционал (ubound dns должен быть включен и настроен), для этого нам необходимо перейти во вкладку **Services**, далее **Unbound DNS**, далее **Overrides**, в открывшемся окне в разделе **Hosts** нажать на **+**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/Fs8image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/Fs8image.png)

В открывшемся окне необходимо заполнить поля

**Enabled**: Галочка

**Host**: \*

**Domain**: &lt;твой домен&gt;

**Type**: A (IPv4 address)

**IP address**: &lt;ip адрес lxc контейнера&gt;

**Description**: NPM

Далее нажать кнопку **Save** и **Apply**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/WG9image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/WG9image.png)

Следующим шагом нужно указать Query forwarding для нашего сертификата, что бы избежать проблем с сертификатами в локальной сети при переходе по нашим доменам.

Для этого необходимо перейти во вкладку **Query forwarding** нажать на **+** и в открывшемся окне заполнить поля

**Enabled**: Галочка

**Domain**: ocsp.int-x3.letsencrypt.org

**Server IP**: 1.1.1.1

Далее нажать **Save** и **Apply**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/W7Uimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/W7Uimage.png)

Теперь необходимо перейти в панель **npm** и настроить там группу доступа которую мы будем указывать при создании доменов.

Для этого необходимо перейти во вкладку **Acces list** нажать на кнопку **Add Acces list** и в открывшемся окне заполнить форму

Во вкладке **Details** необходимо указать имя нашей группы  
Во вкладке **Rules** необходимо добавить подсети из которых у нас будет доступ к нашим доменам

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/HUZimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/HUZimage.png)

#### Создание и настройка поддомена

Для создания поддомена нам необходимо перейти во вкладку Proxy Hosts и нажать на кнопку Add Proxy Host, в открывшемся окне необходимо заполнить поля

**Domain Names**: Вводим необходимы домен или поддомен

**Scheme**: В зависимости от панели к которой хотим открыть доступ выбираем http или https

**Forward Hostname / IP**: ip нашего сервиса,

**Forward Port**: Порт нашего сервиса

**Access List**: в зависимости от того хотим ли что бы сервис работал только локально или был публичным выбираем созданную нами группу доступа или Publicly Accessible

**Cache Assets**: (Опционально) Включает кэширование статических ресурсов (CSS, JS, изображения) на прокси-сервере для ускорения загрузки страниц, снижая нагрузку на backend-сервер.   
​

**Block Common Exploits**: (Опционально) Активирует встроенные правила Nginx для защиты от распространённых веб-атак (XSS, SQL-инъекции, кликджекинг) через заголовки безопасности вроде X-Frame-Options и Content-Security-Policy.  
​

**Websockets Support**: (Опционально) Включает поддержку WebSocket-протокола (ws://, wss://), необходимую для real-time приложений вроде чатов, дашбордов или игр (например, Grafana, Homarr в homelab).

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/qo2image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/qo2image.png)

Переходим во вкладку **SSL** в открывшемся окне необходимо заполнить поля

**SSL Certificate**: Указываем созданный нами раннее сертификат

**Force SSL**: (Опционально) Принудительно перенаправляет весь HTTP-трафик (порт 80) на HTTPS (порт 443) с помощью 301-редиректа, обеспечивая обязательное шифрование.  
​

**HSTS Enabled**: (Опционально) Включает HTTP Strict Transport Security — браузеры запоминают домен как HTTPS-only на заданный период (max-age), предотвращая MITM-атаки и downgrade до HTTP.  
​

**HTTP/2 Support**: (Опционально) Активирует протокол HTTP/2 для мультиплексирования запросов, сжатия заголовков и ускорения загрузки (требует SSL).  
​

**HSTS Sub-domains**: (Опционально) Расширяет HSTS-политику на все поддомены (includeSubDomains), заставляя браузеры применять HTTPS ко всем \*.domain.com.  
​

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/O8Qimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/O8Qimage.png)

После нажатия кнопки **Save** домен появится в списке и ресурс станет доступен по заданному домену

# Установка и настройка homepage в portainer

#### Установка homepage

Для установки **homepage** в [docker через portainer](https://bookstack.redpunk.net/books/ispolzuemoe-po-i-instrukcii-po-ego-ustanovke/page/ustanovka-docker-i-portainer-v-lxc-konteinere-proxmox "Установка docker и Portainer в lxc контейнере proxmox"), нам необходимо перейти в веб-интерфейс portainer

```
http://<ip lxc контейнера>:9000
```

В веб интерфейсе необходимо перейти в **docker**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/pApimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/pApimage.png)

Слева или в центре экрана выбрать **Stacks**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/R8Eimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/R8Eimage.png)

Слева сверху выбрать **+Add stack**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/1dfimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/1dfimage.png)

В **name** указать название нашего контейнера **homepage**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/KM2image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/KM2image.png)

Ниже в поле для ввода кода **Web editor**, вводим код нашего **docker-compose** файла

```yaml
version: "3.8"
services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    ports:
      - "3000:3000"
    volumes:
      - /opt/homepage/config:/app/config          # Конфиги (services.yaml, settings.yaml)
      - /opt/homepage/images:/app/public/images   # Фоны и кастомные картинки
      - /opt/homepage/icons:/app/public/icons     # Иконки сервисов
      - /opt/homepage/custom:/app/custom          # Кастом CSS/JS
      - /var/run/docker.sock:/var/run/docker.sock:ro  # Docker виджеты
      - /etc/localtime:/etc/localtime:ro          # Часовой пояс
    environment:

      - HOMEPAGE_ALLOWED_HOSTS=<ip контейнера portainer>:3000,<домен созданный в NPM>,localhost:3000 #ВНИМАТЕЛЬНО!!!
    restart: unless-stopped

```

После ввода необходимо нажать кнопку **Deploy the stack**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/5Vyimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/5Vyimage.png)

Если все в порядке, после установки у вас появится доступ к панели по адресу http://&lt;ip lxc контейнера с portain&gt;:3000

Настройку homepage рекомендую выполнять через [официальную документацию документацию homepage dashoboard](https://gethomepage.dev/configs/)

# Установка Nginx Proxy Manager в lxc контейнер

**Nginx Proxy Manager (NPM)** — это удобный инструмент с веб-интерфейсом для управления обратным прокси на базе Nginx, который упрощает маршрутизацию трафика к сервисам в Docker, LXC или VM без редактирования конфигов вручную.

**Основные функции**  
Поддерживает проксирование по доменам/поддоменам, автоматическое получение SSL-сертификатов Let's Encrypt, HTTP-аутентификацию, списки доступа (ACL) и блокировку IP. Позволяет настраивать перенаправления, кастомные страницы ошибок и потоки TCP/UDP через Streams.  
​

После покупки домена и регистрации его у dns провайдеров у нас появляется возможность реализовать обратный прокси трафика по доменному имени, это позволит нам убрать отображение ip адресов из нашей homelab и реализовать доступ из интернета к веб панелям необходимых нам сервисов.

#### Установка Nginx Proxy Manager

Для установки NPM в lxc контейнер, нам понадобиться скрипт с сайта [https://community-scripts.github.io/ProxmoxVE/scripts?id=nginxproxymanager](https://community-scripts.github.io/ProxmoxVE/scripts?id=nginxproxymanager)

А так же **VPN** подключение на роутере, для того что бы весь трафик в сети шел через **VPN**, некоторые пакеты в скрипте не доступны из России

В консоли ноды необходимо ввести

```
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/nginxproxymanager.sh)"
```

Сообщения о ошибках можно игнорировать, на все вопросы отвечаем **Y**

Если все в порядке, после установки у вас появится доступ к панели по адресу **http://&lt;ip lxc контейнера с portain&gt;:81**

#### Настройка Nginx Proxy Manager

После установки нам необходимо выполнить несколько обязательных вещей

##### Проброс портов к npm  


В OPNsense нам необходимо перейти в раздел **Firewall**, далее **NAT** и перейти в **Port Forward**, в открывшемся окне нажать справа сверху на **+**(add)

В открывшемся окне нужно заполнить поля

**Interface**: WAN

**TCP/IP Version**: IPv4

**Protocol**: TCP

**Destination**: WAN adress

**Destination port range**: from: HTTP; to: HTTP

**Redirect target IP**: Single host of Network, ниже ip используемого lxc контейнера

**Redirect target port**: HTTP

**Description**: NPM HTTP for Let's Encrypt

Нажать кнопку **Save**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/fc0image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/fc0image.png)

После этого нажимаем кнопку **Apply changes** и создаем следующее правило кнопкой **+**(add)

**Interface**: WAN

**TCP/IP Version**: IPv4

**Protocol**: TCP

**Destination**: WAN adress

**Destination port range**: from: HTTPS; to: HTTPS

**Redirect target IP**: Single host of Network, ниже ip используемого lxc контейнера

**Redirect target port**: HTTPS

**Description**: NPM HTTPS for Let's Encrypt

Нажать кнопку **Save**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/z64image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/z64image.png)

После этого нажимаем кнопку **Apply changes**

##### Покупка домена reg.ru

Для настройки доменных имен в npm доменное имя необходимо купить по этому поводу уже написана [подробная статья](https://habr.com/ru/articles/716002/)

После покупки доменного имени и указания его у ДНС провайдера потребуется время что бы запись появилась у ДНС резолверов, проверить это проще всего командой на любом клиенте сети с установленным линукс, я для этих целей создал отдельный тестовый [lxc контейнер](https://bookstack.redpunk.net/books/ispolzuemoe-po-i-instrukcii-po-ego-ustanovke/page/sozdanie-lxc-konteinera-proxmox "Создание LXC контейнера proxmox")

<div id="bkmrk-dig-%3C%D0%B2%D0%B0%D1%88-%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%3E"><div class="cm-editor ͼ1 ͼ2 ͼ4 ͼ1r"><div class="cm-scroller" tabindex="-1"><div aria-hidden="true" class="cm-gutters cm-gutters-before"><div class="cm-gutter cm-lineNumbers"><div class="cm-gutterElement"><span style="font-family: 'Lucida Console', 'DejaVu Sans Mono', 'Ubuntu Mono', Monaco, monospace;">dig &lt;ваш домен&gt;</span></div></div></div></div></div></div>В выводе команды должен отобразится внешний ip адрес, запись проводится в течении 1-24 часов.

##### Настройка сертификата

Так как мы планируем использовать большое количество поддоменов нам не подходит вариант с обычным запросом сертификата через **certbot, reg.ru** позволяет запрашивать **wildcard** сертификат на домен и все поддомены, поэтому мы будем настраивать сразу его.

На сайте **reg.ru** заходишь в личный кабинет, далее Настройки API, запрашиваешь ключ API, его необходимо записать.

В **NPM** нужно создать **wildcard-сертификат**, во вкладке **Certificates** нужно нажать на кнопку **Let's Encrypt via DNS**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/oqIimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/oqIimage.png)

В открывшемся окне необходимо заполнить поля  
**Domain Names**: тут указываешь &lt;твоедоменноеимя.ru&gt; и &lt;\*.твоедоменноеимя.ru&gt;

**DNS Provider**: reg.ru

**Credentials File Content**:  
dns\_username=&lt;твоя почта на reg.ru&gt;  
dns\_password=&lt;api колюч&gt;

**Propagation Seconds:** Лучше указать 600 так как сервера reg.ru могут работать не стабильно

После этого необходимо нажать кнопку **Save** и подождать 1-5 минут.

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/rn1image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/rn1image.png)

##### Настройка split dns

Так как мы не хотим что бы все наши домены были доступны из сети, и для оптимизации подключения к доменам, нам необходимо настроить **split dns** на нашем **opnsense.** Технически можно реализовать эту технологию на любом локальном **dns** сервере, но в opnsense уже установлен **unbound dns**, в котором есть необходимый нам функционал (ubound dns должен быть включен и настроен), для этого нам необходимо перейти во вкладку **Services**, далее **Unbound DNS**, далее **Overrides**, в открывшемся окне в разделе **Hosts** нажать на **+**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/Fs8image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/Fs8image.png)

В открывшемся окне необходимо заполнить поля

**Enabled**: Галочка

**Host**: \*

**Domain**: &lt;твой домен&gt;

**Type**: A (IPv4 address)

**IP address**: &lt;ip адрес lxc контейнера&gt;

**Description**: NPM

Далее нажать кнопку **Save** и **Apply**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/WG9image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/WG9image.png)

Следующим шагом нужно указать Query forwarding для нашего сертификата, что бы избежать проблем с сертификатами в локальной сети при переходе по нашим доменам.

Для этого необходимо перейти во вкладку **Query forwarding** нажать на **+** и в открывшемся окне заполнить поля

**Enabled**: Галочка

**Domain**: ocsp.int-x3.letsencrypt.org

**Server IP**: 1.1.1.1

Далее нажать **Save** и **Apply**

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/W7Uimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/W7Uimage.png)

Теперь необходимо перейти в панель **npm** и настроить там группу доступа которую мы будем указывать при создании доменов.

Для этого необходимо перейти во вкладку **Acces list** нажать на кнопку **Add Acces list** и в открывшемся окне заполнить форму

Во вкладке **Details** необходимо указать имя нашей группы  
Во вкладке **Rules** необходимо добавить подсети из которых у нас будет доступ к нашим доменам

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/HUZimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/HUZimage.png)

#### Создание и настройка поддомена

Для создания поддомена нам необходимо перейти во вкладку Proxy Hosts и нажать на кнопку Add Proxy Host, в открывшемся окне необходимо заполнить поля

**Domain Names**: Вводим необходимы домен или поддомен

**Scheme**: В зависимости от панели к которой хотим открыть доступ выбираем http или https

**Forward Hostname / IP**: ip нашего сервиса,

**Forward Port**: Порт нашего сервиса

**Access List**: в зависимости от того хотим ли что бы сервис работал только локально или был публичным выбираем созданную нами группу доступа или Publicly Accessible

**Cache Assets**: (Опционально) Включает кэширование статических ресурсов (CSS, JS, изображения) на прокси-сервере для ускорения загрузки страниц, снижая нагрузку на backend-сервер.   
​

**Block Common Exploits**: (Опционально) Активирует встроенные правила Nginx для защиты от распространённых веб-атак (XSS, SQL-инъекции, кликджекинг) через заголовки безопасности вроде X-Frame-Options и Content-Security-Policy.  
​

**Websockets Support**: (Опционально) Включает поддержку WebSocket-протокола (ws://, wss://), необходимую для real-time приложений вроде чатов, дашбордов или игр (например, Grafana, Homarr в homelab).

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/qo2image.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/qo2image.png)

Переходим во вкладку **SSL** в открывшемся окне необходимо заполнить поля

**SSL Certificate**: Указываем созданный нами раннее сертификат

**Force SSL**: (Опционально) Принудительно перенаправляет весь HTTP-трафик (порт 80) на HTTPS (порт 443) с помощью 301-редиректа, обеспечивая обязательное шифрование.  
​

**HSTS Enabled**: (Опционально) Включает HTTP Strict Transport Security — браузеры запоминают домен как HTTPS-only на заданный период (max-age), предотвращая MITM-атаки и downgrade до HTTP.  
​

**HTTP/2 Support**: (Опционально) Активирует протокол HTTP/2 для мультиплексирования запросов, сжатия заголовков и ускорения загрузки (требует SSL).  
​

**HSTS Sub-domains**: (Опционально) Расширяет HSTS-политику на все поддомены (includeSubDomains), заставляя браузеры применять HTTPS ко всем \*.domain.com.  
​

[![image.png](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/scaled-1680-/O8Qimage.png)](https://bookstack.redpunk.net/uploads/images/gallery/2025-12/O8Qimage.png)

После нажатия кнопки **Save** домен появится в списке и ресурс станет доступен по заданному домену

# Установка и настройка MTProto прокси для telegram на vps сервере через docker

##### Установка docker на сервер

```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
```

##### Создание каталога для конфигурационных файлов

```bash
mkdir -p proxy-config
```

##### Запуск docker контейнера

```bash
docker run -d --name mtproto-proxy \
  -p 8889:443 \
  --restart=always \
  -v proxy-config:/data \
  telegrammessenger/proxy:latest
```

Вместо 8889 можно указать любой не занятый порт

##### Формирование ссылки для подключения

```bash
docker logs mtproto-proxy
```

В логах будет указана ссылка на подключение к MTProto формата

tg://proxy?server=&lt;ip vps сервера&gt;&amp;port=443&amp;secret=&lt;секретный код&gt;

При отправке ссылки в telegram нужно заменить порт на тот что вы указали при запуске контейнера в моем случае это 8889