تريد فتح لوحة 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 كوكيل عكسي. في المنزل، يُبقي عميل 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)، أنشئ النظير. إعداد 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 يثق بالوكيل
بدون هذا يرفض HA الطلبات القادمة عبر الوكيل. في 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 وتسجيل الدخول الثنائي مفعّلين؛ فالوكيل ليس طبقة مصادقة.
الخدمة السحابية الرسمية المدفوعة من فريق Home Assistant تؤدي المهمة نفسها دون أي صيانة، وتموّل المشروع. إن كنت تفضّل ألّا تدير خادمًا أصلًا، فهذا جواب جيد تمامًا. طريق الـ VPS يتفوّق حين تكون تستضيف ذاتيًا بالفعل، أو تريد نطاقك الخاص، أو تنوي لاحقًا وضع خدمات منزلية أخرى خلف النفق نفسه.
أدلة ذات صلة
- إعداد WireGuard VPN على VPS: الشرح الكامل لـ WireGuard
- وكيل Nginx عكسي مع HTTPS: إن كنت تفضّل Nginx على Caddy
- تأمين VPS جديد: افعل هذا أولًا على أي جهاز يواجه الإنترنت
التعليقات
لا تعليقات بعد. كن الأول.