Je wilt in de trein je Home Assistant-dashboard openen. Je router zegt nee: de provider zet je achter carrier-grade NAT, of port forwarding kan wel, maar je hangt liever niet je hele thuisnetwerk aan internet om een lamp aan te doen. Een kleine VPS lost allebei op. Je huis maakt via WireGuard een uitgaande verbinding ernaartoe, en de VPS is het enige publieke gezicht: met een echt domein, een echt certificaat en niets thuis dat naar de buitenwereld luistert.
Hoe de opzet werkt
phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
▲
home box dials out on UDP 51820
Op de VPS draaien twee dingen: een WireGuard-server en Caddy als reverse proxy. Thuis houdt een WireGuard-client (op de Home Assistant-host, een Raspberry Pi of je router) een tunnel open. Als je https://ha.example.com bezoekt, stuurt Caddy het verzoek door de tunnel naar 10.8.0.2:8123.
Wat je nodig hebt
- Een plan met dedicated IP. De VPS moet inkomend 443 en UDP 51820 accepteren. Nano-IP voor $8 per maand is meer dan genoeg: hij verplaatst een paar kilobyte dashboardverkeer zonder moeite. NAT-plannen accepteren geen inkomende verbindingen behalve je persoonlijke SSH-poort (hoe NAT hier werkt).
- Een domein met een A-record naar het IP van de VPS.
- Een WireGuard-client thuis die Home Assistant op het lokale netwerk kan bereiken.
1. WireGuard-server op de VPS
apt update && apt install -y wireguard caddy
wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub
chmod 600 /etc/wireguard/server.key
cat > /etc/wireguard/wg0.conf <<EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = $(cat /etc/wireguard/server.key)
[Peer]
# the home side
PublicKey = HOME_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
EOF
systemctl enable --now wg-quick@wg0
ufw allow 51820/udp && ufw allow 80,443/tcp
2. De kant thuis
Maak op een willekeurige Linux-machine thuis (of in een WireGuard-client-add-on van Home Assistant) de peer aan. De keepalive is belangrijk: die houdt de tunnel open door de NAT van je thuisrouter heen.
[Interface]
Address = 10.8.0.2/24
PrivateKey = HOME_PRIVATE_KEY
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = ha-vps.example.com:51820
AllowedIPs = 10.8.0.1/32
PersistentKeepalive = 25
Draait de WireGuard-client op een andere machine dan Home Assistant, stuur 10.8.0.2:8123 dan door naar de HA-host in je lokale netwerk; of, eenvoudiger, draai de client op de HA-host zelf.
3. HTTPS met Caddy
cat > /etc/caddy/Caddyfile <<'EOF'
ha.example.com {
reverse_proxy 10.8.0.2:8123
}
EOF
systemctl reload caddy
Caddy haalt het certificaat automatisch op en regelt de WebSocket-verbinding waar de Home Assistant-app op leunt.
4. Laat Home Assistant de proxy vertrouwen
Zonder dit weigert HA verzoeken die via de proxy komen. In configuration.yaml:
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.8.0.1
Herstart Home Assistant, open https://ha.example.com en stel die URL in als extern adres in de mobiele app.
De eerlijke afwegingen
HTTPS eindigt op de VPS, dus die server ziet je dashboardverkeer onversleuteld voordat het de tunnel in gaat. Het is jouw server, en daar gaat het nu juist om, maar behandel hem als deel van je thuisnetwerk: alleen SSH-sleutels, updates aan, verder niets erop. Laat het wachtwoord en de tweestapslogin van Home Assistant aan; de proxy is geen authenticatielaag.
De betaalde officiële clouddienst van het Home Assistant-team doet hetzelfde zonder onderhoud en financiert het project. Wil je helemaal geen server beheren, dan is dat een prima antwoord. De VPS-route wint als je al zelf host, je eigen domein wilt of later andere diensten van thuis achter dezelfde tunnel wilt zetten.
Gerelateerde handleidingen
- WireGuard-VPN instellen op een VPS: de volledige WireGuard-handleiding
- Nginx-reverse-proxy met HTTPS: als je Nginx verkiest boven Caddy
- Een nieuwe VPS beveiligen: doe dit eerst op elke machine die aan internet hangt
Reacties
Nog geen reacties. Wees de eerste.