אתם רוצים לפתוח את דשבורד Home Assistant ברכבת. הנתב מסרב: הספק שם אתכם מאחורי CGNAT, או שהעברת פורטים אפשרית טכנית אבל אתם לא רוצים לתלות את כל הרשת הביתית על האינטרנט כדי להדליק מנורה. VPS קטן פותר את שתי הבעיות. הבית שלכם מתחבר החוצה אליו דרך WireGuard, וה-VPS הוא הפנים הציבוריות היחידות: עם דומיין אמיתי, תעודה אמיתית, ושום דבר בבית שמאזין לעולם.
איך ההגדרה עובדת
phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
▲
home box dials out on UDP 51820
ה-VPS מריץ שני דברים: שרת WireGuard ו-Caddy כ-reverse proxy. בבית, לקוח WireGuard (על מארח Home Assistant, על Raspberry Pi או על הנתב) מחזיק מנהרה פתוחה. כשאתם נכנסים ל-https://ha.example.com, Caddy מעביר את הבקשה במנהרה אל 10.8.0.2:8123.
מה צריך
- תוכנית עם IP ייעודי. ה-VPS חייב לקבל 443 נכנס ו-UDP 51820. **Nano-IP** ב-$8 לחודש יותר ממספיקה: היא מעבירה כמה קילובייטים של תעבורת דשבורד בלי להתאמץ. תוכניות NAT לא מקבלות חיבורים נכנסים מלבד פורט ה-SSH האישי שלכם (איך NAT עובד אצלנו).
- דומיין עם רשומת A שמצביעה על ה-IP של ה-VPS.
- לקוח WireGuard בבית שמגיע ל-Home Assistant ברשת המקומית.
1. שרת 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 בבית (או בתוסף לקוח WireGuard של Home Assistant) צרו את ה-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. 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 והגדירו את הכתובת הזו ככתובת החיצונית באפליקציה בנייד.
הפשרות, בכנות
ה-HTTPS מסתיים ב-VPS, כך שהשרת הזה רואה את תעבורת הדשבורד בלי הצפנה לפני שהיא נכנסת למנהרה. זה השרת שלכם, וזה כל העניין, אבל התייחסו אליו כחלק מהרשת הביתית: מפתחות SSH בלבד, עדכונים פעילים, ושום דבר אחר לא רץ עליו. השאירו את הסיסמה והאימות הדו-שלבי של Home Assistant פעילים; ה-proxy איננו שכבת אימות.
שירות הענן הרשמי בתשלום של צוות Home Assistant עושה את אותה עבודה בלי שום תחזוקה ומממן את הפרויקט. אם אתם מעדיפים לא לתחזק שרת בכלל, זו תשובה טובה לגמרי. מסלול ה-VPS מנצח כשאתם כבר מארחים בעצמכם, רוצים דומיין משלכם, או מתכננים לשים בהמשך שירותים ביתיים נוספים מאחורי אותה מנהרה.
מדריכים קשורים
- הגדרת WireGuard VPN על VPS: המדריך המלא ל-WireGuard
- Nginx reverse proxy עם HTTPS: אם אתם מעדיפים Nginx על פני Caddy
- אבטחת VPS חדש: עשו את זה קודם על כל מכונה שפונה לאינטרנט
תגובות
אין עדיין תגובות. היו הראשונים.