WireGuard VPN – Pripojenie vzdialených IoT zariadení k domácej sieti
Mám smart home zariadenia v garáži, ktorá nie je na rovnakom mieste ako moja hlavná domáca sieť. Garáž má 4G router (Teltonika) a potreboval som pripojiť jej zariadenia k Home Assistant bežiacemu na Raspberry Pi doma. Riešením bol WireGuard VPN.
Architektúra
Garáž (Teltonika 4G router)
└── WireGuard klient (10.0.0.3)
↕ šifrovaný tunel
VPS (verejná IP)
└── WireGuard server (10.0.0.1)
↕
Domáce RPi (10.0.0.2)
└── WireGuard klient
Používam lacný VPS ako WireGuard hub, pretože domáce RPi je za bežným domácim routerom (bez statickej IP) a garáž je za 4G CGNAT. VPS s verejnou IP rieši oba problémy.
Prečo VPS ako hub?
Oba koncové body (doma a garáž) sú za NAT, ktorú nemôžeme ovládať. VPS s verejnou IP slúži ako miesto stretnutia. Oba klienti sa pripoja k VPS a traffic sa smeruje medzi nimi.
Nastavenie WireGuard cez Docker
Na domácom RPi spustite WireGuard v Dockeri:
wireguard:
image: lscr.io/linuxserver/wireguard:latest
environment:
- SERVERURL=ip-vasho-vps
- SERVERPORT=51820
- PEERS=doma,garaz
- INTERNAL_SUBNET=10.0.0.0
ports:
- "51820:51820/udp"
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
Kontajner automaticky generuje QR kódy a konfiguračné súbory pre každého klienta.
OTA aktualizácie cez WireGuard
Praktická výhoda: ESP32 senzory v garáži môžem aktualizovať bezdrôtovo cez VPN tunel. ESPHome OTA aktualizácie fungujú cez WireGuard tunel akoby zariadenie bolo na lokálnej sieti.
docker exec esphome esphome upload /config/garaz-senzory.yaml \
--device 192.168.10.113
Výsledok
Všetky zariadenia v garáži (ESP32 senzory, IP kamera) sú prístupné z Home Assistant akoby boli na lokálnej sieti. ESPHome zariadenia sú online, kamerové streamy sú dostupné a OTA aktualizácie fungujú bezproblémovo.