Onnan indulunk, hogy van egy otthoni szerverünk, rajta Debian és Docker. Home Assistantot futtatunk, amely LAN-on elérhető a http://homeserver:8123
URL-en. De hogyan tudnánk elérni távoli gépről, mobilról?
A probléma egyik lehetséges megoldása a Tailscale nevű, Wireguardon alapuló, szabad szoftveres ún. mesh VPN alkalmazása, amelyet a fejlesztő cég – személyes célra ingyenes – szolgáltatásának segítségével könnyedén beüzemelhetünk.
Először is bejelentkezünk a weboldalukon Google vagy GitHub által, nincs regisztráció. Majd a Machines
fülön az Add device / Linux server
gombra kattintunk, alul rányomunk a generálás gombra. Az auth-key
értékre lesz szükségünk.
Állítsuk le a futó HA Docker-konténerünket, majd bővítsük és módosítsuk a compose.yaml
konfigunkat az alábbiak szerint:
services:
tailscale:
image: ghcr.io/tailscale/tailscale:stable
hostname: ts-hass
environment:
- TS_AUTHKEY=tskey-auth-ezittkamukulcs
- TS_EXTRA_ARGS=--advertise-tags=tag:hass
- TS_STATE_DIR=/var/lib/tailscale
- TS_USERSPACE=false
volumes:
- ./tailscale:/var/lib/tailscale
devices:
- /dev/net/tun:/dev/net/tun
cap_add:
- net_admin
restart: unless-stopped
hass:
image: ghcr.io/home-assistant/home-assistant:stable
container_name: hass
depends_on:
- tailscale
volumes:
- ./config:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
devices:
- /dev/ttyACM0:/dev/ttyACM0
privileged: true
network_mode: service:tailscale
Indítás után látnunk kell a Tailscale adminban a Machines
fülön az új ts-hass
(lásd fenti hostname) elemet. Innentől megszűnt a http://homeserver:8123
URL, már csak a mesh VPN-en (tailnet) keresztül érhető el a HA webapp, de oda még nincs felvéve kliensünk. Vegyük fel a laptopunkat a Machines
fülön az Add device / Client device
gombra kattintva, majd az utasításokat követve; pillanatok alatt kész vagyunk (leszámítva azt, hogy futtatás előtt átnéztem a telepítő shell scriptet). Ezután a laptopunk böngészőjében működnie kell a http://ts-hass:8123
URL-nek.
Gond-e, hogy nem TLS-titkosított a HA webapp elérése az interneten át? Nem, mert maga a tailnet titkosított (E2EE), amelyen keresztül látjuk.
Mobil app
A Google Playből telepíthetjük a Tailscale Android-appját. (Úgy tűnik, hogy nem működik együtt beállított privát DNS-sel, ha van ilyen, akkor azt ki kell kapcsolnunk.) Átírjuk a HA mobil appjában az URL-t az újra, és készen is vagyunk.
Exit node
A fenti compose-megoldás kizárólag a HA elérését tette lehetővé. De megtehetjük azt is, hogy közvetlenül az otthoni szerverre telepítjük a Tailscale-t, és exit node-nak jelöljük. Így egyrészt a kliensek teljes hálózati forgalmát ide irányítjuk, másrészt a kliensek mindent elérnek a szerverről.
$ curl -fsSL https://tailscale.com/install.sh | sh
# tailscale up --auth-key=tskey-auth-ezittkamukulcs --advertise-exit-node --accept-dns=false