openHAB 2: Installation mit Docker auf der Synology DS
openHAB bietet einen Vielzahl von Möglichkeiten abseits von Alexa und Co, Smarthome bei sich lokal auf einer Synology DiskStation zu betreiben. Auch bei der Installation gibt es verschiedene Herangehensweisen – eine davon wurde bereits hier vorgestellt „openHAB 2: Installation auf der Synology DS„. Allerdings bietet die Installation mit dem Virtualisierungscontainer Docker eine einfachere Möglichkeit das System zu konfigurieren und auf dem neusten Stand zu halten. Da der Container abgekoppelt von den Benutzerdaten liegt, kann das Paket ohne Probleme durch ein Aktuelleres ersetzt werden ohne vorab ein Backup dieser erstellen zu müssen. Durch die Virtualisierung lassen sich so auch die verfügbaren Ressourcen besser einteilen, was vor allem bei leistungsschwächeren Diskstations ein großer Vorteil ist. Welche Art der Installation man im Endeffekt wählt, hängt stark vom Administrator ab. Meinen Erfahrungen nach würde ich auf jeden Fall zur virtualisierten Variante mit Docker greifen.
Voraussetzungen
Leider steht das Paket „Docker“ nicht jeder DiskStation zur Verfügung. Vor allem günstigere Modelle wie J-Serie bietet hier keine Unterstützung und fallen dabei aus dem Rennen. Für all jene Modelle, welche Docker supporten, ist es eine hervorragende Alternative zur umständlichen Paketinstallation. Eine Liste aller unterstützten DS findest du hier: Zusatzpaket Docker
Zusätzlich müssen wir dem Container spezielle Ordner zur Verfügung stellen, in denen die Benutzerdaten von openHAB abgespeichert werden können. Dazu aber später mehr.
Installation
Die Installation von Docker sollte kein großes Problem darstellen. Hierzu muss nur das Paketzentrum aufgerufen und das Keyword „Docker“ eingegeben werden. Nach der Installation begrüßt uns im Hauptmenü bereits der lächelnde Wal. Das Menü von Docker ist sehr übersichtlich gestaltet und vergleichbar mit dem des Virtual Machine Manager von Synology.
Auf einem Blick bekommt man hier alle wichtigen Informationen, wie beispielsweise die Systemauslastung sowie die aktiven Container. Unter dem Reiter „Registrierung“ kann man den openHAB-Container suchen und installieren. Dabei hat man die Wahl zwischen verschiedenen Releases wie latest, milestone oder snapshot. Zu welcher Version man tendiert, hängt auch wieder stark vom Administrator und der eingesetzten Umgebung ab:
- Latest: Bereits ausgiebig getestet, erscheint allerdings daher auch erst etwas später.
- Milestone: wurde ebenfalls getestet, könnte allerdings noch Fehler enthalten. Dafür bekommt man diese Version schon etwas früher.
- Snapshot: Wenig getestet allerdings dafür schnellste Veröffentlichung
In meinem Fall greife ich zum „milestone-debian“ Release.
Ist der Container erst einmal installiert (dürften um die 500MB sein), scheint er im Reiter „Abbild“ auf. Von hier aus findet auch die weitere Konfiguration statt. Dabei kann unter anderem ein Name, sowie die maximalen benutzbaren Ressourcen zugeteilt werden. Zuvor müssen wir allerdings 3 Ordner für die Benutzerdaten von openHAB anlegen. Dazu bietet sich der automatisch erstellte „Docker“ Ordner im „Root“-Verzeichnis an. Einfach die File Station öffnen, in den Ordner Docker browsen und drei neue Ordner mit den Namen addons, conf und userdata anlegen.
Anschließend können wir mit der Konfiguration unseres Containers fortfahren. Das Menü ist dabei relativ selbsterklärend, wichtig ist hierbei nur, dass man die erweiterten Einstellungen aufruft und dort folgende Einstellungen vornimmt:
Unter Netzwerk muss noch der Hacken bei „Dasselbe Netzwerk wie Docker Host verwenden“ gesetzt werden und das war es dann auch schon.
Man kann den Docker Container auch mit einer virtuellen IP im Bridge Mode laufen lassen, allerdings sind dann nicht alle Funktionen gegeben. Beispielsweise sind dann keine Magic Packets (Wakup-on-Lan) möglich.
Abschließend
Dadurch, dass wir die Ordner auf externe Pfade ausgelagert haben, bleiben diese auch bestehen, wenn wir den aktuellen Docker-Container löschen sollten. Das ist jedes Mal der Fall, wenn wir beispielsweise ein Update einspielen möchten. Hierzu löscht man den aktuellen Container, läd die aktuelle Version herunter und konfiguriert diese wie oben beschrieben.
Hallo Kevin
Danke für deine Anleitung sie hat mich extrem weiter gebracht.
Folgends Problem habe ich . Ich kann nun Openhab im Docker laufen lassen und über die Paper UI habe ich nun bereits ein KNX / IP Binding und Thing erstellt.
Leider wird dies aber nicht in den vordefinierten Ordner abgelegt sonder sonst irgendwo.
Es scheint mir als gäbe es da irgendwo noch ein Verzeichnis.
Wenn ich das ganze dann per Text programmiere bringe ich das KNX Binding nicht hin..
Kannst du mir hier weiterhelfen ?
Servus,
das freut mich zu hören!
Wichtiger Fakt, den man wissen muss: Alle Items/Things/… die du über das Webinterface (z.B. PaperUI) erstellst, werden nicht wie gewohnt in einem .item oder .thing File gespeichert. Diese Sachen werden in einer dedizierten jasondb abgelegt. Von daher kann man Dinge, welche man über die GUI erstellt hat, auch nur über die GUI editieren.
Auch wenn es am Anfang schwieriger ist, würde ich dir empfehlen, von Anfang an mit den Text-Files zu arbeiten.
Ich hoffe, ich konnte dir damit weiterhelfen 🙂
Über die WebUI vom Docker bekomme ich ein USB Gerät nicht angebunden oder? (ZWave Stick)
Hallo,
die Frage kann ich dir leider nicht beantworten, da ich den Stick bei mir nicht im Einsatz habe. Allerdings gibt es ein Binding dafür: https://www.openhab.org/addons/bindings/zwave1/
Docker kann grundsätzlich USB Sticks weiterschleifen, von daher kann ich mir schon vorstellen, dass das funktioniert.
Schöne Anleitung, kurz aber alles Notwendige 🙂
Eine Frage zum update, wenn ich items nur via paperui definiert habe, werden diese wohl in der jsondb gespeichert. Wo liegt diese oder anders gefragt sind meine items nach einem docker update von opanHab noch da?
NoTechi
Danke! Da sich die Datenbank im „userdata“ Verzeichnis befindet, bleibt diese nach einem Update bestehen – vorausgesetzt man hat die Mountpoints wie in der Anleitung beschrieben, gesetzt 🙂
Hallo, ebenfalls vielen Dank für diese ersten Schritte … sehr gut beschrieben. Meine Frage wäre wie ich im „Terminal“ weiterkomme … also ssh um z.B. einen Befehl wie „sudo openhabian -config“ abzusetzen (oder ins rules-Verzeichnis zu gelangen …
Servus,
eine Terminalsession kannst du direkt über das Webinterface der Diskstation öffnen. Dazu einfach die Docker Anwendung und den eingeschalteten Container aufrufen und den 4ten Reiter „Terminal“ auswählen. Dort kann dann über „Erstellen“ eine neue Sitzung aufgebaut werden. Das ganze nochmal in einem Screenshot dargestellt:
Ah jetzt ja … ich komme grundsätzlich „rein“ … und sehe, dass hier wohl ein wirklich extrem rudimentäres Betriebssystem läuft … es gibt ja keinen „Editor“ soweit ich das sehe (bei Aufruf von NANO erhalte ich ein „command not found“) … insofern frage ich mich wie hier wirklich „gearbeitet“ werden kann – nur mit der experimentellen Rules-Engine innerhalb der PaperUI …?
uiuiui, beim Verfassen des obigen Posts war ich geistig wohl schon eingeschlafen – natürlich müsste ich NANO auf der Synology installieren und es würde dann auch für den Docker-Container „OPENHAB“ zur Verfügung stehen – also ich gehe zumindst stark davon aus.
Deshalb vielleicht eine andere Frage – ich „fände“ die Openhab-UI „HABMIN“ zur Regelerstellung ganz elegant – hier kann ich aber (vermutlich aufgrund fehlender Schreibrechte) keine Regeln erstellen. Kann sich dies jemand erklären?
Nein, die Docker Container und das Synology OS laufen voneinander unabhängig. Selbst wenn du nano auf der DS installierst, wird es am Container nicht zur Verfügung stehen. Wofür brauchst du denn einen Texteditor?
Die Regeln erstelle ich beispielsweise via Notepad++ auf meinem Windows Rechner direkt im Docker-Verzeichnis. Dort hast du als admin Vollzugriff und kannst ohne Probleme Files editieren. Ansonsten kannst du natürlich auch direkt die verschiedenen openHAB UIs hernehmen, damit sollte es auch kein Problem sein.
Hallo, ich habe scheinbar ein Problem mit der Netzwerkadresse. Wenn ich IP der DS mit :8080 verwende komme ich nur auf die Übersicht der bei mir laufenden Shelly´s – kann bzw soll ich bei der Docker Installation denn Port manuell vergeben ? und wenn ja wie ?
Grüße
Servus,
solange du beim Netzwerk des openHab Containers „Host“ ausgewählt hast, solltest du mit IP:8080 am openHab Webinterface landen. Es kann natürlich sein, dass bereits ein anderer Prozess auf der DS auf den Port 8080 lauscht? Vielleicht irgendein Proxy?
Hallo Kevin,
ich hab versucht nach deiner Anleitung Openhab im Docker laufen zu lassen und meine Konfiguration vom Raspberry zu übertragen. Openhab funktioniert ja, jedoch gehen meine Bindings nicht mehr (HTTP, Modbus), Fehlermeldung no route to host. Hast du eine Idee?
Hallo Geri,
ist mir so leider noch nicht untergekommen, kann dir daher auch nur begrenzt weiterhelfen aber haben die besagten Bindings vielleicht eine statische IP konfiguriert und die IPs vom Raspberry und Docker stimmen nicht mehr überein?
Hallo und ein gutes neues Jahr. „openhub/openhub“ wird bei mir im Docker unter „Abbild“ nicht gefunden. Was mache ich falsch?
Hallo,
danke, dir auch ein Frohes Neues Jahr! Bitte einmal nach „openhab“ suchen, dann solltest du auch etwas finden.
Hallo,
danke.
Auch das habe ich schon versucht, leider tauchen nur die Ergebnisse im Anhang auf.
Hallo,
hast du einen Tipp für mich?
Hallo,
wenn ich nach „openhab“ suche, werden mir folgende Ergebnisse angezeigt. Welche Synology DS verwendest du?
Hallo,
hmm, ich verwende die DS916+ mit DSM 6.2.3-25426 Update 2. Und du?