Используемое ПО и инструкции по его установке

Одна из самых объемных книг в bookstack в ней подробно описаны процессы по установке используемого и не используемого ПО в инфраструктуре papercastle

Инструкции по установке и первичной настройке ПО на серверах

Актуальные инструкции по установке и первичной настройке ПО на серверах

Инструкции по установке и первичной настройке ПО на серверах

Подключение к ноде, контейнеру или виртуальной машине proxmox через ssh

Подключение через UI proxmox

Подключение к ноде

В интерфейсе proxmox в левом меню необходимо выбрать ноду(pve) далее перейти во вкладку Shell

image.png

Подключение к LXC контейнеру

В интерфейсе proxmox в левом меню необходимо выбрать ноду(pve) далее выбрать необходимый LXC контейнер, и перейти во вкладку Console

image.png

Подключение к виртуальной машине

В интерфейсе proxmox в левом меню необходимо выбрать ноду(pve) далее выбрать необходимую виртуальную машину, и перейти во вкладку Console

image.png

Подключение через 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

image.png

login as: вводим root нажимаем ENTER далее вводим пароль, при вводе символы не отображаются, после ввода пароля нажимаем ENTER

image.png

image.png

Подключение с помощью cmd windows

В консоли CMD нужно ввести команду ssh root@<ip сервера> и нажать ENTER 

image.png

Консоль запросит 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

image.png

Нажмите на кнопку Templates, в открывшемся меню выберите необходимый образ и нажмите на кнопку Download

image.png

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

После того как вы скачали необходимый Templates можете приступать к созданию LXC контейнера

Справа сверху в интерфейсе proxmox нажмите на Create CT

General

image.png

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

image.png

Storage: Выбор диска на котором находятся Template

Template: Образ который будет использоваться при установке контейнера

Disks

image.png

Storage: Дисковое пространство на котором будет храниться контейнер

Disk size (GiB): Объем выделяемый под контейнер

CPU

image.png

CPU: Количество выделяемых виртуальных ядер процессора

Memory

image.png

Memory (MiB): Объем выделяемой оперативной памяти

Swap (MiB): Объем выделяемой памяти на случай если Memory не хватит

Network

image.png

Name: название сетевого интерфейса которое будет отображаться в lxc 

MAC address: MAC адрес сетевого интерфейса

Bridge: Виртуальный интерфейс в самом proxmox

VLAN Tag: VLAN к которому будет привязан интерфейс

Firewall: внутренний межсетевой экран proxmox

IPv4: при выборе static необходимо указать статический ip и шлюз (как правило ip роутера), при выборе dhcp ip выдаст dhcp сервер

IPv6: не используется

DNS

image.png

DNS domain: dns сервер

DNS servers: dns сервер

Confirm

image.png

В этом разделе можно сверить все выбранные раннее настройки

Start after created: Запуск сразу после создания

После заполнения форм нужно нажать кнопку Finish

Инструкции по установке и первичной настройке ПО на серверах

Установка и настройка wireguard и WGDashboard в lxc контейнере

Для удаленного подключения и свободного доступа к сервисам в локальной сети, необходим стабильный vpn тунель, одним из предпочтительных вариантов в homelab является использование протокола wireguard отличительной особенностью которого является его легковестность и скорость настройки, что позволит нам использовать его в lxc контейнере.
Для удобства управления подключениями и последующей настройки подключения мы так же установим WGDashboard.

image.png

Установка 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)"

image.png

Выбираем default install

image.png

При запросе Would you like to add WGDashboard? <y/N> отвечаем y

Установка WGDashboard занимает довольно много времени

image.png

После успешной установки появится адрес по которому доступен web-интерфейс http://<ip контейнера>:10006

Настройка WGDashboard

При первом входе необходимо выполнить первичную настройку дашборда

image.png

Логин: admin

Пароль: admin

image.png

Необходимо создать новую УЗ

image.png

Сервис предлагает настроить двуфакторную аутентификацию это опционально поэтому для того что бы пропустить этот шаг необходимо нажать на I dont need MFA

image.png

После создания УЗ мы попадаем на главную страницу web-интерфейса, в настройках можно указать Русский язык, но для первичной настройки нам нужно создать клиента для подключения и выполнить первичную настройку.

image.png

Слева необходимо перейти во вкладку settings далее Peers Settings

(Опционально) В dns указать ip локального dns сервера, актуально при использовании ubound dns/split dns/adguard/pihole

В Peer Remote Endpoint указать внешний ip адрес (узнать можно на сайте 2ip.ru)

