HTTPS Zugriff für Home Assistant mit dem NGINX Proxy Manager einrichten

SONOFF S26R2 2PCS WLAN Smarte Steckdose,16A 4000W Alexa Smart Plug,Smart Home Wifi Steckdose mit App Fernsteuerung, Sprachsteuerung und Zeitschaltuhr Funktioniert mit Echo,Echo Dot,Google Home,Ifttt.
SONOFF S26R2 2PCS WLAN Smarte Steckdose,16A 4000W Alexa Smart Plug,Smart Home Wifi Steckdose mit App Fernsteuerung, Sprachsteuerung und Zeitschaltuhr Funktioniert mit Echo,Echo Dot,Google Home,Ifttt.
27,99 € (27,99 € / stück)

Viele möchten von unterwegs auf Ihr HA zugreifen, wissen aber nicht wie. HTTP ist zu unsicher, aber HTTPS stellt für viele immer wieder eine große Hürde dar, ebenso wie VPN. Da die Fragen danach auf dem Discord inzwischen alle paar Tage aufs neue gestellt werden, habe ich mich entschlossen, hier noch einmal alles kurz und knapp zusammenzufassen.

Die sicherste Variante, von unterwegs auf sein Home Assistant zuzugreifen ist wohl weiterhin über VPN. Zumal man darüber auch an sämtliche anderen Dienste kommt, aber nichts weiter ausser dem VPN am Router freigeben muss. Es werden aber immer mehr Dienste (wie z.B. Amazon Web Service, oder auch das flashen von ESPHome am lokalen USB) die den HTTPS-Zugriff auf unser Home Assisatant erforderlich machen.

Natürlich gibt es auch hier wie immer mehrere Möglichkeiten. Die meiner Meinung nach beste Möglichkeit dazu bietet das Home Assistant Add On “NGINX Proxy Manager”. Was Ihr tun müsst, um dieses Add On zu verwenden, habe ich in diesem Artikel kurz zusammengefasst. Die Beschreibung ist vorerst auf die nötigsten Informationen reduziert, wird aber ggf. bei Bedarf erweitert.

Solltet Ihr noch Fragen haben, schaut gerne auf unserem Discord unter https://smarthomeyourself.de/discord vorbei.


Port 80 und 443 freigeben

Als erstes müssen die beiden Ports 80 und 443 an euren Router als Portforwarding eingerichtet werden. Da hier das Vorgehen abhängig vom eingesetzten Router ist, gehe Ich auf diesen Punkt nicht im Detail ein.
Jedenfalls müssen die externen Ports 80 und 443 an eurem Router auf die IP von eurem Home Assistant weitergeleitet werden.


Domain mit Dynamischem DNS anlegen

Als weitere Voraussetzung benötigt Ihr eine Domain, welche auf die externe IP eures Routers zeigt. Mögliche Anbieter wären z.B. duckdns.org oder noip.com. Die dort angelegte Domain muss bei jedem IP-Wechsel eures Routers aktualisiert werden. Wie das geht erfahrt Ihr bei dem jeweiligen Anbieter.

Die Anleitungen für unterschiedliche Geräte von DuckDNS findet Ihr z.B. unter https://www.duckdns.org/install.jsp.


Maria DB

Als weitere Voraussetzung benötigt Ihr noch das MariaDB Add-On aus dem Supervisor.

Wie Ihr das installieren könnt und was es dabei zu beachten gibt, habe ich im folgenden Video einmal zusammengefasst.

YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden


NGINX Add On installieren

Nachdem Ihr die Domain registriert und die Ports weitergeleitet habt, können Wir mit der Einrichtung loslegen.

Wechselt im Supervisor in den “Add-On Store” und sucht das Plugin “Nginx Proxy Manager”. ACHTUNG! Es gibt ein weiteres NGINX Add-On. Dieses erfordert aber wesentlich mehr Handarbeit und bietet keine Web-Oberfläche zum konfigurieren. Hier seht Ihr daher noch einmal das Icon der in diesem Beitrag verwendeten Erweiterung.

https://github.com/hassio-addons/addon-nginx-proxy-manager


Nachdem Ihr die richtige Erweiterung ausgewählt habt, klickt Ihr auf INSTALLIEREN.

Aktiviert am besten direkt die Optionen “Beim Booten starten und “Watchdog“. Wer möchte, kann auch “Automatische Updates” aktivieren. Anschließend startet Ihr Home Assistant am besten einmal neu.

Nachdem Home Assisant neu gestartet wurde, wählt Ihr im Supervisor wieder das Add-On aus und klickt auf “Open WEB UI“.


Im Web-Interface des NGINX Proxy Managers wählt Ihr nun im Menü den Punkt “Hosts – Proxy Hosts“.


Hier fügt Ihr nun einen neuen Proxy Host hinzu, indem Ihr auf “Add Proxy Host” klickt.


Im Dialog tragt Ihr unter Domain Names eure Domain ein
(ohne http:// oder https:// davor und ohne / oä dahinter)

Als Scheme wählt Ihr http, unter “Forward Hostname / IP” tragt Ihr die IP eures Home Assistant ein.

Bei Forward Port gebt Ihr den Port ein, unter dem euer Home Assistant erreichbar ist.
(Standardmäßig ist das der Port 8123)

Aktiviert abschließend noch den Punkt “Websockets Support“.


Anschließend wechselt Ihr auf den Reiter SSL.

Hier wählt ihr unter “SSL Certificate” den Eintrag “Request a new SSL Certificate” um ein neues Zertifikat zu erstellen aus.

Aktiviert nun den Punkt “Force SSL“, tragt eine gültige Email-Adresse für eure Zertifikat ein und akzeptiert die Let’s Encrypt Bedingungen durch aktivieren der Option am unteren Rand der Dialog.

Bestätigt nun die Eingaben durch einen Klick auf “Save” und wartet, bis der Vorgang abgeschlossen ist.
Dann werden im Hintergrund die Zertifikate von Let’s Encrypt generiert. Das kann einen Augenblick in Anspruch nehmen.

Das registrieren des Zertifikates funktioniert nur, wenn die eingetragene Domain auch auf eure externe IP zeigt, und die Ports 80 und 443 auf die Home Assistant IP weitergeleitet sind.


Nun sollte euer Host wie folgt aussehen. Wenn die Zertifikats-Erstellung funktioniert hat, wird dies in der Spalte SSL mit dem Eintrag “Let’s Encrypt” bestätigt.


Configuration.yaml anpassen

Jetzt müssen wir nur noch den Proxy-Server als erlaubten Proxy in der Home Assistant Konfiguration hinterlegen.
Ruft dafür nun euer Home Assistant über eure lokale IP Adresse im Browser auf (z.B. http://192.168.1.100:8123)

Wählt nun den “File Editor” aus und öffnet die Datei “configuration.yaml“.

Hier müsst Ihr die Konfiguration nun um folgende Einträge erweitern:

http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1
    - 172.30.33.0/24
    - ::1

Startet nun einmal euer Home Assistant neu.


FERTIG

Nun sollte euer Home Assistant unter eurer Domain über https erreichbar sein.

(z.B. https://beispiel.duckdns.org)

Hier müsst Ihr nun auch keinen Port in der URL mehr angeben! Durch die Angabe des https-Protokolls erfolgt der Aufruf automatisch über Port 443, welche vom Proxy intern auf den in der Host-Einstellung hinterlegten Port (Standard 8123) weitergeleitet wird.


Viel Spaß mit eurem HTTPS Zugriff