Home Assistant über OpenVPN (Docker) sicher von Außen erreichen

Die Idee ist, dass man einen Home Assistant Instanz ganz einfach von „Außen“ erreichbar macht ohne z.B. Ports auf dem Router wie der Fritz!Box, Speedport und anderen gängigen Routern öffnen muss. Wenn man zum Beispiel so überzeugt ist von Home Assistant und sich als „Admin“ für gewisse Familienmitglieder bereit erklärt bei Home Assistant zu unterstützen, dann kann diese Funktion sehr hilfreich sein. Denn man kann auf seinem System seiner Wahl einen Home Assistant konfigurieren und installieren, wie zum Beispiel auf einem Raspberry Pi (nicht empfohlen) einem Odroid N2+ auch unter dem Namen Home Assistant Blue bekannt oder einem leistungsstärkeren Intel NUC.

Man bereitet das System so weit vor und lern alle Geräte ein wie Zigbee2Mqtt mit diversen Lampen von Lidl, Sensoren von Aqara und anderen Herstellern, die auf Zigbee setzen. Man richtet entsprechend Szenen und Automationen ein, erstellt ggf. auch ein Grafana Dashboard mit Daten aus einer InfluxDB, um z.B. die hier beschrieben Aktivitäts-Check vom SeniorenSmarthome.de zu erstellen (Links zum Dashboard und den Automationen im Artikel verlinkt).

So jetzt kann man alles in eine Kiste packen und verschicken und muss dem Empfänger nur sagen, dass er den „Computer“ nur an Strom und an den Router anschließen muss.

Aber wie wird das Home Assistant System über das Internet mit dem „Admin“ verbunden? TeamViewer über Opas PC verbinden und über den Browser auf Home Assistant zugreifen? Ab Besten gleich noch Duckdns einrichten und entsprechende Ports auf dem Router freigeben? Alle too much für so eine einfache Funktion.

Wir haben natürlich beim Aufsetzen des Home Assistant Systems auch einen Open VPN Client mit installiert. Dieser baut einen Tunnel zwischen einem Open VPN Host und unterschiedlichen Clients auf. Der Client baut automatisch eine Verbindung zum OpenVPN Server auf, wenn Internet verfügbar ist. In dieses Virtuelle Private Netzwerk kann sich auch der „Admin“ einwählen, ist somit teil des Netzwerks und kann von dort aus den z.B. Pi erreichen.

OpenVPN Docker

Hier wie (wirklich gut beschrieben) den Container Schritt für Schritt einrichten und die Konfigurationsdateien für die Clients erstellen lassen und kopieren.
https://hub.docker.com/r/kylemanna/openvpn/

:warning: Also OpenVPN Host kann man z.B. seine eigene Home Assistant Instanz verwenden (genügend freie Ressourcen vorrausgesetzt). Dann kann hier udp://VPN.SERVERNAME.COM z.B. eine DuckDNS Adresse eingetragen werden. Nutzen kann man aber auch eine Cloud Server bei Hetzner

Hier zum Beispiel der leicht angepasste Code zum Erstellen der Installer Konfigurationsdatei mit Namen hainstaller1:

docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full hainstaller1 nopass

Diese wird dann mit dem folgenden Befehl aus dem Docker Container in das Hauptsystem kopiert:

docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient hainstaller1 > hainstaller1.ovpn

OpenVPN Client für Home Assistant (Add-On)

Zunächst muss das folgenden Repository dem Add-On bereich in Home Assistant hinzugefügt werden:

Open your Home Assistant instance and show the dashboard of a Supervisor add-on.

oder manuelles hinzufügen des Add-ons mit folgender url: https://gitlab.com/SmartLiving.Rocks/HomeAssistantSupport

Danach das Add-on installieren. Bevor das Add-on gestartet werden kann, muss noch die generierte *.ovpn Datei in das Verzeichnis /share kopiert werden.

Jetzt kann das Add-on gestartet werden.

VPN-Verbindung überprüfen

Auf Home Assistant

Die Logs des Add-ons überprüfen. Hier steht dann auch die IP-Adresse, die vom virtuellen Netzwerk vergeben wurde.

Auf dem Host System

docker logs f358b9hhbf23 oder einfach über die Log-Taste bei Portainer