आप ट्रेन में बैठे-बैठे Home Assistant का डैशबोर्ड खोलना चाहते हैं। राउटर मना कर देता है: इंटरनेट प्रदाता ने आपको carrier-grade NAT के पीछे रखा है, या पोर्ट फॉरवर्डिंग संभव तो है पर एक बल्ब जलाने के लिए आप पूरा घरेलू नेटवर्क इंटरनेट पर नहीं खोलना चाहते। एक छोटा VPS दोनों समस्याएँ हल कर देता है। आपका घर WireGuard के ज़रिए उससे बाहर की ओर जुड़ता है, और VPS ही एकमात्र सार्वजनिक चेहरा रहता है: असली डोमेन, असली सर्टिफ़िकेट, और घर में ऐसा कुछ नहीं जो बाहरी दुनिया की बात सुन रहा हो।
यह सेटअप कैसे काम करता है
phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
▲
home box dials out on UDP 51820
VPS पर दो चीज़ें चलती हैं: एक WireGuard सर्वर और रिवर्स प्रॉक्सी के रूप में Caddy। घर पर एक WireGuard क्लाइंट (Home Assistant होस्ट, Raspberry Pi या राउटर पर) टनल को खुला रखता है। जब आप https://ha.example.com खोलते हैं, तो Caddy अनुरोध को टनल के ज़रिए 10.8.0.2:8123 तक पहुँचा देता है।
आपको क्या चाहिए
- डेडिकेटेड IP वाला प्लान। VPS को आने वाला 443 और UDP 51820 स्वीकार करना होगा। $8 प्रति माह वाला Nano-IP ज़रूरत से ज़्यादा है: यह डैशबोर्ड का कुछ किलोबाइट ट्रैफ़िक बिना किसी दिक़्क़त के संभाल लेता है। NAT प्लान आपके निजी SSH पोर्ट के अलावा कोई आने वाला कनेक्शन स्वीकार नहीं करते (यहाँ NAT कैसे काम करता है)।
- एक डोमेन जिसका A रिकॉर्ड VPS के IP की ओर इशारा करता हो।
- घर पर एक WireGuard क्लाइंट जो लोकल नेटवर्क में Home Assistant तक पहुँच सके।
1. VPS पर WireGuard सर्वर
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 मशीन पर (या Home Assistant के WireGuard क्लाइंट ऐड-ऑन में) peer बनाइए। keepalive ज़रूरी है: यह घरेलू राउटर के 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
अगर WireGuard क्लाइंट Home Assistant से अलग मशीन पर चलता है, तो 10.8.0.2:8123 को लोकल नेटवर्क में HA होस्ट की ओर फॉरवर्ड करें; या और आसान तरीका, क्लाइंट को सीधे HA होस्ट पर चलाएँ।
3. Caddy के साथ HTTPS
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 को प्रॉक्सी पर भरोसा करने के लिए कहें
इसके बिना HA प्रॉक्सी से आने वाले अनुरोधों को अस्वीकार कर देता है। configuration.yaml में:
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.8.0.1
Home Assistant को रीस्टार्ट करें, https://ha.example.com खोलें और मोबाइल ऐप में इसी URL को बाहरी पते के रूप में सेट करें।
ईमानदार समझौते
HTTPS VPS पर समाप्त होता है, इसलिए वह सर्वर टनल में जाने से पहले डैशबोर्ड का ट्रैफ़िक सादे रूप में देखता है। सर्वर आपका है, और असली बात यही है, लेकिन इसे घरेलू नेटवर्क का हिस्सा मानें: सिर्फ़ SSH कुंजियाँ, अपडेट चालू, और उस पर कुछ और न चलाएँ। Home Assistant का पासवर्ड और दो-चरणीय लॉगिन चालू रखें; प्रॉक्सी कोई प्रमाणीकरण परत नहीं है।
Home Assistant टीम की आधिकारिक सशुल्क क्लाउड सेवा बिना किसी रखरखाव के यही काम करती है और प्रोजेक्ट को आर्थिक मदद भी देती है। अगर आप बिल्कुल भी सर्वर नहीं चलाना चाहते, तो यह बहुत अच्छा विकल्प है। VPS वाला रास्ता तब बेहतर है जब आप पहले से सेल्फ़-होस्टिंग करते हैं, अपना डोमेन चाहते हैं, या आगे चलकर घर की दूसरी सेवाएँ भी उसी टनल के पीछे रखना चाहते हैं।
संबंधित गाइड
- VPS पर WireGuard VPN सेट करें: WireGuard की पूरी गाइड
- HTTPS के साथ Nginx रिवर्स प्रॉक्सी: अगर आपको Caddy से ज़्यादा Nginx पसंद है
- नए VPS को सुरक्षित करना: इंटरनेट के सामने आने वाली हर मशीन पर सबसे पहले यह करें
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। पहले बनें।