Статья

Home Assistant: SSL/https в Hass.io

Для кого предназначена эта статья?

Осознание необходимости настройки SSL и доступа по https у меня появилось после прочтения статьи Home Assistant, статья 9 (https, ssl). К сожалению, описанный в ней способ настройки не подходил для меня, поскольку я установил Hass.io, который ограничен в области действий по SSH. Пришлось мне искать иной способ настройки, и этим способом стал add-on в Hass.io - Let's Encrypt. Статья обобщает путь, который пришлось проделать мне для того, чтобы иметь возможность подключиться к Hass.io по https, и может оказаться полезной для таких же новичков, как и я.

Почему Let's Encrypt, а не DuckDNS? Ведь add-on DuckDNS предоставляет DDNS и, в то же время, имеет встроенную поддержку Let's Encrypt. Дело в том, что у меня на роутере уже имеется настроенный DDNS, через который я получаю доступ к домашней сети. Для тех же, у кого DDNS еще нет, DuckDNS будет оптимальным выбором. Инструкцию по его настройке можно посмотреть здесь.

Установка и настройка Let's Encrypt

Установка Let's Encrypt в Hass.io предельно проста. На боковой панели выберите Hass.io, перейдите на вкладку Add-on Store, найдите и установите add-on Let's Encrypt. Остается его настроить. Укажите в настройках ваш email и выделенный DDNS, сохраните настройки.

{ "email": "ваш_email", "domains": ["ваш_DDNS_адрес"], "certfile": "fullchain.pem", "keyfile": "privkey.pem" }

Порт оставьте 80. Также, для запроса сертификатов от CA Let's Encrypt необходимо настроить на роутере переадресацию входящего трафика по 80 порту на 80 порт вашего устройства с Hass.io.

После настройки add-on'а можете его запустить. Он запросит со своего сервера сертификаты, запишет их в папку /ssl и закончит свою работу.

Откройте в конфигураторе файл configuration.yaml и в разделе http добавьте приведенные ниже строки (указав в base_url ваш DDNS адрес).

http: base_url: https://ваш_DDNS_адрес:8123 ssl_certificate: /ssl/fullchain.pem ssl_key: /ssl/privkey.pem

Почти всё готово. Осталось сделать в настройках роутера переадресацию входящего трафика по 8123 порту на 8123 порт вашего устройства с Hass.io.

И еще одно маленькое дополнение. Сертификат необходимо будет получать заново каждые 30 дней. Для того, чтобы не пришлось делать этого вручную, необходимо добавить в конфигураторе несколько строк в файл automations.yaml. Благодаря этой автоматизации Let's Encrypt будет каждую полночь проверять, не истекли ли ваши сертификаты, и, при необходимости, будет запускать add-on, загружая свежие сертификаты (на роутере должна быть настроена переадресация 80 порта).

- id: letsencrypt-renewal alias: "Let's Encrypt Renewal" trigger: - platform: time at: '00:00:00' action: - service: hassio.addon_restart data: addon: core_letsencrypt

Всё готово. Проверьте конфигурацию и перезагружайтесь. После загрузки вы сможете подключиться к Hass.io по адресу https://ваш_DDNS_адрес:8123 (https://hassio.local:8123 в локальной сети). 

Вот только незадача - конфигуратор и node-red не открываются по https. Нужно это исправить, внеся изменения в настройки add-on'ов конфигуратора и node-red.

Для конфигуратора config имеет следующий вид:

{ "username": "логин", "password": "пароль", "ssl": true, "certfile": "fullchain.pem", "keyfile": "privkey.pem", "allowed_networks": [ "0.0.0.0/0" ], "banned_ips": [ "" ], "banlimit": 5, "ignore_pattern": [ "__pycache__" ], "dirsfirst": true, "enforce_basepath": false, "notify_service": "persistent_notification.create", }

Для node-red config имеет следующий вид:

{ "log_level": "error", "credential_secret": "password", "http_node": { "username": "логин", "password": "пароль" }, "http_static": { "username": "логин", "password": "пароль" }, "port": 1880, "ssl": true, "certfile": "fullchain.pem", "keyfile": "privkey.pem", "require_ssl": true, "system_packages": [], "npm_packages": [], "init_commands": [] }

В конфигураторе в файле configuration.yaml для конфигуратора и node-red необходимо указать новые url: https://ваш_DDNS_адрес:3218/ и https://ваш_DDNS_адрес:1880/ соответственно. И, конечно же, требуется настроить на роутере переадресацию входящего трафика с портов 3218 и 1880 на соответствующие порты вашего устройства с Hass.io.

После сохранения настроек и перезапуска Hass.io вы получите доступ к конфигуратору и node-red по https.


Поздравляем с первой публикацией )))) и ждём продолжения и удачи в конкурсе ;)

а там жеж вроде компонент сам передергивает сертификат и автоматизации писать не нужно, или нужно ?

Правильно я понимаю, что таким образом мы открываем HASS во внешку?

смог поставить только отключив apach2
будет ли обновляться если apach2 будет запущен?

Если у меня сейчас не настроен еще DDNS ни на роутере ни в HA, как мне получать доступ в HA из вне, прописывать DDNS только в HA или в роутере тоже?

Или достаточно

DDNS прописать на роутере и перенаправить порт?

так что получается, если я в локалке, то это один адрес, а если я во вне, то другой? Как же сделать чтоб отовсюду по одному адресу заходить? Ведь приложениям нужно прописывать четкий адрес для доступа к НА. Та и даже если с браузера просто входить с телефона, получается две ссылки надо делать, локальную и внешню.. Гемор. Как справиться?


Вернуться назад
Вернуться назад