Инструкции по установке и первичной настройке ПО на серверах
Актуальные инструкции по установке и первичной настройке ПО на серверах
- Подключение к ноде, контейнеру или виртуальной машине proxmox через ssh
- Создание LXC контейнера proxmox
- Установка и настройка wireguard и WGDashboard в lxc контейнере
- Установка и первичная настройка BookStack в LXC на Proxmox
- Установка и настройка TorrServer в lxc контейнере и просмотр кино и сериалов через lampa
- Вывод температуры cpu и hdd в Summary Proxmox
- Установка и настройка vaultwarden в lxc контейнере
- Установка и настройка MCSManager для minecraft сервера в lxc контейнере+создание srv записи на reg.ru
- Установка и настройка homepage в lxc контейнер
- nekobox с управлением через gui как vpn клиент в lxc контейнере
- Установка и настройка Nginx proxy manager в docker, настройка split dns, настройка wildcard-сертификата
- Установка и настройка mDNS repeater в OPNsense для подключения умной лампочки matter к HomeAssistant
- Подключение zabbix agent 2 в lxc контейнер
Подключение к ноде, контейнеру или виртуальной машине proxmox через ssh
Подключение через UI proxmox
Подключение к ноде
В интерфейсе proxmox в левом меню необходимо выбрать ноду(pve) далее перейти во вкладку Shell
Подключение к LXC контейнеру
В интерфейсе proxmox в левом меню необходимо выбрать ноду(pve) далее выбрать необходимый LXC контейнер, и перейти во вкладку Console
Подключение к виртуальной машине
В интерфейсе proxmox в левом меню необходимо выбрать ноду(pve) далее выбрать необходимую виртуальную машину, и перейти во вкладку Console
Подключение через ssh клиент
В proxmox, lxc контейнерах и виртуальных машинах уже предустановлен пакет openssh-server но для подключения с root правами нам необходимо отредактировать файл sshd_config
Редактирование файла sshd_config
Для редактирования файла необходимо подключиться с помощью одного из способов выше
nano /etc/ssh/sshd_config
В редакторе необходимо добавить или раскомментировать строки
PermitRootLogin yes
PasswordAuthentication yes
Сохранить файл CTRL+X далее Y далее ENTER
Чтобы применить изменения без разрыва текущих SSH‑сессий, используй reload.
systemctl reload sshd
Теперь у нас есть возможность подключаться через ssh к консоли нашего сервера под пользователем root.
Подключение через клиент putty
В поле Host Name (or IP address) вводим ip сервера, в поле Port вводим 22, нажимаем Open
login as: вводим root нажимаем ENTER далее вводим пароль, при вводе символы не отображаются, после ввода пароля нажимаем ENTER
Подключение с помощью cmd windows
В консоли CMD нужно ввести команду ssh root@<ip сервера> и нажать ENTER
Консоль запросит Are you sure you want to continue connecting (yes/no/[fingerprint])? вводим yes и нажимаем ENTER, вводим пароль нажимаем ENTER
Создание LXC контейнера proxmox
LXC (Linux Containers) — это технология контейнеризации на уровне операционной системы Linux, позволяющая запускать несколько изолированных экземпляров ОС на одном хосте без эмуляции аппаратного обеспечения.
Основные характеристики
Использует пространства имён (namespaces) для изоляции процессов, сети, файловых систем и пользователей, а также cgroups для контроля ресурсов (CPU, память, I/O). Поддерживает полноценные системные контейнеры с init-системой, SSH и сервисами, похожие на лёгкие VM.
Преимущества в homelab
В Proxmox LXC экономит ресурсы по сравнению с VM, позволяет динамически менять CPU/RAM/диск без перезагрузки и подходит для VPN/сетевых сервисов.
Процесс скачивания Templates
Для создания lxc контейнера так же как и для создания виртуальной машины, необходим образ системы, в proxmox этот образ называется Templates, для его скачивания реализован весь необходимый функционал в самом гипервизоре.
Для того что бы скачать Templates выберите необходимую ноду, перейдите в раздел local (<название ноды>) и перейдите во вкладку CT Templates
Нажмите на кнопку Templates, в открывшемся меню выберите необходимый образ и нажмите на кнопку Download
Создание LXC контейнера
После того как вы скачали необходимый Templates можете приступать к созданию LXC контейнера
Справа сверху в интерфейсе proxmox нажмите на Create CT
General
Node: Выбор ноды (сервера) в кластере Proxmox, на котором разместится контейнер.
CT ID: Уникальный числовой идентификатор контейнера (100-999), используется для ссылок и команд.
Hostname: Имя хоста контейнера, отображаемое в системе и сети (алфавитно-цифровое).
Unprivileged container: Включение делает контейнер непривилегированным — процессы маппятся на непривилегированные UID/GID хоста для повышенной безопасности.
Nesting: Разрешает запуск вложенных контейнеров (LXC/Docker внутри LXC), полезно для сложных setup'ов.
Add to HA: Включение добавляет контейнер в High Availability кластер для автоматического перезапуска на другом узле при сбое.
Resource Pool: Привязка к пулу ресурсов — логической группе контейнеров/VM для удобного управления (требует предварительного создания).
Password / Confirm password: Установка root-пароля для консольного доступа к контейнеру.
SSH public key(s): Добавление публичных SSH-ключей для безпарольного входа под root или другими пользователями.
Template
Storage: Выбор диска на котором находятся Template
Template: Образ который будет использоваться при установке контейнера
Disks
Storage: Дисковое пространство на котором будет храниться контейнер
Disk size (GiB): Объем выделяемый под контейнер
CPU
CPU: Количество выделяемых виртуальных ядер процессора
Memory
Memory (MiB): Объем выделяемой оперативной памяти
Swap (MiB): Объем выделяемой памяти на случай если Memory не хватит
Network
Name: название сетевого интерфейса которое будет отображаться в lxc
MAC address: MAC адрес сетевого интерфейса
Bridge: Виртуальный интерфейс в самом proxmox
VLAN Tag: VLAN к которому будет привязан интерфейс
Firewall: внутренний межсетевой экран proxmox
IPv4: при выборе static необходимо указать статический ip и шлюз (как правило ip роутера), при выборе dhcp ip выдаст dhcp сервер
IPv6: не используется
DNS
DNS domain: dns сервер
DNS servers: dns сервер
Confirm
В этом разделе можно сверить все выбранные раннее настройки
Start after created: Запуск сразу после создания
После заполнения форм нужно нажать кнопку Finish
Установка и настройка wireguard и WGDashboard в lxc контейнере
Для удаленного подключения и свободного доступа к сервисам в локальной сети, необходим стабильный vpn тунель, одним из предпочтительных вариантов в homelab является использование протокола wireguard отличительной особенностью которого является его легковестность и скорость настройки, что позволит нам использовать его в lxc контейнере.
Для удобства управления подключениями и последующей настройки подключения мы так же установим WGDashboard.
Установка wireguard+WGDashboard
Для установки нам потребуется скрипт с сайта https://community-scripts.github.io/ProxmoxVE/scripts?id=wireguard
В консоли ноды необходимо ввести
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/wireguard.sh)"
Выбираем default install
При запросе Would you like to add WGDashboard? <y/N> отвечаем y
Установка WGDashboard занимает довольно много времени
После успешной установки появится адрес по которому доступен web-интерфейс http://<ip контейнера>:10006
Настройка WGDashboard
При первом входе необходимо выполнить первичную настройку дашборда
Логин: admin
Пароль: admin
Необходимо создать новую УЗ
Сервис предлагает настроить двуфакторную аутентификацию это опционально поэтому для того что бы пропустить этот шаг необходимо нажать на I dont need MFA
После создания УЗ мы попадаем на главную страницу web-интерфейса, в настройках можно указать Русский язык, но для первичной настройки нам нужно создать клиента для подключения и выполнить первичную настройку.
Слева необходимо перейти во вкладку settings далее Peers Settings
(Опционально) В dns указать ip локального dns сервера, актуально при использовании ubound dns/split dns/adguard/pihole
В Peer Remote Endpoint указать внешний ip адрес (узнать можно на сайте 2ip.ru)
Далее необходимо вернуться на вкладку home, ТК скрипт установил wireguard в конфигурации уже указан wg0, нажимаем на него.
Справа сверху необходимо начать на кнопку включения, для того что бы конфигурация стала активной, далее необходимо нажать на кнопку peer для того что бы добавить клиента
В настройках клиента необходимо указать только name и после этого нажать на add
Внизу страницы появится клиент при нажатии на . . . появятся варианты для подключения
Открыть порт 51820 в OPNsense
После установки и настройки wireguard и настройки клиента на необходимом устройстве, необходимо открыть порт 51820 в opnsense
Для начала необходимо настроить NAT, перенаправление внешнего порта к ip адресу внутри локальной сети, для этого необходимо перейти во вкладку firewall далее NAT далее port forward и нажать на +
Далее необходимо выполнить такие настройки
Interface: WAN
Protocol: UDP
Destination: WAN address
Destination port range: from 51820 to 51820
Redirect target IP: Single host or Network <ip lxc контейнера>
Redirect target port: 51820
Description: wireguard (опционально)
Далее нажать Save и Apply settings
Далее необходимо перейти во вкладку rules и перейти к интерфейсу wan в открывшемся окне нажать +
Далее необходимо выполнить такие настройки
Interface: WAN
Direction: in
Protocol: UDP
Source: any
Destination: Single host or Network <ip lxc контейнера>
Destination port range: from 51820 to 51820
Description: wireguard (опционально)
Далее нажать Save и Apply settings
Установка и первичная настройка BookStack в LXC на Proxmox
BookStack — простая open-source платформа для создания структурированной документации и вики.
Организует знания по принципу полки → книги → главы → страницы с WYSIWYG-редактором и поддержкой Markdown. Идеальна для командной работы, технической документации, инструкций и баз знаний.
Ключевые возможности:
-
Иерархическая структура контента
-
Поиск по всем уровням
-
Роли и права доступа
-
Экспорт в PDF/HTML
-
Версионность изменений
-
Вложения и изображения
Установка BookStack
BookStack предполагает использование в рамках docker контейнера, но так как у меня установлен гипервизор proxmox я имею возможность создания lxc контейнеров и запуска на них docker приложений c помощью node.js
Для установки нам необходимо попасть в консоль необходимой ноды с помощью ssh
Комьюнити proxmox довольно большое поэтому энтузиастами был сформирован довольно большой список скриптов для установки ПО, мне повезло и скрипт для BookStack был на сайте
https://community-scripts.github.io/ProxmoxVE/scripts?id=bookstack
После подключения к ноде необходимо ввести
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/bookstack.sh)"
В диалоговом окне выбираем Default Install нажимаем ENTER
После завершения установки появится ip адрес для подключения по http в локальной сети для теста вводим в браузере
http://<ip из консоли>
Предустановленный пользователь:
Первичная настройка BookStack
После установки нам необходимо подключиться к lxc контейнеру через ssh в консоли необходимо ввести
nano /opt/bookstack/.env
В открывшемся файле необходимо отредактировать или добавить строки
# Русский язык
APP_LANG=ru
# Отключаем автодетект языка для гостей (опционально)
APP_AUTO_LANG_PUBLIC=false
# Указываем URL приложения если сделали его в npm (опционально)
APP_URL=https://<твой домен>
После сохранения файла и перезагрузки контейнера, можно переходить на http://<ip контейнера> или https://<твой домен>
Установка и настройка TorrServer в lxc контейнере и просмотр кино и сериалов через lampa
TorrServer - сервис для онлайн просмотра торрент файлов, в отличии от Jellyfin, для просмотра, контент не нужно скачивать, а трансляция идет напрямую из torrent сети.
Установка TorrServer
Для установки необходимо создать lxc контейнер с настройками
- OS: Debian 12
-
CPU: 2 cores
-
RAM: 2048 MiB
-
Disk: 16-32 ГБ
-
Swap: 512 MiB
После подключения к lxc контейнеру через ssh необходимо перейти в GitHub разработчика TorrServer и уточнить ссылку на актуальную версию приложения, после этого в консоли lxc контейнера ввести:
cd /opt
wget https://github.com/YouROK/TorrServer/releases/download/MatriX.137/TorrServer-linux-amd64
chmod +x TorrServer-linux-amd64
mv TorrServer-linux-amd64 torrserver # опционально, для удобства
./torrserver -port 8090 &
Проверьте http://<ip lxc контейнера>:8090 есть веб-интерфейс доступен в консоли lxc контейнера создаем автозагрузку:
cat > /etc/systemd/system/torrserver.service << EOF
[Unit]
Description=TorrServer
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt
ExecStart=/opt/torrserver -port 8090
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now torrserver
Установка и настройка TorrServer в lampa
Добавление парсера
Установите публичные парсеры для поиска фильмов/сериалов.
-
Настройки → Расширения → Добавить: https://lampame.github.io/main/pubtorr.js
-
Настройки → Парсеры → Выберите "Каталог парсеров" (Jacred.xyz или аналог — зелёный статус).
Настройка TorrServer в lampa
Настройки → TorrServer → укажите <ip lxc контейнера>:8090
Вывод температуры cpu и hdd в Summary Proxmox
Для контроля температур, в стандартном пакете proxmox нет необходимых утилит, ниже описан гайд для их установки.
В консоли ноды proxmox
apt update
apt install lm-sensors
sensors-detect
Во время установки скрипт будет задавать вопросы, ниже указаны ответы.
-
Display temperatures for all cores: A
-
Display temperatures in Celsius: C
-
Enable UPS information: N
-
Enable system information: N
wget https://raw.githubusercontent.com/Meliox/PVE-mods/main/pve-mod-gui-sensors.sh
bash pve-mod-gui-sensors.sh install
systemctl restart pveproxy pveproxy-ssl
Установка и настройка vaultwarden в lxc контейнере
Vaultwarden — это легковесная реализация сервера Bitwarden, написанная на Rust.
Ключевые особенности:
Совместим с официальными клиентами Bitwarden (браузер, мобильные apps, desktop)
Self-hosted — ставится на свой сервер/LXC/Proxmox
Маленький — ~10MB RAM против 1GB+ у официального Bitwarden
Открытый код (unofficial Bitwarden server)
Зачем нужен:
Вместо облачного Bitwarden ($10/мес) ставишь свой менеджер паролей на домашний сервер, используешь те же приложения и расширения браузера.
Установка
Для установки vaultwarden понадобится скрипт с сайта https://community-scripts.github.io/ProxmoxVE/scripts?id=vaultwarden
А так же настроенный VPN на роутере, для того что бы включить VPN соединение на всей сети, это необходимо так как некоторые пакеты в скрипте не доступны из России
В консоли ноды необходимо ввести
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/vaultwarden.sh)"
Во время установки могут возникнуть ошибки по конфигурации ipv4, скрипт не пройдет проверки, сообщение о ошибках можем игнорировать, на все вопросы отвечает Y
Установка может занять довольно много времени
После установки в ноде появится контейнер, к нему необходимо подключиться.
Настройка
Далее необходимо сгенерировать admin token, он понадобится при настройке файла конфигурации, сделать это можно в тестовом или текущем контейнере командой
openssl rand -base64 48
Вывод необходимо записать
Далее необходимо отредактировать файл конфигурации
/opt/vaultwarden/.env
Файл конфигурации необходимо привести к виду
ADMIN_TOKEN='<admin token который мы сгенерировали>'
ROCKET_ADDRESS=0.0.0.0
DATA_FOLDER=/opt/vaultwarden/data
DATABASE_MAX_CONNS=10
WEB_VAULT_FOLDER=/opt/vaultwarden/web-vault
WEB_VAULT_ENABLED=true
После чего перезагрузить lxc контейнер.
Панель vaultwarden доступна только через https c ssl сертификатом, поэтому нам необходимо выдать для <ip lxc контейнера>:8000 домен через любой обратный прокси.
Установка и настройка MCSManager для minecraft сервера в lxc контейнере+создание srv записи на reg.ru
Создание LXC контейнера
Инструкция по созданию lxc контейнера
OC: debian 12
CPU: 2-4 cores
RAM: 4096MB+
Root Disk: 20GB
Установка Java 21
apt update && apt install wget curl -y
cd /opt
wget https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.6+7/OpenJDK21U-jre_x64_linux_hotspot_21.0.6_7.tar.gz
tar -xzf OpenJDK21U-jre_x64_linux_hotspot_21.0.6_7.tar.gz
mv jdk-21.0.6+7-jre java-21
# Глобальная настройка
echo 'export JAVA_HOME=/opt/java-21' >> /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
update-alternatives --install /usr/bin/java java /opt/java-21/bin/java 1
java --version # OpenJDK 21.0.6
Установка MCSManager WebUI
apt install curl -y
cd /opt
curl -s https://api.github.com/repos/MCSManager/MCSManager/releases/latest | grep browser_download_url | grep linux_release | cut -d '"' -f 4 | wget -i -
tar -xzf mcsmanager_linux_release.tar.gz
cd mcsmanager
# Node.js для Web
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install nodejs -y
# Запуск
nohup ./start-web.sh > web.log 2>&1 &
nohup ./start-daemon.sh > daemon.log 2>&1 &
Создание systemctl для web-интерфейса
cat > /etc/systemd/system/mcsm-web.service << 'EOF'
[Unit]
Description=MCSManager Web
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/mcsmanager/web
ExecStart=/usr/bin/node app.js
Restart=always
User=root
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
[Install]
WantedBy=multi-user.target
EOF
Создание systemctl для daemon
cat > /etc/systemd/system/mcsm-daemon.service << 'EOF'
[Unit]
Description=MCSManager Daemon
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/mcsmanager/daemon
ExecStart=/usr/bin/node app.js
Restart=always
User=root
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
[Install]
WantedBy=multi-user.target
EOF
Запуск и активация
systemctl daemon-reload
systemctl enable mcsm-web.service mcsm-daemon.service
systemctl start mcsm-web.service mcsm-daemon.service
Доступ: http://<ip lxc контейнера>:23333
После перехода в web-интерфейс необходимо выбрать язык и нажать кнопку Далее и пройти процедуру создания УЗ
Открытие порта для доступа к серверу в opnsense
Для того что бы у клиентов была возможность подключаться к нашему серверу необходимо открыть порт для безопасности мы будем открывать не стандартный порт 25565, а другой 24848(Можно выбрать любой), локально порт останется тем же.
В OPNsense: Firewall → NAT → Port Forward → Add
Interface: WAN
Protocol: TCP/UDP
Destination: WAN address
Destination port range: 24848 (From/To)
Redirect target IP: <IP lxc контейнера>
Redirect target port: 25565
Description: Minecraft 24848
Save → Apply Changes
Rules в Firewall создастся автоматически
Cоздание srv записи на reg.ru
Для комфортного подключения к игровому серверу, мы можем использовать домен, для этого необходимо создать srv запись у dns регистратора, в моем случае это reg.ru
Для этого необходимо на сайте reg,ru перейти в настойки далее домены, выбрать ваш домен и перейти в DNS-серверы и управление зоной, далее добавить новую ресурсную запись, тип А
В subdomain указать то что будет указано перед вашим основным доменом <subdomain>.<ваш домен> будет использоваться для подключения к серверу.
После заполнения формы необходимо нажать кнопку Готово
Далее нам необходимо создать новую ресурсную запись на этот раз необходимо выбрать тип SRV
В форме необходимо заполнить следующие поля
Service: <_название сервиса>.<_tcp>.<созданный раннее subdomain>
Priority: 0
Weight: 0
Port: <Порт открытый в opnsense>
Target: <Созданный раннее subdomain записанный целиком>.
После заполнения формы необходимо нажать кнопку Готово
Через 15-30 минут DNS записи обновятся и появится возможность подключится к серверу через домен
Установка и настройка homepage в lxc контейнер
Установка
Для установки homepage в lxc контейнер, нам понадобится скрипт с сайта https://community-scripts.github.io/ProxmoxVE/scripts?id=homepage
В консоли ноды необходимо ввести команду
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/homepage.sh)"
Если все в порядке, после установки у вас появится доступ к панели по адресу http://<ip lxc контейнера с portain>:3000
Настройка
Рекомендую настроить подключение через ssh так как для настройки понадобится редактировать большое количество файлов и загружать материалы через sftp
После подключения необходимо отредактировать файл конфигурации
В консоли lxc контейнера
nano /opt/homepage/.env
Файл необходимо привести к виду
HOMEPAGE_ALLOWED_HOSTS=localhost:3000,<ip lxc контейнера>:3000,<поддомен если используете обратный прокси>
Отличительной особенностью от версии с докером является то что все медиа файлы располагаются в каталоге
/opt/homepage/public/
Дальнейшую настройку homepage рекомендую выполнять через официальную документацию документацию homepage dashoboard
nekobox с управлением через gui как vpn клиент в lxc контейнере
LXC‑клиент с GUI, noVNC и Nekobox
1. Создание контейнера в Proxmox
Параметры:
- Template: Debian 12 или Ubuntu Server 22.04
- Privileged: рекомендуется Yes
- CPU/RAM: 1–2 vCPU, 1–2 ГБ RAM
- Disk: 8–16 ГБ
- Network:
- Bridge: vmbr0
- IPv4: статический, например 192.168.51.41/24
- Gateway: IP OPNsense
В Options включи:
Nesting = 1
После создания запусти контейнер и войди в него (через консоль Proxmox или SSH).
2. Базовая настройка системы
apt update && apt upgrade -y
apt install -y sudo mc curl wget ca-certificates
3. Установка GUI и VNC
apt install -y xfce4 xfce4-goodies x11vnc xvfb fluxbox git websockify
Fluxbox — лёгкий оконный менеджер, подходит для этого сценария.
4. Установка noVNC
git clone https://github.com/novnc/noVNC.git /opt/novnc
cd /opt/novnc
mv vnc.html index.html
5. Установка Nekobox (GUI‑клиент)
Создай каталог для Nekobox и скачай актуальный релиз (AppImage или бинарь для Linux amd64) с GitHub репозитория Nekobox. В примере используется файл Nekobox.AppImage, подмени имя на реальное из релиза.
mkdir -p /opt/nekobox
cd /opt/nekobox
wget https://example.com/path/to/NekoBox.AppImage -O nekobox
chmod +x nekobox
Проверь ручной запуск (после старта Xvfb):
export DISPLAY=:1
cd /opt/nekobox
./nekobox &
6. Скрипт автозапуска GUI + VNC + noVNC + Nekobox
Создай файл /root/start.sh (или отредактируй, если уже существует):
nano /root/start.sh
Вставь содержимое:
#!/bin/bash
# Виртуальный X-сервер
Xvfb :1 -screen 0 1920x1080x24 &
sleep 2
export DISPLAY=:1
# Оконный менеджер
fluxbox &
# VNC сервер
x11vnc -display :1 -nopw -forever -bg -shared
sleep 2
# noVNC на 80 порту
websockify -D --web /opt/novnc 80 localhost:5900
# Автозапуск Nekobox
cd /opt/nekobox
./nekobox &
# Поддержание процесса активным
while true; do
sleep 3600
done
wait
Сделай файл исполняемым:
chmod +x /root/start.sh
Добавь автозапуск через cron:
crontab -e
Добавь строку:
@reboot /root/start.sh
Перезапусти контейнер:
reboot
7. Доступ через браузер и работа с Nekobox
После перезапуска открой в браузере:
http://IP_LXC/
Подключись к noVNC, увидишь рабочий стол XFCE/Fluxbox, на котором автоматически запустится Nekobox. Через Nekobox настрой подписку, прокси и маршрутизацию по своему сценарию.
Установка и настройка Nginx proxy manager в docker, настройка split dns, настройка wildcard-сертификата
Nginx Proxy Manager (NPM) — это удобный инструмент с веб-интерфейсом для управления обратным прокси на базе Nginx, который упрощает маршрутизацию трафика к сервисам в Docker, LXC или VM без редактирования конфигов вручную.
Основные функции
Поддерживает проксирование по доменам/поддоменам, автоматическое получение SSL-сертификатов Let's Encrypt, HTTP-аутентификацию, списки доступа (ACL) и блокировку IP. Позволяет настраивать перенаправления, кастомные страницы ошибок и потоки TCP/UDP через Streams.
После покупки домена и регистрации его у dns провайдеров у нас появляется возможность реализовать обратный прокси трафика по доменному имени, это позволит нам убрать отображение ip адресов из нашей homelab и реализовать доступ из интернета к веб панелям необходимых нам сервисов.
Установка Nginx Proxy Manager
Создание lxc контейнера
Для установки NPM в docker, нам понадобится создать lxc контейнер
2 vCPU, 2 ГБ RAM, 20+ ГБ диска.
ОС: Debian 12/13 или Ubuntu 22.04 LTS.
Установка Docker и compose
Подключаемся к созданному контейнеру через ssh
Ставим зависимости
apt update
apt install -y ca-certificates curl gnupg lsb-release
Добавляем официальный репозиторий Docker
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg \
-o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(. /etc/os-release; echo "$VERSION_CODENAME") stable" \
> /etc/apt/sources.list.d/docker.list
apt update
Устанавливаем Docker + compose‑plugin
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
Проверка
docker version
docker compose version
Готовим каталог и docker‑compose.yml
Создаём каталог под NPM
mkdir -p /opt/npm/data
mkdir -p /opt/npm/letsencrypt
Создаём docker‑compose.yml
cat > /opt/npm/docker-compose.yml << 'EOF'
version: "3.8"
services:
app:
image: docker.io/jc21/nginx-proxy-manager:latest
container_name: nginxproxymanager
restart: unless-stopped
ports:
- "80:80"
- "81:81"
- "443:443"
volumes:
- /opt/npm/data:/data
- /opt/npm/letsencrypt:/etc/letsencrypt
environment:
TZ: "Asia/Novosibirsk"
EOF
restart: unless-stopped гарантирует авто‑подъём после любого ребута, пока жив Docker.
Все данные (конфиги, база, серты) лежат в /opt/npm, независимы от жизни контейнера.
Старт NPM
Запуск
cd /opt/npm
docker compose up -d
Проверка:
docker ps
Должен быть контейнер nginxproxymanager со статусом Up.
Первый вход
В браузере: http://<ip lxc контейнера>:81
Стандартный логин:
Email: admin@example.com
Password: changeme
Если все в порядке, после установки у вас появится доступ к панели по адресу http://<ip lxc контейнера с portain>: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
После этого нажимаем кнопку 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
После этого нажимаем кнопку Apply changes
Покупка домена reg.ru
Для настройки доменных имен в npm доменное имя необходимо купить по этому поводу уже написана подробная статья
После покупки доменного имени и указания его у ДНС провайдера потребуется время что бы запись появилась у ДНС резолверов, проверить это проще всего командой на любом клиенте сети с установленным линукс, я для этих целей создал отдельный тестовый lxc контейнер
В выводе команды должен отобразится внешний ip адрес, запись проводится в течении 1-24 часов.
Настройка сертификата
Так как мы планируем использовать большое количество поддоменов нам не подходит вариант с обычным запросом сертификата через certbot, reg.ru позволяет запрашивать wildcard сертификат на домен и все поддомены, поэтому мы будем настраивать сразу его.
На сайте reg.ru заходишь в личный кабинет, далее Настройки API, запрашиваешь ключ API, его необходимо записать.
В NPM нужно создать wildcard-сертификат, во вкладке Certificates нужно нажать на кнопку Let's Encrypt via DNS
В открывшемся окне необходимо заполнить поля
Domain Names: тут указываешь <твоедоменноеимя.ru> и <*.твоедоменноеимя.ru>
DNS Provider: reg.ru
Credentials File Content:
dns_username=<твоя почта на reg.ru>
dns_password=<api колюч>
Propagation Seconds: Лучше указать 600 так как сервера reg.ru могут работать не стабильно
После этого необходимо нажать кнопку Save и подождать 1-5 минут.
Настройка split dns
Так как мы не хотим что бы все наши домены были доступны из сети, и для оптимизации подключения к доменам, нам необходимо настроить split dns на нашем opnsense.
Технически можно реализовать эту технологию на любом локальном dns сервере, но в opnsense уже установлен unbound dns, в котором есть необходимый нам функционал (ubound dns должен быть включен и настроен), для этого нам необходимо перейти во вкладку Services, далее Unbound DNS, далее Overrides, в открывшемся окне в разделе Hosts нажать на +
В открывшемся окне необходимо заполнить поля
Enabled: Галочка
Host: *
Domain: <твой домен>
Type: A (IPv4 address)
IP address: <ip адрес lxc контейнера>
Description: NPM
Далее нажать кнопку Save и Apply
Следующим шагом нужно указать Query forwarding для нашего сертификата, что бы избежать проблем с сертификатами в локальной сети при переходе по нашим доменам.
Для этого необходимо перейти во вкладку Query forwarding нажать на + и в открывшемся окне заполнить поля
Enabled: Галочка
Domain: ocsp.int-x3.letsencrypt.org
Server IP: 1.1.1.1
Далее нажать Save и Apply
Теперь необходимо перейти в панель npm и настроить там группу доступа которую мы будем указывать при создании доменов.
Для этого необходимо перейти во вкладку Acces list нажать на кнопку Add Acces list и в открывшемся окне заполнить форму
Во вкладке Details необходимо указать имя нашей группы
Во вкладке Rules необходимо добавить подсети из которых у нас будет доступ к нашим доменам
Создание и настройка поддомена
Для создания поддомена нам необходимо перейти во вкладку 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).
Переходим во вкладку 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.
После нажатия кнопки Save домен появится в списке и ресурс станет доступен по заданному домену
Установка и настройка mDNS repeater в OPNsense для подключения умной лампочки matter к HomeAssistant
mDNS repeater — это сервис-посредник, который пересылает multicast-запросы mDNS (UDP порт 5353, адрес 224.0.0.251) между разными подсетями/VLAN. Matter (и HomeKit/AirPlay/ESPHOME) используют mDNS для обнаружения устройств (.local имена, типа lamp.local), но multicast не проходит через роутер — repeater "отражает" пакеты
Для нас он нужен для того что бы подключить лампочку работающую на matter от Яндекса, сложность заключается в том что как правило HomeAssistant и локальные устройства подключенные через wifi имеют разные подсети, и в случае с ipv4 проблема решается банальным правилом в межсетевом экране, но протокол matter использует ipv6, как раз для подобных случаев, был создан mDNS repeater.
Установка в OPNsense
System > Firmware > Plugins > os-mdns-repeater > Install.
Services > mDNS Repeater: Enable, Interfaces: <Подсеть с HA>,<LAN>.
Итог
После проведенных действий в OPNsense, при условии что у вас включен ipv4 в этих подсетях, интеграция matter должна заработать корректно.
Подключение zabbix agent 2 в lxc контейнер
Установка
Для debian 12
apt-get update && apt-get install -y zabbix-agent2
Для debian 13
grep -rl 'mirror.mariadb.org' /etc/apt/ | xargs -I {} mv {} {}.bak
apt-get update && apt-get install -y zabbix-agent2
Настройка
nano /etc/zabbix/zabbix_agent2.conf
Изменить
server=
закоментировать
serverActive=
изменить
hostname=
systemctl restart zabbix-agent2
systemctl enable zabbix-agent2
Проверить статус
systemctl status zabbix-agent2