Θέλετε να ανοίξετε το dashboard του Home Assistant από το τρένο. Το router λέει όχι: ο πάροχος σας έχει βάλει πίσω από CGNAT, ή η προώθηση θυρών είναι τεχνικά δυνατή αλλά δεν θέλετε να κρεμάσετε ολόκληρο το οικιακό δίκτυο στο διαδίκτυο για να ανάψετε ένα φως. Ένα μικρό VPS λύνει και τα δύο. Το σπίτι σας συνδέεται προς τα έξω σε αυτό μέσω WireGuard και το VPS είναι το μόνο δημόσιο πρόσωπο: με πραγματικό domain, πραγματικό πιστοποιητικό και τίποτα στο σπίτι να ακούει τον κόσμο.
Πώς λειτουργεί η ρύθμιση
phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
▲
home box dials out on UDP 51820
Το VPS τρέχει δύο πράγματα: έναν server WireGuard και το Caddy ως reverse proxy. Στο σπίτι, ένας client WireGuard (στον host του Home Assistant, σε ένα Raspberry Pi ή στο router) κρατά ανοιχτό ένα τούνελ. Όταν ανοίγετε το https://ha.example.com, το Caddy περνά το αίτημα μέσα από το τούνελ στο 10.8.0.2:8123.
Τι χρειάζεστε
- Πακέτο με αποκλειστικό IP. Το VPS πρέπει να δέχεται εισερχόμενη 443 και UDP 51820. Το Nano-IP με $8/μήνα είναι υπεραρκετό: μεταφέρει λίγα kilobytes κίνησης dashboard χωρίς κανένα κόπο. Τα πακέτα NAT δεν δέχονται εισερχόμενες συνδέσεις εκτός από την προσωπική σας θύρα SSH (πώς λειτουργεί το NAT εδώ).
- Ένα domain με εγγραφή A που δείχνει στην IP του VPS.
- Έναν client WireGuard στο σπίτι που φτάνει το Home Assistant στο τοπικό δίκτυο.
1. Server WireGuard στο 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. Η πλευρά του σπιτιού
Σε οποιοδήποτε μηχάνημα Linux στο σπίτι (ή στο πρόσθετο client WireGuard του Home Assistant) δημιουργήστε τον peer. Το keepalive έχει σημασία: κρατά το τούνελ ανοιχτό μέσα από το NAT του οικιακού router.
[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
Αν ο client WireGuard τρέχει σε άλλο μηχάνημα από το Home Assistant, προωθήστε το 10.8.0.2:8123 στον host του HA στο τοπικό δίκτυο, ή πιο απλά: τρέξτε τον client στον ίδιο τον host του HA.
3. HTTPS με Caddy
cat > /etc/caddy/Caddyfile <<'EOF'
ha.example.com {
reverse_proxy 10.8.0.2:8123
}
EOF
systemctl reload caddy
Το Caddy παίρνει αυτόματα το πιστοποιητικό και χειρίζεται τη σύνδεση WebSocket στην οποία βασίζεται η εφαρμογή του Home Assistant.
4. Πείτε στο Home Assistant να εμπιστεύεται το proxy
Χωρίς αυτό, το HA απορρίπτει αιτήματα που περνούν από proxy. Στο configuration.yaml:
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.8.0.1
Επανεκκινήστε το Home Assistant, ανοίξτε το https://ha.example.com και ορίστε αυτό το URL ως εξωτερική διεύθυνση στην εφαρμογή του κινητού.
Οι συμβιβασμοί, ειλικρινά
Το HTTPS τελειώνει στο VPS, οπότε αυτός ο server βλέπει την κίνηση του dashboard χωρίς κρυπτογράφηση πριν μπει στο τούνελ. Είναι δικός σας server, και αυτό είναι όλο το νόημα, αλλά αντιμετωπίστε τον ως μέρος του οικιακού σας δικτύου: μόνο κλειδιά SSH, ενημερώσεις ενεργές, τίποτε άλλο να τρέχει πάνω του. Κρατήστε ενεργό τον κωδικό και τη σύνδεση δύο παραγόντων του Home Assistant· το proxy δεν είναι επίπεδο ελέγχου ταυτότητας.
Η επίσημη συνδρομητική υπηρεσία cloud της ομάδας του Home Assistant κάνει την ίδια δουλειά χωρίς καμία συντήρηση και χρηματοδοτεί το έργο. Αν προτιμάτε να μη διαχειρίζεστε καθόλου server, είναι απολύτως καλή απάντηση. Ο δρόμος του VPS κερδίζει όταν ήδη κάνετε self-hosting, θέλετε δικό σας domain ή σκοπεύετε αργότερα να βάλετε κι άλλες οικιακές υπηρεσίες πίσω από το ίδιο τούνελ.
Σχετικοί οδηγοί
- Ρύθμιση WireGuard VPN σε VPS: ο πλήρης οδηγός WireGuard
- Nginx reverse proxy με HTTPS: αν προτιμάτε Nginx αντί για Caddy
- Ασφάλιση ενός νέου VPS: κάντε το πρώτα σε κάθε μηχάνημα που βλέπει το διαδίκτυο
Σχόλια
Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.