Anleitung: Home Assistant auf QNAP NAS installieren

In diesem Artikel beschreibe ich, wie sich die Home Assistant Smart Home Plattform über Docker auf einem QNAP NAS installieren und betreiben lässt.

Die Ausgangssituation

Bei vielen Smart Home Produkten gibt es einen gemeinsamen Nenner, der sie in meinen Augen uninteressant macht: die Pflichtanbindung an die Cloud. Nicht nur das Sammeln von Daten über das eigene Zuhause durch einen Dritten, sondern auch die Tatsache, das eine dauerhafte Verbindung zum Cloud-Dienste bestehen muss, damit das intelligente Zuhause (oder Teile davon) richtig funktionieren, waren mir seit Beginn dieser relativ jungen Gerätekategorie ein Dorn im Auge. Ganz zu schweigen von der Tatsache, dass sich die unterschiedlichsten Hersteller ihre eigenen Protokolle und Dienste gebaut haben, die inkompatibler kaum sein könnten. Es musste also eine eigene Lösung her, gehostet innerhalb der eigenen vier Wände.

In diesem Artikel möchte ich zeigen, wie schnell und einfach eine Instanz der Smart Home Plattform Home Assistant auf einem NAS-Server von QNAP via Docker installieren lässt. Für alle, die neu in der Smart Home Welt sind, das wichtigste in Kürze:

NAS – steht für Network Attached Storage. Ursprünglicher Gedanke eines NAS war die Bereitstellung von zentralem Speicherplatz über das Netzwerk, ähnlich einer externen Festplatte mit Netzwerkanschluss. Heutige NAS-Server haben mit diesem Ausgangsgedanken nicht mehr viel gemein. Vielmehr handelt es sich dabei um vollwertige Mini-Server, die vom Videostreaming, über die Datensicherung bis hin zur Ausführung von virtuellen Maschine alles bewerkstelligen können (je nach Hardwareausstattung). In meinem Fall kommt eine QNAP TS-453A Server* zum Einsatz.

Home Assistant – ist ein Open Source Smart Home- und Automatisierungsprojekt, das auf Basis von Python 3 von einer sehr aktiven Community stetig weiterentwickelt wird. Die Kernfunktion von Home Assistant ist als zentrale Schnittstelle zwischen diversen Smart Home-Geräten und -Sensoren zu fungieren. Es löst in gewässerweise die ursprünglich erwähnten Inkompatibilität auf und bietet eine gemeinsame Basis für eine kontinuierliche wachsende Anzahl an Smart Home Geräten. Eine Demo der Home Assistant Oberfläche gibt es auch für alle Interessierten.

Docker – Ist ein Tool, das die sogenannte Containervirtualisierung ermöglicht. Im Gegensatz zu einer vollwertigen virtuellen Maschine werde dabei sogenannte Container verwendet, die getrennt voneinander im Parallelbetrieb aktiv sein können. Verglichen mit herkömmlichen VMs haben Docker Container den Vorteil (wenn richtig umgesetzt) besonders ressourcensparend zu sein. Das ist besonders im Kontext von NAS-Servern interessant, da hier vor allem der Arbeitsspeicher zu meist eine knappe Ressource ist. Entsprechende Container können über das sogenannte Docker Hub bezogen werden. Das wichtigste am Prinzip Docker, was die Technik von anderen VMs unterscheidet: Container sind Wegwerfware. Ja – richtig gelesen, sobald es einen neuere Version des Containers gibt, wird der alte gelöscht oder einfach überschrieben. Innerhalb des Containers befinden sich dabei alle wichtigen Daten (Betriebssystemdateien und die Software selbst), die Konfiguration liegt jedoch irgendwo außerhalb des Containers. Somit lassen sich Container innerhalb weniger Minuten austauschen, ohne das etwas an Konfigurationsdateien geändert werden müsste. Der Docker Container für Home Assistant findet sich ebenfalls im Docker Hub.

Auf geht’s – die Vorbereitung

