Home Assistant panelinizi trende açmak istiyorsunuz. Modem izin vermiyor: servis sağlayıcı sizi carrier-grade NAT arkasına koyuyor ya da port yönlendirme mümkün ama bir lambayı yakmak için tüm ev ağınızı internete açmak istemiyorsunuz. Küçük bir VPS ikisini de çözer. Eviniz WireGuard üzerinden ona dışarı doğru bağlanır ve VPS tek genel yüzdür: gerçek bir alan adı, gerçek bir sertifika ve evde dünyayı dinleyen hiçbir şey olmadan.
Kurulum nasıl çalışır
phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
▲
home box dials out on UDP 51820
VPS'te iki şey çalışır: bir WireGuard sunucusu ve ters proxy olarak Caddy. Evde bir WireGuard istemcisi (Home Assistant sunucusunda, bir Raspberry Pi'de veya modemde) tüneli açık tutar. https://ha.example.com adresini ziyaret ettiğinizde Caddy isteği tünel üzerinden 10.8.0.2:8123 adresine iletir.
Neye ihtiyacınız var
- Özel IP'li bir plan. VPS'in gelen 443 ve UDP 51820 trafiğini kabul etmesi gerekir. Aylık $8 olan Nano-IP fazlasıyla yeterlidir: birkaç kilobaytlık panel trafiğini zorlanmadan taşır. NAT planları kişisel SSH portunuz dışında gelen bağlantı kabul etmez (burada NAT nasıl çalışır).
- VPS IP'sine işaret eden bir A kaydına sahip bir alan adı.
- Home Assistant'a yerel ağdan ulaşabilen evde bir WireGuard istemcisi.
1. VPS'te WireGuard sunucusu
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. Ev tarafı
Evdeki herhangi bir Linux makinede (veya Home Assistant'ın WireGuard istemci eklentisinde) eşi oluşturun. Keepalive önemlidir: tüneli ev modeminizin NAT'ı üzerinden açık tutar.
[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
WireGuard istemcisi Home Assistant'tan farklı bir makinede çalışıyorsa 10.8.0.2:8123 adresini yerel ağınızdaki HA sunucusuna yönlendirin; ya da daha basiti, istemciyi doğrudan HA sunucusunda çalıştırın.
3. Caddy ile HTTPS
cat > /etc/caddy/Caddyfile <<'EOF'
ha.example.com {
reverse_proxy 10.8.0.2:8123
}
EOF
systemctl reload caddy
Caddy sertifikayı otomatik olarak alır ve Home Assistant uygulamasının dayandığı WebSocket bağlantısını yönetir.
4. Home Assistant'a proxy'ye güvenmesini söyleyin
Bu ayar olmadan HA, proxy üzerinden gelen istekleri reddeder. configuration.yaml içinde:
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.8.0.1
Home Assistant'ı yeniden başlatın, https://ha.example.com adresini açın ve bu URL'yi mobil uygulamada harici adres olarak ayarlayın.
Dürüst ödünleşimler
HTTPS VPS'te sonlanır, bu yüzden o sunucu panel trafiğinizi tünele girmeden önce açık metin olarak görür. Sunucu sizindir ve asıl mesele de budur, ama onu ev ağınızın bir parçası gibi ele alın: yalnızca SSH anahtarları, güncellemeler açık, üzerinde başka hiçbir şey çalışmasın. Home Assistant parolasını ve iki adımlı girişi açık tutun; proxy bir kimlik doğrulama katmanı değildir.
Home Assistant ekibinin ücretli resmi bulut hizmeti aynı işi hiç bakım gerektirmeden yapar ve projeyi finanse eder. Hiç sunucu yönetmek istemiyorsanız bu gayet iyi bir cevaptır. VPS yolu; zaten kendi sunucunuzu barındırıyorsanız, kendi alan adınızı istiyorsanız veya ileride diğer ev hizmetlerini de aynı tünelin arkasına koymak istiyorsanız öne çıkar.
İlgili rehberler
- Bir VPS'te WireGuard VPN kurma: eksiksiz WireGuard rehberi
- HTTPS ile Nginx ters proxy: Caddy yerine Nginx tercih ediyorsanız
- Yeni bir VPS'i güvenceye alma: internete açık her makinede önce bunu yapın
Yorumlar
Henüz yorum yok. İlk olun.