В прошлой статье я описал как настроить подключение к Home Assistant из любой точки, где есть интернет используя сервис Noip. Как и обещал, опишу еще один способ используя сервис duckdns, который в отличие от предыдущего способа не требует настройки Dynamic DNS в роутере.
В роутере должен быть настроены статический адрес для home assistant и проброс дня него 80 и 443 портов:
Регистрация на сайте www.duckdns.org:
Нажимаем вход через Google:
Входим в свой аккаунт google:
Сохраняем куда-то свой токен (это набор букв и цифр после слова token), он нам позже пригодится. Придумываем доменное имя, вписываем его между “http://” и “.duckdns.org” и нажимаем “add domain”:
Доменное имя *******.duckdns.org создано. Сохраняем его себе рядом с токеном:
Настройка Home Assistant
Из официального “Add-on store” устанавливаем аддон Duck DNS:
После установки переходим в меню “Configuration”:
Прописываем для генерации сертификатов:
accept_terms – true
“token:” и “domain:” – ранее сохраненные данные из DuckDNS
Настройка DuckDNS завершена. Никаких изменений в файле configuration.yaml делать не нужно, обслуживанием сертификатов будет заниматься NGINX.
Далее устанавливаем (но пока не запускаем) аддон “NGINX Home Assistant SSL proxy”:
В конфигурации “NGINX Home Assistant SSL proxy” прописываем доменное имя из DuckDNS:
Запускаем аддоны “Duck DNS” и “NGINX Home Assistant SSL proxy ”. Возможно придется подождать некоторое время и несколько раз данные аддоны перезапустить и перезагрузить Home Assistant чтоб установились сертификаты:
После успешной настройки можно подключаться к своему умному дому из любой точки мира используя доменное имя, полученное на сайте duckdns.org:
Update 17.07.2021:
После
обновления Home Assistant до версии v2021.7.0 при попытке соединиться с умным домом из интернета появилась
ошибка: "400: Bad Request"
Для ее исправления необходимо в файл configuration.yaml добавить следующее:
http: use_x_forwarded_for: true trusted_proxies: - XXX.XXX.XXX.XXX # Add the IP address of the proxy server
где XXX.XXX.XXX.XXX - это IP
адрес addon_core_nginx_proxy в докере. Узнать его можно с помощью portainer в разделе Networks → Compose_Default. В самом низу вы найдете IP-адрес Lets_Encrypt.
Если же у Вас, как и у меня portainer не установлен, адрес можно узнать используя
командную строку. Для этого я подключился при помощи putty
(также можно это сделать локально на сервере с home assistant) и
ввел следующие команды:
sudo docker network ls
Далее находим в списке имя компьютера (сервера) с home assistant (у меня это hassio) и добавляем его в команду docker network inspect <network_name>
У меня получилось так:
sudo docker network inspect hassio
После очередного обновления и перезагрузки пропал доступ из вне к Home Assistant, из локалки проблем с доступом небыло:
Спасибо тебе, добрый человек!
ОтветитьУдалитьЭто единственная подробная и рабочая инструкция.
Для ошибки `400: Bad request` также нужно добавить в configuration.yaml:
ОтветитьУдалитьhttp:
# ssl_certificate: /ssl/fullchain.pem
# ssl_key: /ssl/privkey.pem
use_x_forwarded_for: true
trusted_proxies:
- 172.30.33.0/24
ip_ban_enabled: true
login_attempts_threshold: 5
Reboot и все будет работать