Werfen wir in Kürze einen Blick darauf, was wir alles benötigen, um Home Assistant auf einem QNAP NAS zum Laufen zu bekommen.

  1. QNAP NAS mit aktuellster Version von QTS
  2. Aktuellste Version der Container Station App ist auf dem NAS installiert (= die Benutzeroberfläche von QNAP für den Docker-Unterbau)
  3. SSH-Zugriff ist auf dem NAS aktiviert (findet sich bei den FTP-Einstellungen)
  4. Ein SSH-Client, wie Putty unter Windows oder die Konsole unter Mac OSX / Linux Distributionen

In der folgenden Anleitung verwenden wir eine SSH-Verbindung, um auf die Konsole des QNAP NAS* zuzugreifen. Dieses ermöglicht, die sehr schnelle und einfache Einrichtung des Docker-Containers, mit nur einem Befehl. Theoretisch lässt sich der Container auch über die Oberfläche der Container Station installieren, das dauert aber deutlich länger und ist nur mühsame Klickerei.

Home Assistant Installation Schritt für Schritt

Schritt 1: Via Konsole oder Putty eine Verbindung zu dem NAS via SSH herstellen. Dazu einfach die IP des NAS zusammen mit euren Administrator-Anmeldedaten eingeben. Unter Mac OSX funktioniert dazu ganz einfach:

MacBookPro:~ user$  ssh adminnutzer@NAS-IP-Adresse

Schritt 2: Den Docker Container herunterladen und aktivieren. Das passiert alles mit einem einzigen Befehl, den wir uns im Folgenden zunächst einmal genauer ansehen wollen:

[~] # docker run -d --name="home-assistant" -v /share/Container/homeass:/config --privileged -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant:latest python -m homeassistant --config /config

-d: detached mode: lässt den Container im Hintergrund starten und weiterlaufen, auch wenn die SSH-Verbindung geschlossen wird. Steuern lässt sich der Container dann ab dem Zeitpunkt der Einrichtung ganz normale über die Container Station App.

–name: Name des Containers. Logisch. Wer das frei lässt, bekommt vom QNAP NAS einen lustigen Namen zugewiesen. Ich würde einen eigenen Namen setzen.

-v /PFAD_AUF_DEM_NAS:/config: Pfad zum Ordner mit den Konfigurationsdateien. Wird erstellt, sofern er nicht existiert. Sollte das nicht klappen, einfach vorab einen Ordner über QTS anlegen!

-v /etc/localtime:/etc/localtime:ro: Einbindung der aktuellen NAS-Uhrzeit als Zeitreferenz für den Container.

–net=host: Ausführen des Containers im Host-Mode. Hierdurch wird der Container über dieselbe IP wie das NAS selbst angesprochen und kann auf alle Ports zugreifen. Wer das nicht will, kann auch den Bridge-Modus wählen und spezielle Ports zuweisen. Da das NAS aber im Regelfall hinter einer Firewall hängt und die verschiedenen Smart Home-Geräte die exotischsten Ports nutzen, ist die host-Option die praktikablere Lösung.

homeassistant/home-assistant:X.XX.XX ODER homeassistant/home-assistant:latest: Die Angabe zum Docker-Container Name im Docker Hub mit Versionsangabe. Anstatt die genaue Version anzugeben (die aktuellste findet sich immer im Docker Hub in der Spalte „Tag“), kann auch :latest verwendet werden. Das hat aber einen Nachteil – dazu unten mehr.

Restlicher Code: Startet den Container mit externer Konfigdatei, wie vorab festgelegt.

Schritt 3: Code anpassen und ausführen. Der Code aus Schritt 2 sollte so laufen und die aktuellste Container-Version herunterladen, installieren und starten. Ich rate euch aber dazu, die Parameter entsprechend eurer Bedürfnisse (Pfad zum Config-Verzeichnis) anzupassen. Enter startet den Prozess. Es erscheint die folgende Meldung, danach startet der Download.

