Поиск по базе знаний

Настройка 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.

  1. Перейдите в веб-интерфейс Home Assistant. Откройте меню Настройки ➡️ Дополнения ➡️ Магазин дополнений.
  2. В строке поиска введите Nginx Proxy Manager и нажмите на карточку найденного аддона.
  3. Нажмите кнопку Установить. Процесс скачивания и компиляции может занять несколько минут.
  4. После завершения установки активируйте пункты «Запуск при загрузке» и «Включить сторожевой таймер». Нажмите Запустить.
  5. Нажмите кнопку Открыть веб-интерфейс (по умолчанию NPM работает на порту 81).
  6. Используйте стандартные учетные данные для первого входа: email admin@example.com и пароль changeme. Сразу после входа система потребует от вас сменить адрес электронной почты и установить надежный администраторский пароль.

WARNING

Никогда не оставляйте стандартный пароль changeme активным. Ваш прокси-сервер будет смотреть наружу, и взлом административной панели NPM даст злоумышленникам полный контроль над вашим сетевым трафиком.

Шаг 2. Настройка роутера (Проброс портов)

Чтобы внешние запросы попадали на ваш прокси-сервер, необходимо настроить перенаправление (forwarding) сетевых портов на вашем домашнем маршрутизаторе (роутере).

  1. Войдите в панель управления вашего домашнего роутера (обычно по адресу 192.168.1.1 или 192.168.0.1).
  2. Перейдите в раздел настройки локальной сети (LAN) и назначьте вашему серверу Home Assistant статический IP-адрес. Это гарантирует, что сервер не сменит свой адрес при перезагрузке роутера.
  3. Откройте раздел Проброс портов (Port Forwarding / NAT).
  4. Создайте два правила перенаправления:
    • Внешний порт 80 ➡️ Локальный IP-адрес Home Assistant ➡️ Локальный порт 80 (протокол TCP).
    • Внешний порт 443 ➡️ Локальный IP-адрес Home Assistant ➡️ Локальный порт 443 (протокол TCP).
  5. Примените и сохраните настройки роутера.

IMPORTANT

Порт 80 необходим Let’s Encrypt для прохождения проверки владения доменом (HTTP Challenge). Порт 443 используется для защищенного HTTPS-трафика. Убедитесь, что провайдер не блокирует эти порты на вашем тарифе (обычно это бывает при отсутствии услуги «белого» IP-адреса).

Шаг 3. Добавление прокси-хоста в NPM

Перейдем к связыванию вашего внешнего домена с локальным сервером Home Assistant.

  1. В панели управления Nginx Proxy Manager перейдите в раздел Hosts ➡️ Proxy Hosts и нажмите Add Proxy Host.
  2. В поле Domain Names введите ваше зарегистрированное доменное имя (например, myhome.example.com) и нажмите Enter.
  3. Выберите схему http (обратите внимание, именно HTTP, так как NPM будет общаться с HA по локальной сети без шифрования).
  4. В поле Forward Name/IP введите локальный IP-адрес вашего сервера Home Assistant.
  5. В поле Forward Port укажите порт по умолчанию — 8123.
  6. Критически важно: активируйте переключатель WebSockets Support. Home Assistant использует протокол WebSockets для обмена данными в реальном времени, без этой опции интерфейс работать не будет.
  7. Рекомендуется также включить опцию Block Common Exploits для базовой защиты от сетевых атак.

Шаг 4. Выпуск сертификата SSL

Не закрывая окно редактирования хоста, настроим шифрование.

  1. Перейдите на вкладку SSL в верхней части окна.
  2. В выпадающем списке SSL Certificate выберите пункт Request a new SSL Certificate.
  3. Включите опцию Force SSL для автоматического перенаправления всех незащищенных HTTP-запросов на безопасный HTTPS.
  4. Укажите ваш действующий email-адрес в поле Email Address for Let’s Encrypt (туда будут приходить уведомления о состоянии сертификата).
  5. Активируйте галочку I Agree to the Let’s Encrypt Terms of Service.
  6. Нажмите кнопку Save. NPM сделает запрос в Let’s Encrypt, пройдет проверку и сгенерирует SSL-сертификат. Это может занять до 60 секунд.

Шаг 5. Настройка Home Assistant (Конфигурация HTTP)

Современные версии Home Assistant блокируют любые запросы от обратных прокси-серверов из соображений безопасности. Чтобы сервер начал доверять трафику от NPM, нужно отредактировать конфигурационный файл.

  1. Откройте файл configuration.yaml вашего Home Assistant с помощью дополнения File Editor или через SSH.
  2. Добавьте в конец файла следующий блок настроек:
    http:
      use_x_forwarded_for: true
      trusted_proxies:
        - 172.30.33.0/24  # Подсеть внутренних докеров HA
        - 192.168.1.0/24  # Ваша локальная подсеть (замените на свою)
  3. Сохраните изменения в файле.
  4. Перейдите в Настройки ➡️ Система ➡️ Управление сервером ➡️ Проверить конфигурацию.
  5. Если ошибок не обнаружено, перезапустите Home Assistant.

Теперь ваш Умный Дом доступен по защищенному протоколу HTTPS! Это открывает неограниченные возможности для создания собственных голосовых навыков. Чтобы научиться разрабатывать уникальные сценарии и подключать их к голосовому помощнику, прочитайте нашу статью о создании кастомных навыков для Алисы, где подробно описана логика обработки команд и передача структуры устройств. Вы сможете настроить свои вебхуки, обрабатывать голосовые интенты и передавать статус любых подключенных гаджетов в удобном формате JSON.

Инструкция по настройке

1

Установка Nginx Proxy Manager

Установите аддон Nginx Proxy Manager из официального магазина дополнений Home Assistant или разверните его в Docker.

2

Проброс портов на роутере

Настройте перенаправление внешних портов 80 и 443 на локальный IP-адрес вашего сервера в панели управления роутером.

3

Создание прокси-хоста

Добавьте новый Proxy Host в панели NPM, указав доменное имя, локальный IP-адрес Home Assistant и порт 8123 с включенным WebSockets.

4

Получение Let's Encrypt SSL

Перейдите на вкладку SSL при редактировании хоста, запросите новый SSL-сертификат и примите условия использования Let's Encrypt.