HAOS Installation: RPi sicher über das Internet veröffentlichen
Eine der bevorzugten Installationsvarianten von Home Assistant ist neben dem Einsatz von Docker das Home Assistant Betriebssystem: HAOS und ein Raspberry Pi (RPi). Der Einsatz eines Raspberry Pi als Smart-Home Zentrale ist einfach, günstig in der Anschaffung und stromsparend im Betrieb.
SD oder SSD?
Des Öfteren wird als Speicher für Home-Assistant eine SSD-Festplatte empfohlen, da Änderungen in der Datenbank relativ viel Schreiboperationen auslösen und eine günstige SD-Karte dadurch w.o. geben könnte. Alternativ kann auch eine SD-Karte verwendet werden, welche für eine hohe-Anzahl an Schreibvorgängen ausgelegt ist, z.B. SanDisk MAX ENDURANCE
HAOS- Installation Raspberry Pi
Die Installation von HAOS auf dem Raspberry Pi erfolgt am einfachsten über den Raspberry Pi Imager: https://www.raspberrypi.com/software/, siehe auch: Raspberry Pi Inbetriebnahme.
Das HAOS-Image wird dazu auf eine leere SD-Karte geschrieben, welche den Raspberry Pi im Anschluss mit Home-Assistant startet.
Abhängig von der eingesetzten Hardware: Raspberry Pi 3 oder 4, kann ein entsprechendes Image ausgewählt werden:
Dann noch die eingelegte SD-Karte auswählen und das Image "SCHREIBEN":
Eingelegt in den Raspberry Pi, bootet dieser mit Home Assistant und kann über dessen Namen oder IP-Adresse und dem Port 8123 im Browser erreicht werden: http://homeassistant.local:8123/. Alternativ verrät uns Blick auf die Verwaltungsoberfläche des Routers die IP-Adresse, bzw. kann diese auch über folgendes PowerShell Skript herausgefunden werden: IP Adressen im Netzwerk finden, auch wenn deren Firewall aktiviert ist.
Sicherer Zugriff vom Internet: DNS-Eintrag und Let´s Encrypt Zertifikat
Für den Zugriff aus dem Internet habe ich am Router ein Port-Forwarding eingerichtet. Damit der Zugriff verschlüsselt stattfindet habe ich einen DNS-Eintrag gesetzt und dafür über das Let´s Encrypt-AddOn ein Zertifikat anfordern lassen, aber alles der Reihe nach:
Zunächst sollte Home-Assistant nach dem erfolgreichen Deployment im lokalen Netzwerk über den Port 8123 erreichbar sein. Einen Schritt weiter, können wir versuchen die Installation aus dem Internet aufzurufen, dazu müssen wir die Anfragen aus dem Internet vom Router an den Raspberry Pi weiterleiten.
Port-Forwarding
Details zum Zugriff, zur öffentlichen IP-Adresse und Funktionsweise des Zugriffs über ein Port-Forwarding, siehe: aus dem Internet verfügbar machen: Port-Forwarding - OpenWRT.
Für den Zugriff kann der Port 443 auf 8123 umgeleitet werden, dadurch muss der Port 8123 aus dem Internet nicht extra in der URL angeführt werden. Port 80 wird für das Ausstellen der Let's Encrypt Zertifikate über die http-Variante benötigt.
Durch das Port-Forwarding sollte Home Assistant über die öffentliche IP-Adresse des Internets und dem Port 443 erreichbar sein: http://PublicIP:443. Für einen sicheren Zugriff benötigen wir zusätzlich noch einen DNS-Eintrag, z.B. über DynDNS, siehe: free DynDNS Service - Zugriff bei wechselnder öffentlicher IP. Sollte sich die IP-Adresse des Internetzugangs nicht ändern, kann ein zusätzlicher Eintrag einer beliebigen Internet- Domain verwendet werden. Als Beispiel habe ich bei Cloudflare eine Domain geordert.
DNS-Eintrag
Für die Namensauflösung benötigen wir einen A-Record auf die Public-IP des Internetanschlusses.
Wichtig bei der Verwendung von CloudFlare ist das Deaktivieren des CloudFlare-Proxy: "DNS only"
Zeigt der DNS-Eintrag auf die öffentliche IP-Adresse des Internetanschlusses, sollte Home-Assistant vom Internet auch über den Namen aufrufbar sein.
http://A-Record-Public-Domain:443.
Um von http auf https zu wechseln, fehlt uns jetzt nur noch ein Zertifikat:
Let´s Encrypt Zertifikat ausstellen
Um das Ausstellen und automatische Verlängern eines Zertifikats kann sich das Home Assistant AddOn "Let´s Encrypt" kümmern, welches über den AddOn Store installiert werden kann:
In den Options benötigt das AddOn jetzt noch die Information über den verwendeten DNS-Record (A-Eintrag) und die Email-Adresse für ev. Warnungen oder Information zum Zertifikat:
Nach dem Start des Add-Ons kümmert sich dieses um das Ausstellen und Verlängern des Zertifikats. Ein Blick in das Log zeigt, an dieser Stelle, dass bereits ein Zertifikat ausgestellt wurde und keine weitere Aktion notwendig ist:
Soweit hat sich an der Home Assistant-Installation bis dato noch nichts geändert, das Zertifikat ist jetzt lediglich bereit für die Verwendung. Damit das Zertifikat zum Einsatz kommt, müssen wir Home Assistant mitteilen, wo sich das Zertifikat befindet und dass die Verbindung über https stattfinden soll:
Home Assistant auf https umstellen
Wie auch bei sehr vielen anderen Einstellungen in Home Assistant finden diese in der configuration.yaml-Datei statt. Damit die Datei configuration.yaml einfach bearbeitet werden kann, bietet sich das AddOn "File editor" an:
Nach dem Aktivieren des File editor, kann die Datei /config/configuration.yaml damit geöffnet und https mit folgenden Zeilen aktiviert werden:
...
# enable https
http:
ssl_certificate: /ssl/fullchain.pem
ssl_key: /ssl/privkey.pem
Alternativ zur eben beschriebenen http-Variante, kann mit Cloudflare auch die DNS-Variante über einen API-Token verwendet werden. Das Port-Forwarding des Port 80 ist für diese Variante nicht notwendig:
Test mit Cloudflare API-Token
Der API-Token kann auf der Cloudflare-Website mittels "Get your API token" angefordert werden:
Der Token, kann dann in "Options" und DNS wie folgt hinterlegt werden:
provider: dns-cloudflare
cloudflare_api_token: ???
Ein Blick in das Log zeigt uns, ob das Zertifikat erfolgreich ausgestellt werden konnte:
Alternativer Port
Sollte der Internetprovider aus irgendeinem Grund den Port 443 eingehend blockieren, kann Home Assistant auch auf einem anderen Port, als Beispiel auf dem Standardport 8123 betrieben werden:
Fazit
Die Kombination aus einem Raspberry Pi und Home Assistant liefert eine kostengünstige Möglichkeit für den Aufbau des eigenen Smart Homes, ganz ohne der Abhängigkeit zu einem Cloud-Anbieter: Der Betrieb erfolgt zur Gänze im eigenen Netzwerk und das Setup bietet optional die Möglichkeit auch vom Internet zugreifen zu können: Mit dem gleichen Komfort eines Cloud-Services.
{{percentage}} % positiv