7.1 KiB
#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, на роутере нужно отключить встроенное проксирование и настроить прямой проброс портов.
- Отключение встроенного проксирования KeenDNS:
- Перейдите в Сетевые правила → KeenDNS.
- Удалите (или отключите) все правила из секции «Доступ к веб-ресурсам домашней сети», чтобы Keenetic не перехватывал субдомены 4-го порядка.
- Проброс портов (NAT):
- Перейдите в Сетевые правила → Переадресация.
- Создайте два правила для вашего интерфейса «Провайдер» (основной интернет-канал):
- HTTP: Внешний порт
80→ IP-адрес вашего LXC NPM → Внутренний порт80. - HTTPS: Внешний порт
443→ IP-адрес вашего LXC NPM → Внутренний порт443.
- HTTP: Внешний порт
Шаг 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/других):
- Откройте веб-интерфейс NPM (обычно порт
81). - Перейдите во вкладку SSL Certificates → Add SSL Certificate → Let's Encrypt.
- Заполните поля:
- Domain Names:
yourdomain.keenetic.linkи затем на следующей строчке*.yourdomain.keenetic.link. - Включите тумблер Use a DNS Challenge.
- В списке DNS Provider выберите вашего провайдера (например, Cloudflare).
- Вставьте ваш секретный API-токен в текстовое поле конфигурации ниже.
- Domain Names:
- Согласитесь с условиями Let's Encrypt и нажмите Save. В течение 1–2 минут сертификат будет готов.
Шаг 3. Добавление прокси-хоста (на примере Home Assistant)
- В интерфейсе NPM перейдите во вкладку Hosts → Proxy Hosts → Add Proxy Host.
- Во вкладке 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!).
- Domain Names:
- Перейдите во вкладку SSL:
- В выпадающем списке SSL Certificate выберите выпущенный ранее Wildcard-сертификат.
- Включите тумблеры: Force SSL (для автоматического редиректа с HTTP на HTTPS) и HTTP/2 Support.
- Нажмите Save.
Шаг 4. Настройка доверенного прокси в Home Assistant
Home Assistant по умолчанию блокирует запросы от обратных прокси-серверов в целях безопасности. Без этого шага при попытке войти через веб-интерфейс вы получите ошибку «400: Bad Request».
- Откройте конфигурационный файл Home Assistant (
configuration.yaml). - Добавьте или отредактируйте следующий блок кода:
http:
use_x_forwarded_for: true
trusted_proxies:
- 192.168.1.50 # !!! ЗАМЕНИТЕ НА РЕАЛЬНЫЙ IP-АДРЕС ВАШЕГО LXC-КОНТЕЙНЕРА С NPM !!!
- Сохраните файл и перезапустите Home Assistant через панель разработчика или перезагрузив контейнер HA.
Чек-лист проверки работоспособности
- Порты 80 и 443 проброшены на Keenetic в сторону IP NPM.
- При переходе по адресу
https://ha.yourdomain.keenetic.linkоткрывается окно авторизации Home Assistant. - В адресной строке браузера горит значок «замочка» (сертификат валиден, выпущен Let's Encrypt).
- Мобильное приложение Home Assistant Companion успешно подключается снаружи по новому адресу.