Настройка Nginx Proxy Manager для работы внешнего доступа к HA
Интеграция Home Assistant с голосовым помощником Алисой через кастомные диалоги или официальные навыки требует наличия стабильного внешнего доступа к вашему серверу умного дома по протоколу HTTPS. Яндекс не сможет отправлять вебхуки и команды управления на локальный IP-адрес вида 192.168.1.100. Сервер должен быть доступен из глобальной сети по зарегистрированному доменному имени с доверенным SSL-сертификатом безопасности.
Nginx Proxy Manager (NPM) — это мощное, но простое в настройке решение с удобным графическим интерфейсом. Оно позволяет организовать безопасный обратный прокси-сервер (reverse proxy) и автоматически получать и продлевать бесплатные криптографические SSL-сертификаты от Let’s Encrypt. В этой статье мы подробно разберем весь процесс развертывания этой связки.
Шаг 1. Установка Nginx Proxy Manager
Самый простой способ развернуть NPM — использовать официальный магазин дополнений Home Assistant.
- Перейдите в веб-интерфейс Home Assistant. Откройте меню Настройки ➡️ Дополнения ➡️ Магазин дополнений.
- В строке поиска введите Nginx Proxy Manager и нажмите на карточку найденного аддона.
- Нажмите кнопку Установить. Процесс скачивания и компиляции может занять несколько минут.
- После завершения установки активируйте пункты «Запуск при загрузке» и «Включить сторожевой таймер». Нажмите Запустить.
- Нажмите кнопку Открыть веб-интерфейс (по умолчанию NPM работает на порту
81). - Используйте стандартные учетные данные для первого входа: email
admin@example.comи парольchangeme. Сразу после входа система потребует от вас сменить адрес электронной почты и установить надежный администраторский пароль.
WARNING
Никогда не оставляйте стандартный пароль changeme активным. Ваш прокси-сервер будет смотреть наружу, и взлом административной панели NPM даст злоумышленникам полный контроль над вашим сетевым трафиком.
Шаг 2. Настройка роутера (Проброс портов)
Чтобы внешние запросы попадали на ваш прокси-сервер, необходимо настроить перенаправление (forwarding) сетевых портов на вашем домашнем маршрутизаторе (роутере).
- Войдите в панель управления вашего домашнего роутера (обычно по адресу
192.168.1.1или192.168.0.1). - Перейдите в раздел настройки локальной сети (LAN) и назначьте вашему серверу Home Assistant статический IP-адрес. Это гарантирует, что сервер не сменит свой адрес при перезагрузке роутера.
- Откройте раздел Проброс портов (Port Forwarding / NAT).
- Создайте два правила перенаправления:
- Внешний порт 80 ➡️ Локальный IP-адрес Home Assistant ➡️ Локальный порт 80 (протокол TCP).
- Внешний порт 443 ➡️ Локальный IP-адрес Home Assistant ➡️ Локальный порт 443 (протокол TCP).
- Примените и сохраните настройки роутера.
IMPORTANT
Порт 80 необходим Let’s Encrypt для прохождения проверки владения доменом (HTTP Challenge). Порт 443 используется для защищенного HTTPS-трафика. Убедитесь, что провайдер не блокирует эти порты на вашем тарифе (обычно это бывает при отсутствии услуги «белого» IP-адреса).
Шаг 3. Добавление прокси-хоста в NPM
Перейдем к связыванию вашего внешнего домена с локальным сервером Home Assistant.
- В панели управления Nginx Proxy Manager перейдите в раздел Hosts ➡️ Proxy Hosts и нажмите Add Proxy Host.
- В поле Domain Names введите ваше зарегистрированное доменное имя (например,
myhome.example.com) и нажмите Enter. - Выберите схему http (обратите внимание, именно HTTP, так как NPM будет общаться с HA по локальной сети без шифрования).
- В поле Forward Name/IP введите локальный IP-адрес вашего сервера Home Assistant.
- В поле Forward Port укажите порт по умолчанию — 8123.
- Критически важно: активируйте переключатель WebSockets Support. Home Assistant использует протокол WebSockets для обмена данными в реальном времени, без этой опции интерфейс работать не будет.
- Рекомендуется также включить опцию Block Common Exploits для базовой защиты от сетевых атак.
Шаг 4. Выпуск сертификата SSL
Не закрывая окно редактирования хоста, настроим шифрование.
- Перейдите на вкладку SSL в верхней части окна.
- В выпадающем списке SSL Certificate выберите пункт Request a new SSL Certificate.
- Включите опцию Force SSL для автоматического перенаправления всех незащищенных HTTP-запросов на безопасный HTTPS.
- Укажите ваш действующий email-адрес в поле Email Address for Let’s Encrypt (туда будут приходить уведомления о состоянии сертификата).
- Активируйте галочку I Agree to the Let’s Encrypt Terms of Service.
- Нажмите кнопку Save. NPM сделает запрос в Let’s Encrypt, пройдет проверку и сгенерирует SSL-сертификат. Это может занять до
60секунд.
Шаг 5. Настройка Home Assistant (Конфигурация HTTP)
Современные версии Home Assistant блокируют любые запросы от обратных прокси-серверов из соображений безопасности. Чтобы сервер начал доверять трафику от NPM, нужно отредактировать конфигурационный файл.
- Откройте файл
configuration.yamlвашего Home Assistant с помощью дополнения File Editor или через SSH. - Добавьте в конец файла следующий блок настроек:
http: use_x_forwarded_for: true trusted_proxies: - 172.30.33.0/24 # Подсеть внутренних докеров HA - 192.168.1.0/24 # Ваша локальная подсеть (замените на свою) - Сохраните изменения в файле.
- Перейдите в Настройки ➡️ Система ➡️ Управление сервером ➡️ Проверить конфигурацию.
- Если ошибок не обнаружено, перезапустите Home Assistant.
Теперь ваш Умный Дом доступен по защищенному протоколу HTTPS! Это открывает неограниченные возможности для создания собственных голосовых навыков. Чтобы научиться разрабатывать уникальные сценарии и подключать их к голосовому помощнику, прочитайте нашу статью о создании кастомных навыков для Алисы, где подробно описана логика обработки команд и передача структуры устройств. Вы сможете настроить свои вебхуки, обрабатывать голосовые интенты и передавать статус любых подключенных гаджетов в удобном формате JSON.
Инструкция по настройке
Установка Nginx Proxy Manager
Установите аддон Nginx Proxy Manager из официального магазина дополнений Home Assistant или разверните его в Docker.
Проброс портов на роутере
Настройте перенаправление внешних портов 80 и 443 на локальный IP-адрес вашего сервера в панели управления роутером.
Создание прокси-хоста
Добавьте новый Proxy Host в панели NPM, указав доменное имя, локальный IP-адрес Home Assistant и порт 8123 с включенным WebSockets.
Получение Let's Encrypt SSL
Перейдите на вкладку SSL при редактировании хоста, запросите новый SSL-сертификат и примите условия использования Let's Encrypt.