diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 1d60185..21f3df6 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -27,12 +27,12 @@ "state": { "type": "markdown", "state": { - "file": "HomeLab/PVE - Description.md", + "file": "HomeLab/LXC - npm_keenetic_setup.md", "mode": "source", "source": false }, "icon": "lucide-file", - "title": "PVE - Description" + "title": "LXC - npm_keenetic_setup" } } ], @@ -205,8 +205,11 @@ }, "active": "b3558acf9e721e10", "lastOpenFiles": [ - "HomeLab/PVE - General - Description.md", + "HomeLab/LXC - Nginx Proxy Manager.md", + "HomeLab/LXC - npm_keenetic_setup.md", + "HomeLab/npm_keenetic_setup.md", "HomeLab/PVE - Description.md", + "HomeLab/PVE - General - Description.md", "HomeLab/OMV-Backups-Guide.md", "HomeLab/omv-qbittorrent-guide.md", "HomeLab/OMV - Guide-NFS-Share (PVE-PBS).md", @@ -216,7 +219,6 @@ "HomeLab/LXC- Gitea.md", "HomeLab/LXC - PBS Proxmox Backup Server.md", "HomeLab/LXC - HomePage.md", - "HomeLab/LXC - Nginx Proxy Manager.md", "HomeLab/ssh config.md", "HomeLab AI Analisys.md", "HomeLab/! Tasks - planned action.md", @@ -232,8 +234,6 @@ "SBC - Hardware/Pasted image 20260517222623.png", "SBC - Hardware/Radxa E25.md", "Network/Settings.md", - "SBC - Hardware/ssd1306-rpi5-guide.md", - "Hermes/hermes-desktop-connect-guide.md", "SBC - Hardware", "Hermes/oled_cpu_mon.py", "Hermes", diff --git a/HomeLab/LXC - Nginx Proxy Manager.md b/HomeLab/LXC - Nginx Proxy Manager.md index fd9e61a..ff40d3d 100644 --- a/HomeLab/LXC - Nginx Proxy Manager.md +++ b/HomeLab/LXC - Nginx Proxy Manager.md @@ -22,3 +22,5 @@ bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/Proxmo ### Settings + + diff --git a/HomeLab/LXC - npm_keenetic_setup.md b/HomeLab/LXC - npm_keenetic_setup.md new file mode 100644 index 0000000..e3fc1f7 --- /dev/null +++ b/HomeLab/LXC - npm_keenetic_setup.md @@ -0,0 +1,95 @@ +#npm #ssl #keenetic +# Настройка Nginx Proxy Manager (NPM) в связке с Keenetic + +Руководство по переносу маршрутизации трафика и управлению SSL-сертификатами Let's Encrypt с роутера Keenetic (при наличии белого IP) на специализированный реверс-прокси **Nginx Proxy Manager**, развернутый в LXC-контейнере. + +--- + +## Архитектурная схема + +``` +[Интернет] + ↓ (порты 80, 443) +[Роутер Keenetic] (Проброс портов / NAT) + ↓ +[LXC: Nginx Proxy Manager] (Терминация SSL, маршрутизация) + ├── → https://ha.domain.link → [LXC: Home Assistant] (порт 8123) + ├── → https://nas.domain.link → [TrueNAS / Synology] (порт 5001) + └── → https://proxmox.domain.link → [Proxmox VE] (порт 8006) +``` + +--- + +## Шаг 1. Подготовка роутера Keenetic + +Поскольку обработкой SSL и субдоменов теперь будет заниматься NPM, на роутере нужно отключить встроенное проксирование и настроить прямой проброс портов. + +1. **Отключение встроенного проксирования KeenDNS:** + * Перейдите в **Сетевые правила** → **KeenDNS**. + * Удалите (или отключите) все правила из секции **«Доступ к веб-ресурсам домашней сети»**, чтобы Keenetic не перехватывал субдомены 4-го порядка. +2. **Проброс портов (NAT):** + * Перейдите в **Сетевые правила** → **Переадресация**. + * Создайте два правила для вашего интерфейса «Провайдер» (основной интернет-канал): + * **HTTP:** Внешний порт `80` → IP-адрес вашего LXC NPM → Внутренний порт `80`. + * **HTTPS:** Внешний порт `443` → IP-адрес вашего LXC NPM → Внутренний порт `443`. + +--- + +## Шаг 2. Выпуск Wildcard-сертификата в NPM (DNS Challenge) + +Чтобы не открывать порт 80 для каждой проверки Let's Encrypt и автоматически защитить все субдомены вида `*.yourdomain.keenetic.link`, настроим проверку через DNS API. + +> 💡 **Примечание:** Так как Keenetic не всегда предоставляет полноценный API-доступ сторонним утилитам для доменов `*.keenetic.link`, для выпуска Wildcard-сертификата в NPM рекомендуется использовать связку со сторонним бесплатным DNS-провайдером (например, **Cloudflare**, перенеся туда управление зоной, либо используя Cloudflare-сертификат). +> Если вы остаетесь на чистом `keenetic.link`, используйте метод проверки **HTTP Challenge** (через порт 80). + +### Инструкция для выпуска общего Wildcard-сертификата (через DNS API Cloudflare/других): +1. Откройте веб-интерфейс NPM (обычно порт `81`). +2. Перейдите во вкладку **SSL Certificates** → **Add SSL Certificate** → **Let's Encrypt**. +3. Заполните поля: + * **Domain Names:** `yourdomain.keenetic.link` и затем на следующей строчке `*.yourdomain.keenetic.link`. + * Включите тумблер **Use a DNS Challenge**. + * В списке **DNS Provider** выберите вашего провайдера (например, Cloudflare). + * Вставьте ваш секретный API-токен в текстовое поле конфигурации ниже. +4. Согласитесь с условиями Let's Encrypt и нажмите **Save**. В течение 1–2 минут сертификат будет готов. + +--- + +## Шаг 3. Добавление прокси-хоста (на примере Home Assistant) + +1. В интерфейсе NPM перейдите во вкладку **Hosts** → **Proxy Hosts** → **Add Proxy Host**. +2. Во вкладке **Details** заполните параметры: + * **Domain Names:** `ha.yourdomain.keenetic.link` (замените `ha` на ваш субдомен 4-го порядка). + * **Scheme:** `http` *(большинство сервисов внутри локальной сети работают по HTTP)*. + * **Forward Name/IP:** Локальный IP-адрес вашего Home Assistant (например, `192.168.1.100`). + * **Forward Port:** Порт сервиса (для HA по умолчанию `8123`). + * Включите тумблеры: **Block Common Exploits** и **Websockets Support** *(критически важно для работы Home Assistant!)*. +3. Перейдите во вкладку **SSL**: + * В выпадающем списке **SSL Certificate** выберите выпущенный ранее Wildcard-сертификат. + * Включите тумблеры: **Force SSL** (для автоматического редиректа с HTTP на HTTPS) и **HTTP/2 Support**. +4. Нажмите **Save**. + +--- + +## Шаг 4. Настройка доверенного прокси в Home Assistant + +Home Assistant по умолчанию блокирует запросы от обратных прокси-серверов в целях безопасности. Без этого шага при попытке войти через веб-интерфейс вы получите ошибку **«400: Bad Request»**. + +1. Откройте конфигурационный файл Home Assistant (`configuration.yaml`). +2. Добавьте или отредактируйте следующий блок кода: + +```yaml +http: + use_x_forwarded_for: true + trusted_proxies: + - 192.168.1.50 # !!! ЗАМЕНИТЕ НА РЕАЛЬНЫЙ IP-АДРЕС ВАШЕГО LXC-КОНТЕЙНЕРА С NPM !!! +``` + +3. Сохраните файл и **перезапустите** Home Assistant через панель разработчика или перезагрузив контейнер HA. + +--- + +## Чек-лист проверки работоспособности +- [ ] Порты 80 и 443 проброшены на Keenetic в сторону IP NPM. +- [ ] При переходе по адресу `https://ha.yourdomain.keenetic.link` открывается окно авторизации Home Assistant. +- [ ] В адресной строке браузера горит значок «замочка» (сертификат валиден, выпущен Let's Encrypt). +- [ ] Мобильное приложение Home Assistant Companion успешно подключается снаружи по новому адресу. \ No newline at end of file