Smart Home

HowTo: Das Beste Setup von Home Assistant auf Synology

Die Dokumentation von Home Assistant ist zwar recht gut, aber wenn man es auf einer Synology Disk Station mit DSM installieren will, ist es nicht ganz trivial alle Infos zu finden wie man das Setup mit Bordmitteln elegant hinbekommt.

In diesem HowTo richten wir es allein mit Bordmitteln auf einer Synology Disk Station so ein, dass wir über eine URL wie https://homeassistant.domain.de mit korrekten Zertifikaten und Dynamischer IP auf eine neue Home Assistant Installation zugreifen können.

Konkret werden wir:

  • Home Assistant (in der korrekten Version) auf der Synology installieren
  • Synology dynamisches DNS (DDNS) konfigurieren
  • Eine Sub-Domain (CNAME) einrichten
  • Ein gültiges Let’s Encrypt Zertifikat erstellen und für https Zugriff verwenden
  • Das ganze korrekt mit Home Assistant verdrahten

Das alles mit Standard Bordmitteln eines Netzwerks bzw. der Synology. Los geht’s!

Home Assistant installieren

Als ich das das erste mal versucht hab, dachte ich: Perfekt, die Synology kann ja docker, ich installier einfach Home Assistant (HA) als docker image. Das steht auch in der offiziellen Dokumentation. Leider funktioniert das aber nicht, da HA selbst ein docker host ist, und die images die man bekommt nicht allein installiert werden können. Da bin ich dann mit einer abgespeckten Version rausgekommen, bei der ich bspw. keine Add-Ons installieren konnte.

Heißt: Wir installieren HA in einer VM.

  1. Loggt euch in euer DSM ein und installiert über das offiziellen Paketzentrum den „Virtual Machine Manager“ (VMM) von Synology
  1. In der VM soll als image ein „Home Assistant OS“ operating system laufen. Es gibt das als fertiges image, ladet das während der VMM installiert im Hintergrund schonmal von der offiziellen Installationsdokumentationsseite von HA runter. Ihr braucht das VMware „.ova“ image.
  2. Öffnet dann im DSM den Virtual Machine Manager einfach über das Startmenü und klickt Virtual Machine -> Erstellen -> Importieren -> Von OVA Datei importieren und wählt die geladene .ova Datei aus.
  3. Bei den Spezifikationen könnt ihr mit diesen Defaults starten (die können später geändert werden falls es euch nicht reicht):
    • Name: beliebig, ich gehe hier mal von „Home Assistant“ aus
    • CPU(s): 2
    • Arbeitsspeicher: 2 GB
    • Grafikkarte: vmvga
    • Festplatte: 32 GB
    • Autostart: Ja
    • Firmware: UEFI
    • Tastatur: de
    • Virtueller USB Controller: USB 3.0
    • Berechtigungen: euren Account
  4. Sobald das Image importiert ist, kann man es im VMM über Virtuelle Machine -> Home Assistant -> Einschalten starten
  5. Neben dem Einschalten Button gibt es noch den Verbinden button, da könnt ihr dann auf einer Shell sehen, wie das Image bootet.

Zu diesem Zeitpunkt habt ihr erfolgreich HA in einer VM auf eurer Synology installiert und ihr könnt die HA Installation bereits über http://homeassistant.local:8123 bzw den Neztwerknamen/die IP eurer Synology mit Port 8123 aufrufen.

Auf die Einrichtung von HA gehe ich hier nicht ein, aber wir machen weiter mit der Einrichtung eines externen Zugangs und eines entsprechenden Let’s Encrypt SSL Zertifikats.

Synology QuickConnect und Synology DDNS für Zugriff mit Dynamischer IP einrichten

Dynamische DNS sind im Home Assistant Context über den Dienstleister Dock DNS in den Tutorials beschrieben, mit Synology Bordmitteln geht es aber mit deutlich weniger Konfiguration.

  1. In eurem DSM, geht auf Systemsteuerung -> Externer Zugriff -> Quick Connect. Folgt der sehr guten Beschreibung dort und richtet eine QuickConnect ID ein.
  2. Im Reiter DDNS stellt sicher, dass ein Eintrag vorhanden ist, der zur QuickConnect ID passt. Bei Hostname muss eurer QuickConnect ID eingetragen sein.

Sobald das eingerichtet ist, benutzt ihr den DDNS (Dynamischen DNS Service) von Synology, der den hostname eurer QuickConnect ID jeweils mit eurer IP verknüpft.

Wenn ihr jetzt noch in eurem Router ein Port Forwarding von Port 5000 auf eure Synology im Netzwerk mit Port 5000 einrichtet, heißt dass, dass ihr danach über https://eure-quick-connect-id.synology.me:5000 von extern auf eure Disk Station zugreifen, auch wenn ihr keine statische IP habt.

Macht das aus Sicherheitsgründen nur, wenn ihr es wirklich benutzen wollt.

Optional: Subdomain für Home Assistant einrichten

Ich persönlich habe eine eigene Domain bei Strato. Ich möchte über eine subdomain bspw. https://homeassistant.domain.de auf meine HA installation auf der Synology zugreifen können. Bei Strato, oder deinem DNS, muss daher eine CNAME Domain eingerichtet werden von: homeassistant.domain.de auf meineQuickConnectID.synology.me. (Achtung, der Punkt am Ende des CNAME Eintrags ist wichtig!)

SSL Zertifikat per Let’s Encrypt einrichten

Wieder im DSM: Systemsteuerung -> Sicherheit -> Zertifikat -> Hinzufügen -> Neues Zertifikat hinzufügen -> Zertifikat von Let's Encrypt abrufen

