Tailscale делаем доступ для Home Assistant

Доступ к своему 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 и порту

 

Tailscale делаем доступ для Home Assistant

Навигация по записям