Далее необходимо вернуться на вкладку home, ТК скрипт установил wireguard в конфигурации уже указан wg0, нажимаем на него.

image.png

Справа сверху необходимо начать на кнопку включения, для того что бы конфигурация стала активной, далее необходимо нажать на кнопку peer для того что бы добавить клиента

image.png

В настройках клиента необходимо указать только name и после этого нажать на add

image.png

Внизу страницы появится клиент при нажатии на . . . появятся варианты для подключения

Открыть порт 51820 в OPNsense

После установки и настройки wireguard и настройки клиента на необходимом устройстве, необходимо открыть порт 51820 в opnsense 

Для начала необходимо настроить NAT, перенаправление внешнего порта к ip адресу внутри локальной сети, для этого необходимо перейти во вкладку firewall далее NAT далее port forward и нажать на +

image.png

Далее необходимо выполнить такие настройки

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 в открывшемся окне нажать +

image.png

Далее необходимо выполнить такие настройки

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. Идеальна для командной работы, технической документации, инструкций и баз знаний.

Ключевые возможности:

https://www.bookstackapp.com/

Установка 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

image.png

После завершения установки появится ip адрес для подключения по http в локальной сети для теста вводим в браузере

http://<ip из консоли>

Предустановленный пользователь:

Username: 
Password: 
Первичная настройка 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 контейнер с настройками

После подключения к 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

Добавление парсера

Установите публичные парсеры для поиска фильмов/сериалов.

Настройка TorrServer в lampa

Настройки → TorrServer → укажите <ip lxc контейнера>:8090

Инструкции по установке и первичной настройке ПО на серверах

Вывод температуры cpu и hdd в Summary Proxmox

Для контроля температур, в стандартном пакете proxmox нет необходимых утилит, ниже описан гайд для их установки.

В консоли ноды proxmox

apt update
apt install lm-sensors
sensors-detect

Во время установки скрипт будет задавать вопросы, ниже указаны ответы.

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

image.png

Инструкции по установке и первичной настройке ПО на серверах

Установка и настройка 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

image.png

После перехода в 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>.<ваш домен> будет использоваться для подключения к серверу.

После заполнения формы необходимо нажать кнопку Готово


image.png

Далее нам необходимо создать новую ресурсную запись на этот раз необходимо выбрать тип SRV

В форме необходимо заполнить следующие поля

Service: <_название сервиса>.<_tcp>.<созданный раннее subdomain>

Priority: 0

Weight: 0

Port: <Порт открытый в opnsense>

Target: <Созданный раннее subdomain записанный целиком>.

После заполнения формы необходимо нажать кнопку Готово

image.png

Через 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

Параметры:

В 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

image.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

После этого нажимаем кнопку 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

image.png

В открывшемся окне необходимо заполнить поля
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 минут.

image.png

Настройка split dns

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

image.png

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

Enabled: Галочка

Host: *

Domain: <твой домен>

Type: A (IPv4 address)

IP address: <ip адрес lxc контейнера>

Description: NPM

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

image.png

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

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

Enabled: Галочка

Domain: ocsp.int-x3.letsencrypt.org

Server IP: 1.1.1.1

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

image.png

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

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

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

image.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

Переходим во вкладку 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

После нажатия кнопки 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

В разработке

В разработке

В разработке

Установка и первичная настройка Proxmox

 ✓ Disabled 'pve-enterprise' repository
 ✓ Disabled 'ceph enterprise' repository
 ✓ Added 'pve-no-subscription' repository
 ✓ 'ceph' package repository (no-subscription) already exists (skipped)
 ✗ Selected no to Adding 'pvetest' repository
 ✓ Disabled subscription nag (Delete browser cache)
 ✗ Selected no to Disabling high availability
 ✓ Updated Proxmox VE
 ✓ Completed Post Install Routines
root@pve2:~# 

В разработке

Установка и первичная настройка OPNsense в виртуальной машине proxmox

В разработке

установка и настройка sig-box в lxc контейнере+настройка socs5+установка и настройка tun2socks в opnsense+настройка маршрутизации трафика в opnsense по спискам ip

В разработке

Создание недокластера из 2 нод proxmox

В разработке

Установка Truenas

В разработке

Установка nextcloud в docker Truenas

В разработке

Настройка бэкапов lxc контейнеров и ВМ proxmox, в zfs truenas

В разработке

Миграция homeassistant из virtualbox debian на proxmox

Не актуально

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

Не актуально

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

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

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

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

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

