Du vill öppna Home Assistant-panelen på tåget. Routern säger nej: operatören lägger dig bakom carrier-grade NAT, eller så går portvidarebefordran att ordna men du vill helst inte hänga ut hela hemnätverket på internet för att tända en lampa. En liten VPS löser båda. Ditt hem kopplar upp sig utåt mot den via WireGuard, och VPS:en är det enda publika ansiktet: med en riktig domän, ett riktigt certifikat och inget hemma som lyssnar mot omvärlden.
Så fungerar uppsättningen
phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
▲
home box dials out on UDP 51820
VPS:en kör två saker: en WireGuard-server och Caddy som omvänd proxy. Hemma håller en WireGuard-klient (på Home Assistant-värden, en Raspberry Pi eller routern) en tunnel öppen. När du besöker https://ha.example.com skickar Caddy förfrågan genom tunneln till 10.8.0.2:8123.
Det här behöver du
- En plan med dedikerad IP. VPS:en måste ta emot inkommande 443 och UDP 51820. Nano-IP för $8 i månaden är mer än nog: den flyttar några kilobyte paneltrafik utan ansträngning. NAT-planer tar inte emot inkommande anslutningar utöver din personliga SSH-port (så fungerar NAT hos oss).
- En domän med en A-post som pekar på VPS:ens IP.
- En WireGuard-klient hemma som når Home Assistant på det lokala nätverket.
1. WireGuard-server på VPS:en
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. Hemsidan av tunneln
Skapa peern på valfri Linux-maskin hemma (eller i ett WireGuard-klienttillägg för Home Assistant). Keepalive är viktigt: den håller tunneln öppen genom hemrouterns NAT.
[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
Om WireGuard-klienten körs på en annan maskin än Home Assistant, vidarebefordra 10.8.0.2:8123 till HA-värden i det lokala nätverket; eller, enklare, kör klienten direkt på HA-värden.
3. HTTPS med Caddy
cat > /etc/caddy/Caddyfile <<'EOF'
ha.example.com {
reverse_proxy 10.8.0.2:8123
}
EOF
systemctl reload caddy
Caddy hämtar certifikatet automatiskt och hanterar WebSocket-anslutningen som Home Assistant-appen bygger på.
4. Låt Home Assistant lita på proxyn
Utan det här avvisar HA förfrågningar som kommer via proxyn. I configuration.yaml:
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.8.0.1
Starta om Home Assistant, öppna https://ha.example.com och ange den adressen som extern adress i mobilappen.
De ärliga avvägningarna
HTTPS avslutas på VPS:en, så den servern ser paneltrafiken i klartext innan den går in i tunneln. Servern är din, och det är just poängen, men behandla den som en del av hemnätverket: bara SSH-nycklar, uppdateringar på, inget annat som körs på den. Ha Home Assistants lösenord och tvåstegsinloggning påslagna; proxyn är inget autentiseringslager.
Den betalda officiella molntjänsten från Home Assistant-teamet gör samma jobb helt utan underhåll och finansierar projektet. Vill du inte drifta någon server alls är det ett helt rimligt svar. VPS-vägen vinner när du redan hostar själv, vill ha en egen domän eller vill lägga andra hemtjänster bakom samma tunnel längre fram.
Relaterade guider
- Sätt upp en WireGuard-VPN på en VPS: hela WireGuard-genomgången
- Omvänd proxy med Nginx och HTTPS: om du föredrar Nginx framför Caddy
- Säkra en ny VPS: gör detta först på varje maskin som vetter mot internet
Kommentarer
Inga kommentarer än. Bli först.