Unable to find image 'homeassistant/home-assistant:0.71.0' locally
0.71.0: Pulling from homeassistant/home-assistant

Schritt 4: Nach wenigen Minuten sollte Download und die Extraktion des Containers abgeschlossen sein (je nach Leistung des NAS und der Internetleitung).  In der Konsole erscheint dann eine Nachricht im folgenden Format:

Digest: sha256:82fed5f17072d0ab6985b65f9d114cb0d6b64ca59c14a8e6e44ef7bd5ae3b85c
Status: Downloaded newer image for homeassistant/home-assistant:0.71.0
0a47a540441c3f5cde691d00973fd31db9c663ec5edea7ea7b13e34d3f455760

Ab sofort seht ihr den Container in der Container Station App im QTS Frontend und könnt ihn von hier auch starten und stoppen sowie löschen.

QNAP Container Station - Home Assistant

Fertig! Ab sofort steht euch eine Home Assistant Instanz auf eurem NAS* zur Verfügung.

Schritt 5: Das könnt ihr auch direkt ausprobieren und die Web-Oberfläche aufrufen. Dazu einfach http://NAS-IP-Adresse:8123 in den Webbrowser eingeben (vorausgesetzt euer Gerät ist im lokalen Netzwerk eingebunden) und schon sollte ihr die Home Assistant Oberfläche mit dem Standardinhalten sehen.

Home Assistant Docker Container updaten

Da sich Home Assistant dauernd weiterentwickelt, ist die Integration über Docker nahezu perfekt geeignet. So lässt sich sehr schnell zwischen Versionen hin und her wechseln, um Dinge zu testen. Im Folgenden daher noch der schnelle Weg zum Update des Containers auf die neuste Version.

Schritt 1: Alte Instanz des Containers löschen.

Dazu in die Container Station App wechseln und zunächst den Container stoppen. Danach mit einem Klick auf das kleine X in der rechten Spalte den Container löschen – keine Angst eure Konfiguration liegt ja außerhalb des Containers und ist davon nicht betroffen. Löschdialog bejahen. Danach dauert es einen Moment und der Container verschwindet aus der Liste.

Schritt 2: Neuen Container per SSH installieren.

An dieser Stelle möchte ich kurz auf einen weiter oben gegeben Hinweis eingehen. Meiner Erfahrung nach, verhält sich die Container Station nicht besonders intelligent, wenn Container mit der Versionsoption „latest“ hinzugefügt werden. Das NAS findet dann bei einem erneuten Hinzufügen immer einen Container „latest“ von letzten Mal, anstatt den aktuellesten Container aus dem Docker Hub zu beziehen. Um dies zu verhindern und sich die Möglichkeit offen zu halten, schnell zwischen Container-Versionen zu wechseln, empfehle ich die manuelle Angabe der gewünschten Versionsnummer (siehe oben).

Ausgehend davon, dass wir zuvor eine manuelle Versionsangabe bei der Initialinstallation angegeben hatten (z.B. 0.70.1), die dann in Schritt 1 des Updates entfernt wurde, installiert folgender Befehl die neuere Version 0.71.0 von Home Assistant.

docker run -d --name="home-assistant" -v /share/Container/homeass:/config --privileged -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant:0.71.0 python -m homeassistant --config /config

Es wird erneut der Container heruntergeladen und entpackt. Danach startet Home Assistant von alleine und alles sollte laufen – jetzt mit der aktuellsten Version des Projektes.

Downgrade des Home Assistant Docker Containers

Der aufmerksame Leser wird es sich bereit denken können.

Schritt 1: Container in der Container Station stoppen und löschen

Schritt 2: Container mit alter Versionsnummer per SSH hinzufügen. Das passiert nun innerhalb weniger Sekunden, weil der alte Container ja immer noch lokal vorhanden ist. Ihr habt in Schritt 1 nur die konkrete Instanz gelöscht, nicht jedoch die Container-Daten. Wer das explizit tun möchte, kann dieses über die Container Station erledigen (Menüpunkt Images).