Процесс создания lxc контейнера описан тут

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

Далее необходимо подключиться к нему через ssh

Установка docker

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://<ip lxc контейнера>:9000

Не актуально

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

После установки docker portainer

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

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

image.png

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

image.png

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

image.png

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

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

Если все в порядке, после установки у вас появится доступ к панели по адресу 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

image.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

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

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

Для настройки доменных имен в npm доменное имя необходимо купить по этому поводу уже написана подробная статья

После покупки доменного имени и указания его у ДНС провайдера потребуется время что бы запись появилась у ДНС резолверов, проверить это проще всего командой на любом клиенте сети с установленным линукс, я для этих целей создал отдельный тестовый lxc контейнер

dig <ваш домен>

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

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

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

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

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

image.png

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

DNS Provider: reg.ru

Credentials File Content:
dns_username=<твоя почта на reg.ru>
dns_password=<api колюч>

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

image.png

Настройка split dns

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

image.png

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

Enabled: Галочка

Host: *

Domain: <твой домен>

Type: A (IPv4 address)

IP address: <ip адрес lxc контейнера>

Description: NPM

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

image.png

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

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

Enabled: Галочка

Domain: ocsp.int-x3.letsencrypt.org

Server IP: 1.1.1.1

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

image.png

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

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

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

image.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

Переходим во вкладку 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

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

Не актуально

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

Установка homepage

Для установки homepage в docker через portainer, нам необходимо перейти в веб-интерфейс portainer

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

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

image.png

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

image.png

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

image.png

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

image.png

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

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

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

Настройку homepage рекомендую выполнять через официальную документацию документацию homepage dashoboard

Не актуально

Установка 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

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

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

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

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

Если все в порядке, после установки у вас появится доступ к панели по адресу 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

image.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

После этого нажимаем кнопку 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

image.png

В открывшемся окне необходимо заполнить поля
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 минут.

image.png

Настройка split dns

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

image.png

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

Enabled: Галочка

Host: *

Domain: <твой домен>

Type: A (IPv4 address)

IP address: <ip адрес lxc контейнера>

Description: NPM

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

image.png

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

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

Enabled: Галочка

Domain: ocsp.int-x3.letsencrypt.org

Server IP: 1.1.1.1

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

image.png

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

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

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

image.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

Переходим во вкладку 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

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

Не актуально

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

Установка docker на сервер
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
Создание каталога для конфигурационных файлов
mkdir -p proxy-config
Запуск docker контейнера
docker run -d --name mtproto-proxy \
  -p 8889:443 \
  --restart=always \
  -v proxy-config:/data \
  telegrammessenger/proxy:latest

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

Формирование ссылки для подключения
docker logs mtproto-proxy

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

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

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

Pangolin

Pangolin — это селф-хост платформа для организации безопасного удаленного доступа к внутренним сервисам (по веб-протоколам, SSH, RDP и VNC) прямо через браузер. Она использует систему обратных туннелей, что позволяет публиковать локальные ресурсы в интернет без необходимости пробрасывать порты (Port Forwarding) на домашнем роутере.

Если по простому то Pangolin это ПО которое используется для доступа к ресурсам не напрямую, а через отдельную машину, в нашем случае VPS. Кратко, он работает как VPN то есть при обращении к нашему ресурсу, пользователь обращается сначала к VPS на которой установлен Pangolin, а далее уже через wireguard туннель обращается к ресурсу который мы хостим дома.

Для чего это нужно?

Первый вопрос который решает Pangolin, это вопрос безопасности, в крайнем случае злоумышленники получат доступ к VPS, а не к машине дома, даже если что то нахулиганят, мы просто восстановим Pangolin из бэкапа.

Второй вопрос, это возможность использования multi-WAN, динамический ip, статический, какой провайдер или оператор, нас больше не будет интересовать, благодаря Pangolin мы имеем возможность подключить балансировку к своему домашнему интернету и варианты подключения не ограничены.

Установка

Довольно подробно установка и первичная настройка описывается в ролике ProHomeLab ссылка для нас важно понимать, что если раннее мы использовали какой либо обратный прокси сервис, то отказываться от его использования не нужно, он все еще нужен для локального доступа к ресурсам, единственное изменение в логике заключается лишь в том что теперь публичные домены и сервисы будут работать через Pangolin

Инструкции по установке и первичной настройке ПО на других устройствах

Инструкции по установке и первичной настройке ПО на других устройствах

Инструкции по установке и первичной настройке ПО на других устройствах

Установка приложений на телевизор hisense с vidaa 5,6,7,8

