Доступ к своему Home Assistant из сети интернет можно сделать разными способами, тут описывается один из них c помощью TailScale. Не зависимо как у Вас установлен Home Assistant эта инструкция для Вас.
Регистрируемся на сайте Tailscale
Заходим на сайт по адресу: https://taiscale.com
Нажимаем Get Started
Выберите один из способов регистрации, например через гугл, после успешной регистрации предложит выбрать цели использования, выбираем Personal use и нажимаем Next
Регистрация прошла успешно, предложит добавить устройства в сеть
мы будем добавлять устройства ниже
Установка на Homeassistant Core
В России сайт tailscale.com заблокирован и такой способ установки невозможен или Вы просто хотите установить в Docker то перейдите к разделу ниже Установка на Homeassistant Core в Docker
заходим в консоль по ssh и делаем установку:
curl -fsSL https://tailscale.com/install.sh | sh
После установки запускаем Tailscale
tailscale up
выйдет ссылка для авторизации и добавлении машины, копируем ссылку
открываем браузер и вставляем ссылку в браузер, у Вас попросит авторизоваться
входим например через гугл, предложит добавить устройство
нажимаем Connect и выйдет сообщение что устройство добавлено
Теперь заходим в администрирование tailscale и видим наше устройство
имя устройство взято из имени хоста нашего Home Assistnt, его можно изменить при желании нажав на три точки рядом с Share справа и в меню выбрать Edit machine name.
Tailscale при добавлении машины выдает авторизацию на определенный срок (вроде 3 месяца), через этот срок необходимо авторизовать устройство заново, мы отключим эти ограничения нажав на три точки и выбрав Disable key expry
перейдем в консоль и увидим что авторизация завершена
Если Вам достаточно доступа к своему HomeAssistant из сети Tailscale, то есть установив на смартфон приложение Tailscale и авторизовавшись через приложение Вы можете попасть на свой HomeAssistant, то дальнейшую инструкцию можно не читать так как этих шагов достаточно для доступа к Вашему Home Assistant из сети Tailscale, если Вам надо доступ из интернет (например для домочадцев сложно запускать ещё одно приложение), то дальнейшая инструкция Вам поможет открыть доступ через интернет.
Теперь нам надо сделать доступ из глобальной сети интернет, чтобы входить на Homeassistant без подключения к Tailscale со смартфона или другого устройства
Заходим в настройки DNS и делаем как показано на скриншотах
Теперь заходим в Access controls
и вставляем следующий код заменив e-mail на свой
"Groups": { "group:can-funnel": [ "myemail@gmail.com", ], }, "nodeAttrs": [ { "target": ["group:can-funnel"], "attr": ["funnel"], }, ],
Переходим в наши машины и нажимаем на IP адресе нашего устройства
копируем адрес во второй строке и переходим в консоль по ssh и выполняем команду:
tailscale cert СКОПИРОВАННЫЙ АДРЕС
после выполнения будет такое сообщение:
теперь нам надо включить Funnel, для этого в консоли выполняем команду:
tailscale funnel --bg 8123
в ответ должны получить:
Теперь нам надо разрешить доступ к HomeAssistant из прокси, иначе при попытке зайти по https адресу выдаст ошибку 400: Bad Request, заходим в папку HomeAssistant и в файл configuration.yaml добавляем
http: use_x_forwarded_for: true trusted_proxies: - 127.0.0.1
Если у Вас HomeAssistant установлен в Docker не в режиме host, то необходимо указать ещё и ip адрес докер сети в которой работает HomeAssistant, у меня он работает в сети 172.100.0.0/24, можно прописать как сеть так и айпи адрес 172.100.0.1
http: use_x_forwarded_for: true trusted_proxies: - 127.0.0.1 - 172.100.0.1
Перезагружаем HomeAssistant и может зайти по адресу указанному тут:
то есть в браузере адрес будет выглядеть так: https://ha.my-nna.ts.het без указания порта 8123 так как происходит перенаправление портов
У Вас он будет отличаться там где на рисунке закрыто красным
Установка HAOS или Supervised
Заходим в меню Настройки — Дополнения и нажимаем кнопку в нижнем правом углу Магазин дополнений находим там дополнение Tailscale
и нажимаем УСТАНОВИТЬ, после того как оно установилось нажимаем ЗАПУСТИТЬ
после этого нажимаем ВЭБ-ИНТЕРФЕЙС
Нажимаем кнопку Reauthenticate, попросит авторизоваться
Предложить присоединить устройство к Tailscale
Нажимаем кнопку Connect
Теперь заходим в администрирование tailscale и видим наше устройство
имя устройство взято из имени хоста нашего Home Assistnt, его можно изменить при желании нажав на три точки рядом с Share справа и в меню выбрать Edit machine name.
Tailscale при добавлении машины выдает авторизацию на определенный срок (вроде 3 месяца), через этот срок необходимо авторизовать устройство заново, мы отключим эти ограничения нажав на три точки и выбрав Disable key expry
Если Вам достаточно доступа к своему HomeAssistant из сети Tailscale, то есть установив на смартфон приложение Tailscale и авторизовавшись через приложение Вы можете попасть на свой HomeAssistant, то дальнейшую инструкцию можно не читать так как этих шагов достаточно для доступа к Вашему Home Assistant из сети Tailscale, если Вам надо доступ из интернет (например для домочадцев сложно запускать ещё одно приложение), то дальнейшая инструкция Вам поможет открыть доступ через интернет.
Теперь нам надо сделать доступ из глобальной сети интернет, чтобы входить на Homeassistant без подключения к Tailscale со смартфона или другого устройства
Заходим в настройки DNS и делаем как показано на скриншотах
Теперь заходим в Access controls
и вставляем следующий код заменив e-mail на свой
"Groups": { "group:can-funnel": [ "myemail@gmail.com", ], }, "nodeAttrs": [ { "target": ["group:can-funnel"], "attr": ["funnel"], }, ],
Переходим в HomeAssistant, открываем дополнение Tailscale и нажимаем вкладку Конфигурация и нажимаем в той последовательности как показано на рисунке
Далее ставим галочки и значения как на скриншоте
и нажимаем СОХРАНИТЬ, предложит перезапустить дополнение
Соглашаемся и нажимаем ПЕРЕЗАПУСТИТЬ
Теперь нам надо разрешить доступ к HomeAssistant из прокси, иначе при попытке зайти по https адресу выдаст ошибку 400: Bad Request, заходим в папку HomeAssistant и в файл configuration.yaml добавляем
http: use_x_forwarded_for: true trusted_proxies: - 127.0.0.1
Теперь можем зайти по адресу указанному тут:
то есть в браузере адрес будет выглядеть так: https://ha.my-nna.ts.het без указания порта 8123 так как происходит перенаправление портов
У Вас он будет отличаться там где на рисунке закрыто красным
Установка на Homeassistant Core в Docker
Есть несколько способов организации контейнера tailscale, в данном примере мы рассмотрим несколько вариантов. Мы рассмотрим разные настройки сети Docker, подробно про сети и организацию Docker контейнеров можно почитать тут
Сначала нам надо сделать доступ из глобальной сети интернет, чтобы входить на Homeassistant без подключения к Tailscale со смартфона или другого устройства
Заходим в настройки DNS и делаем как показано на скриншотах
Теперь заходим в Access controls
и вставляем следующий код заменив e-mail на свой
"Groups": { "group:can-funnel": [ "myemail@gmail.com", ], }, "nodeAttrs": [ { "target": ["group:can-funnel"], "attr": ["funnel"], }, ],
Мы организуем только доступ к Homeassistant из интернет по протоколу https, через сеть tailscale другие службы (Node-red, zigbee2mqtt, ssh и т.д.) доступны не будут и доступ к Homeassistant и к другим службам из сети Tailscale
Для настройки доступа только в HomeAssitant из интернет без доступа к другим службам надо выяснить в какой сети находится HomeAssistant и какой у него ip адрес, у меня установлен HomeAssistant по инструкции Быстрая установка системы умного дома HomeAssistant, и в файле docker-compose.yaml есть название сети (mylan) и ip адрес (172.100.0.3)
добавим ключ авторизации, для этого заходим в админку и делаем как показано на скриншоте
пишем имя ключа, если ключ будет использован на нескольких устройствах то ставим галочку Reusable и нажимаем Generate key
сгенерированный ключ надо скопировать поскольку больше доступа к просмотру ключа не будет
Создаем папку tailscale
mkdir tailscale
создаем файл docker-compose.yaml
nano docker-compose.yaml
вставляем туда следующее содержимое для доступа только к Homeassistant из интернет без доступа к службам из сети Tailscale:
services: tailscale-nginx: container_name: tailscale image: tailscale/tailscale:latest hostname: tailscale-nginx environment: - TS_AUTHKEY=tskey-auth-key - TS_STATE_DIR=/var/lib/tailscale - TS_USERSPACE=false - TS_SERVE_CONFIG=/ts-config.json - TS_HOSTNAME=mydocker volumes: - ./tailscale/state:/var/lib/tailscale - ./ts-config.json:/ts-config.json - /dev/net/tun:/dev/net/tun devices: - /dev/net/tun:/dev/net/tun cap_add: - net_admin - sys_module restart: unless-stopped networks: netlemp: ipv4_address: 172.100.0.30 nginx: container_name: ts_nginx image: nginx depends_on: - tailscale-nginx network_mode: service:tailscale-nginx networks: netlemp: external: name: mylan
вместо tskey-auth-key вставьте сгенерированный ключ
где mylan — имя сети в которой запущен контейнер HomeAssistant
ipv4_address: 172.100.0.30 — IP адрес контейнера Tailscale
— TS_HOSTNAME=mydocker — имя машины в Tailscale, можно заменить на другое удобное для Вас
для доступа только к Homeassistant из интернет без доступа к службам из сети Tailscale:
services: tailscale-nginx: container_name: tailscale image: tailscale/tailscale:latest hostname: tailscale-nginx environment: - TS_AUTHKEY=tskey-auth-key - TS_EXTRA_ARGS=--advertise-tags=tag:container - TS_STATE_DIR=/var/lib/tailscale - TS_USERSPACE=false - TS_SERVE_CONFIG=/ts-config.json - TS_HOSTNAME=mydocker volumes: - ./tailscale/state:/var/lib/tailscale - ./ts-config.json:/ts-config.json - /dev/net/tun:/dev/net/tun devices: - /dev/net/tun:/dev/net/tun cap_add: - net_admin - sys_module restart: unless-stopped network_mode: host nginx: container_name: ts_nginx image: nginx depends_on: - tailscale-nginx network_mode: service:tailscale-nginx
далее создаем файл: ts-config.json
nano ts-config.json
со следующим содержимым:
{ "TCP": { "443": { "HTTPS": true } }, "Web": { "${TS_CERT_DOMAIN}:443": { "Handlers": { "/": { "Proxy": "http://172.100.0.3:8123" } } } }, "AllowFunnel": { "${TS_CERT_DOMAIN}:443": true } }
Где «http://172.100.0.3:8123″ — адрес контейнера HomeAssistant если доступ только к Homeassistant, если доступ к HomeAssistant и другим службам то надо адрес указать 127.0.0.1
запускаем контейнер:
docker compose up -d
Теперь нам надо разрешить доступ к HomeAssistant из прокси, иначе при попытке зайти по https адресу выдаст ошибку 400: Bad Request, заходим в папку HomeAssistant и в файл configuration.yaml добавляем
http: use_x_forwarded_for: true trusted_proxies: - 127.0.0.1 - 172.100.0.1
если Вы сделали доступ не только к HomeAssistant но и к другим службам, то можно не писать 172.100.0.1
Теперь можем зайти по адресу указанному тут:
то есть в браузере адрес будет выглядеть так: https://ha.my-nna.ts.het без указания порта 8123 так как происходит перенаправление портов
У Вас он будет отличаться там где на рисунке закрыто красным. Доступ к другим службам по IP адресу сети Tailscale и порту