Schlusswort

Wer das Prinzip von Docker einmal verstanden hat, wird es bald nicht mehr missen wollen. Home Assistant lässt sich damit ganz leicht pflegen und stets aktuell halten. Auch die integrierte Konsole der Container Station ist ein klasse Tool, um Fehlern auf die Schliche zu kommen. Wenn ihr Fragen oder Anregungen habt, freue ich mich natürlich auch eure Kommentare 🙂

5 Gedanken zu „Anleitung: Home Assistant auf QNAP NAS installieren

  • Januar 23, 2019 um 1:10 pm
    Permalink

    Hallo Nils,

    vielen Dank für deine ausführliche und wirklich guten Anleitung. Mit dessen Hilfe konnte ich auf Anhieb einen Docker Container mit der aktuellen Version von Home Assistant aufsetzen. Jetzt frage ich mich, wie man nun Geräte / Sensoren, die mit Z-Wave oder ähnliche drahtlosen Standards kommunizieren. mit Home Assistant verheiraten kann. Ich stelle mir das so vor, dass in das Qnap NAS ein Z-Wave USB Stick gesteckt wird, welcher dann zum Home Assistant Container durch gereicht wird. Hast du damit schon zu tun gehabt und kannst du ggf. deine Erfahrungsberichte teilen?

    Gruß
    Martin

    Antwort
    • Februar 4, 2019 um 4:01 am
      Permalink

      Hallo Martin,

      vielen Dank für dein nettes Feedback! Das mit Z-Wave funktionier genau so, wie du es beschrieben hast. Du musst später nur dem Docker Container Zugriff auf das USB-Gerät geben. Das geht ganz einfach über die Container Station nachdem du den Container erstellt hast. Ich selber nutze leider jedoch kein Z-Wave, daher habe ich das aber noch nicht genauer betrachtet. 🙁

      Viele Grüße,
      Nils

      Antwort
  • Februar 25, 2019 um 2:52 pm
    Permalink

    Hallo Nils,

    noch mal danke für deine Antwort. Mit Hilfe deiner Installation sind jetzt mittlerweile vier Wochen vergangen und meine Home Assistant Instanz entwickelt sich prächtig. Bei der Individualisierung des Systems stolpere ich immer wieder über Pfade der Installationen, die ich in meinem Docker nicht finde. Da geht es zum Beispiel um das Hinzufügen von Json Dateien oder Grafiken in einem www bzw. local Ordner. Wenn ich zu diesem auf meiner QNAP browse, komme ich natürlich nicht zum entsprechenden Verzeichnis des Dockers.

    In den anderen Docker Images, die ich mal getestet habe (OpenHAB, IObroker etc.) kann in der Docker Station auf Console klicken und bin dann auf der Konsole des entsprechenden Dockers. Das funktioniert bei dem HA Docker seltsamerweise nicht. Der Cursor blinkt zwar kurz auf, aber auf Eingaben reagiert der Terminal nicht. Wenn ich mich per SSH auf meine QNAP verbinde, sehe ich unter den mountpoints /share/CACHEDEV1_DATA/Container/container-station-data/lib/docker/%DOCKERIDs“ mehrere Docker Images (nehme ich mal an) und habe darin eine „normale“ Linux- Verzeichnisstruktur. Wo befindet sich jetzt genau die Home Asstant Installation, also der Webserver? Gruß Martin

    Antwort
    • Februar 26, 2019 um 10:11 am
      Permalink

      Ich glaube, ich habe es gefunden. Ich habe den Ordner www „einfach“ im gleichen Verzeichnis erstellt, in denen sich auch die ausgelagerten Config- Dateien befinden.

      Antwort
      • Juni 15, 2019 um 8:14 am
        Permalink

        Das ist genau richtig.:) Für deinen Docker-Container ist das Config-Verzeichnis das Root-Verzeichnis. Dort müssen alle Ordner und weiteren Dateien rein.

        Grüße,
        Nils

        Antwort

Schreibe einen Kommentar

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