Unataka kufungua dashibodi yako ya Home Assistant ukiwa kwenye treni. Router inakataa: mtoa huduma wa intaneti amekuweka nyuma ya CGNAT, au port forwarding inawezekana kiufundi lakini hutaki kuning'iniza mtandao wako wote wa nyumbani kwenye intaneti ili kuwasha taa. VPS ndogo inatatua yote mawili. Nyumba yako inaunganika nayo kwenda nje kupitia WireGuard, na VPS ndiyo uso pekee wa umma: ikiwa na kikoa halisi, cheti halisi, na hakuna kitu nyumbani kinachosikiliza ulimwengu.
Jinsi usanidi unavyofanya kazi
phone ──HTTPS──> VPS (Caddy :443) ──WireGuard──> Home Assistant :8123 at home
▲
home box dials out on UDP 51820
VPS inaendesha vitu viwili: seva ya WireGuard na Caddy kama reverse proxy. Nyumbani, mteja wa WireGuard (kwenye host ya Home Assistant, Raspberry Pi au router) anaweka handaki wazi. Unapotembelea https://ha.example.com, Caddy inapitisha ombi kupitia handaki hadi 10.8.0.2:8123.
Unachohitaji
- Mpango wenye dedicated IP. VPS lazima ikubali 443 inayoingia na UDP 51820. Nano-IP kwa $8/mwezi inatosha zaidi ya kutosha: inasafirisha kilobaiti chache za trafiki ya dashibodi bila shida. Mipango ya NAT haikubali muunganisho unaoingia isipokuwa bandari yako binafsi ya SSH (jinsi NAT inavyofanya kazi hapa).
- Kikoa chenye rekodi ya A inayoelekeza kwenye IP ya VPS.
- Mteja wa WireGuard nyumbani anayeweza kufikia Home Assistant kwenye mtandao wa ndani.
1. Seva ya WireGuard kwenye 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. Upande wa nyumbani
Kwenye mashine yoyote ya Linux nyumbani (au kwenye add-on ya mteja wa WireGuard wa Home Assistant), unda peer. keepalive ni muhimu: inaweka handaki wazi kupitia NAT ya router ya nyumbani.
[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
Ikiwa mteja wa WireGuard anaendeshwa kwenye mashine tofauti na Home Assistant, peleka 10.8.0.2:8123 kwa host ya HA kwenye mtandao wa ndani, au rahisi zaidi: endesha mteja kwenye host ya HA yenyewe.
3. HTTPS kwa Caddy
cat > /etc/caddy/Caddyfile <<'EOF'
ha.example.com {
reverse_proxy 10.8.0.2:8123
}
EOF
systemctl reload caddy
Caddy inapata cheti kiotomatiki na kushughulikia muunganisho wa WebSocket ambao programu ya Home Assistant inautegemea.
4. Iambie Home Assistant iamini proxy
Bila hili, HA inakataa maombi yanayopita kwenye proxy. Kwenye configuration.yaml:
http:
use_x_forwarded_for: true
trusted_proxies:
- 10.8.0.1
Anzisha upya Home Assistant, fungua https://ha.example.com, na weka URL hiyo kama anwani ya nje kwenye programu ya simu.
Mapatano kwa uwazi
HTTPS inaishia kwenye VPS, kwa hivyo seva hiyo inaona trafiki ya dashibodi yako bila usimbaji kabla haijaingia kwenye handaki. Ni seva yako, na hiyo ndiyo hoja nzima, lakini ichukulie kama sehemu ya mtandao wako wa nyumbani: funguo za SSH pekee, masasisho yamewashwa, na hakuna kitu kingine kinachoendeshwa juu yake. Acha nenosiri la Home Assistant na uingiaji wa hatua mbili vikiwa vimewashwa; proxy si tabaka la uthibitishaji.
Huduma rasmi ya wingu ya kulipia kutoka kwa timu ya Home Assistant inafanya kazi hiyohiyo bila matengenezo yoyote na inafadhili mradi. Ikiwa hupendi kuendesha seva kabisa, hilo ni jibu zuri kabisa. Njia ya VPS inashinda unapokuwa tayari unajipangishia, unataka kikoa chako mwenyewe, au unapanga kuweka huduma nyingine za nyumbani nyuma ya handaki hilohilo baadaye.
Miongozo inayohusiana
- Sanidi WireGuard VPN kwenye VPS: mwongozo kamili wa WireGuard
- Nginx reverse proxy yenye HTTPS: ukipendelea Nginx kuliko Caddy
- Kulinda VPS mpya: fanya hili kwanza kwenye mashine yoyote inayoelekea intaneti
Maoni
Bado hakuna maoni. Kuwa wa kwanza.