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