Vuoi aprire la dashboard di Home Assistant dal treno. Il router dice di no: il provider ti mette dietro un carrier-grade NAT, oppure il port forwarding sarebbe possibile ma preferisci non esporre tutta la rete di casa a internet per accendere una luce. Un piccolo VPS risolve entrambi i problemi. La casa si collega in uscita al VPS tramite WireGuard, e il VPS è l'unica faccia pubblica: con un dominio vero, un certificato vero e niente in casa in ascolto verso il mondo.
Come funziona il setup
phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
▲
home box dials out on UDP 51820
Sul VPS girano due cose: un server WireGuard e Caddy come reverse proxy. A casa, un client WireGuard (sull'host di Home Assistant, su un Raspberry Pi o sul router) tiene aperto un tunnel. Quando visiti https://ha.example.com, Caddy passa la richiesta nel tunnel a 10.8.0.2:8123.
Cosa ti serve
- Un piano con IP dedicato. Il VPS deve accettare in entrata la 443 e la UDP 51820. Nano-IP a $8 al mese è più che sufficiente: sposta pochi kilobyte di traffico della dashboard senza fatica. I piani NAT non accettano connessioni in entrata oltre alla tua porta SSH personale (come funziona il NAT da noi).
- Un dominio con un record A che punta all'IP del VPS.
- Un client WireGuard a casa che raggiunga Home Assistant nella rete locale.
1. Server WireGuard sul 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. Il lato di casa
Su qualsiasi macchina Linux di casa (o nell'add-on client WireGuard di Home Assistant) crea il peer. Il keepalive è importante: mantiene il tunnel aperto attraverso il NAT del router di casa.
[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
Se il client WireGuard gira su una macchina diversa da quella di Home Assistant, inoltra 10.8.0.2:8123 all'host di HA nella rete locale, oppure, più semplice, esegui il client direttamente sull'host di HA.
3. HTTPS con Caddy
cat > /etc/caddy/Caddyfile <<'EOF'
ha.example.com {
reverse_proxy 10.8.0.2:8123
}
EOF
systemctl reload caddy
Caddy ottiene il certificato in automatico e gestisce la connessione WebSocket su cui si basa l'app di Home Assistant.
4. Di' a Home Assistant di fidarsi del proxy
Senza questo passaggio, HA rifiuta le richieste che passano dal proxy. In configuration.yaml:
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.8.0.1
Riavvia Home Assistant, apri https://ha.example.com e imposta quell'URL come indirizzo esterno nell'app mobile.
I compromessi, onestamente
L'HTTPS termina sul VPS, quindi quel server vede in chiaro il traffico della dashboard prima che entri nel tunnel. Il server è tuo, ed è proprio questo il punto, ma trattalo come parte della rete di casa: solo chiavi SSH, aggiornamenti attivi, nient'altro in esecuzione. Tieni attivi la password di Home Assistant e il login a due fattori: il proxy non è un livello di autenticazione.
Il servizio cloud ufficiale a pagamento del team di Home Assistant fa lo stesso lavoro senza alcuna manutenzione e finanzia il progetto. Se preferisci non gestire affatto un server, è una risposta perfettamente valida. La strada del VPS vince quando fai già self-hosting, vuoi il tuo dominio o vuoi mettere in futuro altri servizi di casa dietro lo stesso tunnel.
Guide correlate
- Configurare una VPN WireGuard su un VPS: la guida completa a WireGuard
- Reverse proxy Nginx con HTTPS: se preferisci Nginx a Caddy
- Mettere in sicurezza un nuovo VPS: da fare per primo su qualsiasi macchina esposta a internet
Commenti
Ancora nessun commento. Sii il primo.