Энтузиасты устали от встроенного магазина приложений в телевизорах hisense и реализовали свой, ниже описана инструкция по установке приложений из этого магазина

Доступ к магазину

1. Сменить DNS-сервер_1 на 195.58.50.236
Последовательно нажать: кнопку меню на пульту -> настройки -> сеть -> конфигурация сети -> настройки IP -> Вручную -> в поле DNS-сервер 1 прописать 195.58.50.236 , в поле DNS-сервер 2 оставить 0.0.0.0 -> Сохранить

2. Открыть на ТВ браузер и вбить в адресную строку vidaahub.com
При загрузке в браузере появится окно соглашения, нажимаем continue
Если  при открытии ссылки будет ошибка 202 как на фото ниже, нажмите ссылку на странице
3. В открывшемся магазине приложений переместите курсор на приложение Moovies ( в правом нижнем углу появятся цифры 5/60 )
4. Последовательно нажмите кнопки пульта дистанционного управления: 4124 Это разблокирует все доступные для установки приложения. В левом нижнем углу экрана появится сообщение об успешной разблокировке и Master Key из 6 цифр.
Запишите  или сфотографируйте этот Master Key на смартфон.

Он позволит вам получить доступ к альтернативному магазину приложений, даже если телевизор был перепрошит или сброшен до заводских настроек.  Достаточно будет просто набрать  Master Key после загрузки vidaahub.com в браузере.  Получить  Master Key в любое время можно  по зеленой кнопке на пульте ТВ или Get Log на странице.

Теперь ВСЕГДА, когда вы зайдете на vidaahub.com, откроется полноценный магазин приложений и можно добавить страницу в закладки  браузера ТВ.

5. Выбираем нужное приложение, жмем ОК для установки.

6. Перезагружаем ТВ (выкл и снова вкл), НО ЛУЧШЕ отключить ТВ из розетки на несколько секунд

 

Обратите внимание! Чтобы приложения появились на вашем ТВ, необходимо выполнить его перезагрузку ! После в лаунчере нажать на иконку "More Apps " и смотреть под чертой "больше приложений" в  самом начале(для vidaa 6) или конце списка приложений(на vidaa 5).

7. После установки всего необходимого обязательно верните DNS включив в настройках сети DHCP (меню -> настройки -> сеть -> конфигурация сети -> настройки IP -> DHCP -> сохранить)

Инструкции по установке и первичной настройке ПО на других устройствах

Установка WireGuard, Entware и KVAS на роутер Keenetic Giga

Entware - Терминал linux на роутере, нужен для запуска KVAS

KVAS - Штука которая решает проблему со статической маршрутизацией на роутере, по сути имба, сам по себе Keenetic умеет отправлять часть трафика через VPN, но главная проблема кроется в том КАК это настраивается, из коробки можно настраивать статическую маршрутизацию, но для этого необходимо узнать ВСЕ ip адреса доменов к которым ты хочешь подключаться и каждый ip загрузить отдельно через шакальное меню роутера. Пакет KVAS делает всю работу за тебя, в него можно загрузить список ДОМЕНОВ и при работе он сам будет крутить вертеть ip этих доменов, при этом тебе ничего делать не нужно будет, он сам обновляет списки маршрутизации и ситуации где у тебя что-то отвалилось и тебе нужно куда-то лезть в роутере, просто не будет.


Статья с гайдом для установки WireGuard клиента на роутер

WireGuard VPN


Статья с гайдом по настройке WireGuard клиента на роутере

Настройка WireGuard VPN между двумя роутерами Keenetic


Для работы KVAS необходимо установить Entware на роутер, это можно сделать на внутреннюю память и внешнюю, проблема в том что память может отвалиться, плюс в роутере ее довольно мало, поэтому рекомендуют использовать внешний накопитель, ниже статья с гайдом по настройке. Так же желательно установить ssh сервер в магазине keenetic, позволяет подключатся с помощью порта 222 сразу к Entware

Установка системы пакетов репозитория Entware на USB-накопитель


Установка самого KVAS, github довольно подробный, разработал его русский чел, поэтому гайды и в целом вся документация довольно понятная.

Установка пакета


Из этой статьи интересует ИСПОЛЬЗОВАНИЕ другой чел активно использует KVAS и ведет свой github, туда довольно часто подгружает списки актуальных заблокированных доменов.

Одной командой, после установки KVAS можно загрузить большой список доменов.

Он же снял довольно понятный ролик по маршрутизации и установке KVAS на роутер.