Dann noch auf Einstellungen -> Konfigurieren und das neue Zertifikat im Dropdown für eure Subdomain auswählen. Dann wird die Synology Anfragen an homeassistant.domaind.de mit dem richtigen Zertifikat beantworten.

Port Weiterleitung im Router erstellen

Die https Verbindung kommt auf Port 443, daher sollte Port 443 im Router so eingerichtet werden, dass er an die Synology durchgeleitet wird. Das geht beispielsweise in einer Fritz Box unter Internet -> Freigeben -> Portfreigaben. Oder in einer Unifi Dream Machine in unter Network -> Settings -> Firewall & Security -> Port Forwarding.

Subdomain und Zertifikat über Reverse Proxy mit Home Assistant VM verknüpfen

Zum jetzigen Zeitpunkt, weiß die Synology noch nicht, was mit einer Anfrage an homeassistant.domain.de zu tun ist. Wir richten jetzt einen sog. Reverse Proxy ein, der bei Anfragen an den https port der Subdomain erstmal das korrekte Zertifikat verwendet („SSL terminiert“) und die Anfrage dann intern weiterleitet an den Home Assistant port der HA VM.

Das geht einfacher als man denkt: Systemsteuerung -> Anmeldeportal -> Erweitert -> Reverse Proxy -> Erstellen und dort beim Hostname der Quelle eure Subdomain eintragen (mit https port 443) und bei Hostname und Port des Ziels den Namen oder die IP eurer Home Assistant VM und Port 8123.

Reverse Proxy in Home Assistant erlauben

Die Standard Konfiguration von HA erlaubt es nicht hinter dem Reverse Proxy zu laufen.

Schaut man über SSH (als Add-On im HA installierbar) im HA log, sieht man eine entsprechende Fehlermeldung:

less /config/home-assistant.log
... [homeassistant.components.http.forwarded] A request from a reverse proxy was received from 192.168.1.50, but your HTTP integration is not set-up for reverse proxies

Um das zu erlauben benötigen wir noch ein paar Schritte.

  1. In HA in der configuration.yaml muss folgender Code Block eingefügt werden. Danach einmal HA über Developer Tools -> YAML -> Check Configuration -> Restart neu starten.
http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 127.0.0.1
    - 192.168.178.0/24
    - ::1
  1. In der Reverse Proxy Konfiguration der Synology müssen noch einige Header Informationen eingerichtet werden, so dass HA die Verbindung korrekt erlaubt. Dafür im Synology DSM: Systemsteuerung -> Anmeldeportal -> Erweitert -> Reverse Proxy -> Eintrag wählen und dann Bearbeiten -> Benutzerdefinierte Kopfzeile. Dort diese Name Value Paare eingeben (auf Groß-/Kleinschreibung achten):
    • X-Forwarded-For -> $proxy_add_x_forwarded_for
    • Upgrade -> $http_upgrade
    • Connection -> $connection_upgrade

Fazit

Wenn alle obigen Schritte befolgt wurden, könnt ihr nun unter https://homeassistant.domain.de eure Home Assistant Installation ohne weitere Port Angabe aufrufen. Die Verbindung selbst ist verschlüsselt, aber da sie natürlich im Internet verfügbar ist, solltet ihr definitiv ein sicheres Passwort wählen und 2FA für den Login einrichten.

Insgesamt gesehen, sind schon ein paar Schritte für die Konfiguration nötig, aber die Synology bietet:

  • Einen einfach zu benutzenden Virtual Machine Manager
  • Einen eingebauten Service für dynamische DNS
  • Mit wenigen Klicks konfigurierbares Let’s Encrypt Zertifikat Handling und den dafür nötigen Reverse Proxy

Sobald man anfängt, das alles auf einem Raspberry Pi installieren zu wollen, ist das definitiv mehr Arbeit und auch wieder mehr Verantwortung verschiedene Services aktuell zu halten.

Viel Spaß beim ausprobieren, schreibt Fragen in die Kommentare.

2 Kommentare

  • Armin

    Hallo,
    genau so eine Beschreibung zur Einrichtung einer Externen Erreichbarkeit meines HA in einer VM auf meiner Synology habe ich gesucht :-).
    Allerdings habe ich kein Strato, sondern nutze den Synology DDNS Dienst (NICHT Quickconnect!).
    Daher meine Frage wie ich ohne die Subdomain dann von extern mein HA aufrufe, das Let’s Encrypt Zertifikat und den Reverse Proxy einrichte.
    Und sind dann die IP’s in dem Eintrag in der Configuration.yaml die richtigen oder müssen diese angepasst werden?
    Vielen Dank schonmal für die weitere Hilfe.

    • christopher

      Hi Armin.
      Der Synology DDNS Service unterstützt direkt Let’s Encrypt Zertifikate.
      Du kannst die über Systemsteuerung -> Externer Zugriff -> DDNS -> Bearbeiten
      und dann Häkchen setzen aktivieren. Dadurch hast du dann einen Zugriff wie beispielsweise „mydevice.synology.me“ der dann ein gültiges Zertifikat hat.
      Wenn Du das hast, solltest Du bei der oben beschriebenen Einrichtung des Reverse Proxies für den Quellen-Hostname mydevice.synology.me und für den Ziel-Hostname deine interne IP der VM eingeben können.
      Dann müssten alle https Anfragen an deine mydevice.synology.me Domain an die HA VM geproxied werden.
      Das sollte keinen Einfluss auf die configuration.yaml haben.

      Der Nachteil bei der DDNS ist natürlich, dass du dann nur den HA über diese Domain ansprechen kannst und nicht noch andere Services, die Du auf der Synology laufen lassen möchtest.

      Sag gerne Bescheid obs geklappt hat 🙂

Eine Antwort schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert