IoBroker unter Docker auf der Synology DiskStation

Kurze Einleitung

Nachdem meine ioBroker-Installation mit der Zeit immer weiter gewachsen ist und damit auch immer ressourcenhungriger wurde, reichten mir RaspberryPi und Cubietruck bald nicht mehr aus. Ich brauchte eine neue, leistungsfähigere Lösung.

Zum Glück hatte ich mir kurze Zeit vorher bereits eine DiskStation 1515+ von Synology zugelegt um meinen alten Linux-Server (mit all seinen Datei- und Medien-Diensten, sowie dem TV-Server) abzulösen. Also kurzerhand den Arbeitsspeicher der DS auf 6 GB aufgerüstet und… ja, Problem. In der neuen Version 6 des DSM war die Installation von VirtualBox (welches ich auf meinem Server genutzt hatte) nicht mehr möglich. Man konnte also keinen virtuellen ioBroker Server auf der DS laufen lassen. Das Aus für meinen Virtualisierungsplan? Nein.

Eine kurze Recherche mit den Stichworten “Virtualisierung” und “Synology” später stieß ich auf das Projekt Docker. Docker ist eine Virtualisierungsplattform, welche einen etwas anderen Ansatz verfolgt als vmWare, VirtualBox oder MS Hyper-V. Unter Docker werden nicht mehr ganze virtuelle Server erstellt, sondern lediglich sogenannte Container, die alle notwendigen Daten enthalten um eine einzelne Anwendung oder einen einzigen Dienst zum Laufen zu bekommen und zur Nutzung bereitzustellen. Diese Container werden, teilweise bereits fertig konfiguriert, als Images zum Download bereitgestellt.

Hinweis: Weitere Infos zu Docker hier (docker.com) oder hier (Wikipedia)

Also habe ich mich ein wenig in das Thema eingelesen und ein paar Tests gemacht. Ein ioBroker-Docker-Image gab es zwar schon, allerdings hatte ich hier einige Probleme benötigte Pakete für einzelne Container nach zu installieren. Ich wollte etwas was sich leichter administrieren lässt, also näher an einer virtuellen Maschine ist. Beim Durchwühlen verschiedenster Docker-Tutorials stolperte ich irgendwann über das Debian-Image. Einige Tests später stand fest: Es verhält sich in etwa so, wie eine Debian-Installation (z.B. Raspbian) auf dem RaspberryPi. Nachdem ich dann noch verstanden hatte, wie das mit dem Dockerfile funktioniert, dachte ich mir: So ein Image erstellen kannst du auch.
Gesagt, getan. Hier probiert und da getestet und letztendlich das Resultat auf Github und im Docker Hub veröffentlicht.

Wer sich also für den Quellcode interessiert, der wird auf Github fündig. Wen nur das fertige Image interessiert, der ist im Docker Hub gut aufgehoben.

Nun Gut, da ich meine Bastelei nicht für mich behalten wollte, habe ich ein entsprechendes Thema im ioBroker-Forum erstellt. Leider ist so ein Thread nicht unbedingt zur Dokumentation einer solchen Lösung geeignet. Daher jetzt hier einmal die offizielle Anleitung zu meinem ioBroker-Docker-Image. Falls du Probleme hast, oder Unterstützung benötigst, nutze gerne die Kommentare oder den Thread im ioBroker-Forum. Ich lese beides. 🙂

Der Übersichtlichkeit halber habe ich meine Anleitung hier auf mehrere Seiten verteilt. Das Inhaltsverzeichnis befindet sich immer am Seitenanfang, aber das hast du ja sicher schon gesehen…

Überarbeitung am 10.12.2017

Aufgrund kleinerer Probleme mit dem Docker Image musste ich einige Änderungen vornehmen. Hierdurch hat sich auch das Tutorial geringfügig geändert. So sind zum Beispiel die Befehle „iobroker stop“ und „iobroker start“ nur noch begrenzt nutzbar. Weiterhin ist es ab sofort möglich verschiedene Versionen des Docker Images herunter zu laden. Entsprechende Hinweise zu den Veränderungen finden sich an der jeweiligen Stelle im Tutorial.

Überarbeitung am 21.08.2018

Aus den bisherigen Diskussionen und Kommentaren habe ich einen kleinen Troubleshooting-Guide erstellt der neben häufig auftretenden Fehlerbildern auch wichtiges Basiswissen zu ioBroker, Docker & Co beinhaltet. Das Troubleshooting habe ich als zusätzliche Seite an den Artikel angehängt und werde es bei Bedarf entsprechend erweitern.

Überarbeitung am 05.12.2018

Mit dem heutigen Update des Docker-Container-Images auf Version 2 wurde die verwendete Node-Version auf node8 angehoben. Auf Neuinstallationen hat dies keine Auswirkungen, wohl aber auf Updates bestehender Installationen von vor dem 05.12.2018. Nach dem Wechsel der Node-Version muss nämlich innerhalb des ioBrokers das Script „reinstall.sh“ ausgeführt werden, um die Installierten Adapter mit Node8 verwenden zu können. Mehr Informationen dazu gibt es in der offiziellen ioBroker Dokumentation.

Überarbeitung am 12.12.2018

Nachdem es in der Vergangenheit häufiger Verwirrung um den „tar“-Befehl gab, habe ich heute den entsprechenden Abschnitt einmal überarbeitet und den bösen Parameter „-P“ aus dem Spiel genommen. 🙂 Leider hat es mir dabei ein bisschen mein Beitragslayout zerschossen. Wer also seltsame Sonderzeichen an Stellen findet, wo diese nicht hin gehören, darf sich gerne mal bei mir melden. Danke!

About the author: André

André
Familienvater und bekennender Technik-Nerd. Beruflich unterwegs als Fachinformatiker für Systemintegration bei einem deutschen IT-Dienstleister. In der Freizeit begeisterter "Home-Automatisierer" bzw. "Smarthome-Bastler" und (zumindest bei schönem Wetter) gerne mit der Familie in verschiedenen Outdooraktivitäten unterwegs.

204
Hinterlasse einen Kommentar

avatar
10000
69 Kommentare
135 Antworten
14 Abonnenten
 
Meiste Antworten
Beliebtester Kommentar
68 Kommentatoren
OliverAndréChristian WimmerMarcBenny Letzte Kommentatoren
  Abonnieren  
Benachrichtige mich zu:
Oliver
Gast
Oliver

Auch mein SQL-Adapter läuft nicht. kann jemend helfen und mir sagen was zu tun ist? host.ioBroker 2019-04-11 11:17:48.912 error instance system.adapter.sql.0 terminated with code 1 () host.ioBroker 2019-04-11 11:17:48.912 error Caught by controller[0]: at Module.load (module.js:566:32) host.ioBroker 2019-04-11 11:17:48.912 error Caught by controller[0]: at Object.Module._extensions..js (module.js:664:10) host.ioBroker 2019-04-11 11:17:48.912 error Caught by controller[0]: at Module._compile (module.js:653:30) host.ioBroker 2019-04-11 11:17:48.912 error Caught by controller[0]: at Object. (/opt/iobroker/node_modules/mmmagic/lib/index.js:1:75) host.ioBroker 2019-04-11 11:17:48.912 error Caught by controller[0]: at require (internal/module.js:11:18) host.ioBroker 2019-04-11 11:17:48.912 error Caught by controller[0]: at Module.require (module.js:597:17) host.ioBroker 2019-04-11 11:17:48.912 error Caught by controller[0]: at Function.Module._load (module.js:498:3) host.ioBroker 2019-04-11 11:17:48.912 error… Mehr lesen »

Oliver
Gast
Oliver

Wo werden die Befehle ausgeführt? Ich habe keine Ahnung wo ich diese eingeben soll.

cd /opt/iobroker
pkill io
iobroker host this (bei multihostsystemen: iobroker host [hostname der ds])
node node_modules/iobroker.js-controller/controller.js >/opt/scripts/docker_iobroker_log.txt 2>&1 &

Marc
Gast
Marc

Hallo Andre,
irgendwie ist es nicht möglich den SQL-Adapter zu starten, ist das Problem bekannt? Mein LOG zeigt folgendes an:
host.iobroker 2019-04-02 19:50:08.987 error instance system.adapter.sql.0 terminated with code 1 ()
Caught 2019-04-02 19:50:08.987 error by controller[0]: at Module.load (module.js:566:32)
Caught 2019-04-02 19:50:08.987 error by controller[0]: at Object.Module._extensions..js (module.js:664:10)
Caught 2019-04-02 19:50:08.987 error by controller[0]: at Module._compile (module.js:653:30)
Caught 2019-04-02 19:50:08.987 error by controller[0]: at Object. (/opt/iobroker/node_modules/mmmagic/lib/index.js:1:75)
Caught 2019-04-02 19:50:08.987 error by controller[0]: at require (internal/module.js:11:18)
Caught 2019-04-02 19:50:08.987 error by controller[0]: at Module.require (module.js:597:17)
Caught 2019-04-02 19:50:08.987 error by controller[0]: at Function.Module._load (module.js:498:3)
Caught 2019-04-02 19:50:08.987 error by controller[0]: at tryModuleLoad (module.js:506:12)
Caught 2019-04-02 19:50:08.987 error by controller[0]: at Module.load (module.js:566:32)
Caught 2019-04-02 19:50:08.987 error by controller[0]: at Object.Module._extensions..node (module.js:682:18)
Caught 2019-04-02 19:50:08.987 error by controller[0]: Error: /opt/iobroker/node_modules/mmmagic/build/Release/magic.node: wrong ELF class: ELFCLASS32
Caught 2019-04-02 19:50:08.987 error by controller[0]: ^
Caught 2019-04-02 19:50:08.987 error by controller[0]: return process.dlopen(module, path._makeLong(filename));
Caught 2019-04-02 19:50:08.986 error by controller[0]: module.js:682

Benny
Gast
Benny

Hallo Andre,
sehr gutes Projekt. Leider habe ich bei der Konfiguration von mariaDB ein Problem. Leider weiß ich nicht warum er über den falschen Pfad schimpft und wie ich es lösen kann. Hast du eine Idee?

root@buanet-iobroker1:~# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‚/var/run
/mysqld/mysqld.sock‘ (2 „No such file or directory“)

Christian Wimmer
Gast
Christian Wimmer

Hallo Andrè!
Ich finde nirgends das Verzeichnis /root/.npm/_logs/
Ist dies im Docker wo versteckt?
Danke

Glenn
Gast
Glenn

Hallo ! Leider habe ich jetzt schon zum zweiten mal das ich erst den IOBroker super zum laufen bekommen habe. Ich installiere Adapter und nach und nach richte ich das System ein. Er stelle mit dem Editor eine Test seite die dann auch gut läuft. Dann pötzlich komme ich nicht mehr den Admin zum laufen. Meistens wenn ich mit dem Editor rumspiele und der dann nicht mehr reagiert. Das System wird furchbar langsam. Ich starte im Docker den Container neu und danach ist der Admin nicht mehr zu ereichen. WEB VIS und EDITOR sind noch erreichbar. Nur der admin über… Mehr lesen »

Sascha Wallenkewitz
Gast
Sascha Wallenkewitz

Hallo den Iobroker habe ich schon mal zum laufen gebracht. Jetzt möchte ich den Conbee Stick von Dresden Elektronik auch in einem Container installieren, komme da aber nicht wirklich weiter. Hat vielleicht jemand eine Idee wie ich das bewerkstelligen kann?

Christian Wimmer
Gast
Christian Wimmer

Hallo

Ich wollte gerade über das Terminal einen Adapter Upload machen.
Bekomm aber den Fehler dass der Hostname ioBroker nicht aufgelöst werden kann.

Kannst du mir bitte weiterhelfen?

PS: installiert hab ich ioBroker genau nach deimen tollen Tutorial.

PPS:
root@ioBroker:/opt/iobroker# iobroker upload javascript
sudo: Hostname ioBroker kann nicht aufgelöst werden
module.js:478
throw err;
^
Error: Cannot find module ‚/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js‘
at Function.Module._resolveFilename (module.js:476:15)
at Function.Module._load (module.js:424:25)
at Module.runMain (module.js:611:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:160:9)
at bootstrap_node.js:507:3

Frank
Gast
Frank

Stromverbrauch – Hat jemand Erfahrung ? Ich habe eine DS218+ (+ Extra Ram) und Messe bei Belastung > 18 Watt was im normalen Bereich liegt. MIt dem iobroker Docker (Historian loggt mit) – habe ich einen kontinuierlichen Verbrauch von 17 Watt, die Ds218+ geht nicht mehr in den Ruhestand – wenn ich den Iobroker Docker rausnehme, dann komme ich auf 9 Watt (etwas hoch, aber ok). Das gleiche passiert übrigens wenn ich von meinem alten System mit dem Synolgy Adapter die Werte abfrage. Hat jemand das schon mal beobachtet ?

Frank
Gast
Frank

Hi, vielen Dank für die tolle Anleitung. Ich bin von einem Cubietruck auf die DS218+ umgezogen (10 GB Ram). Im Prinzip bin ich der Anleitung gefolgt. Ich habe das Verzeichnis aus dem Docker ausgelagert, komplett gelöscht und mit Filezilla (SFTP) das gesamt Verzeichnis /opt/iobroker von meinem Cubietruck hochgeladen (beim einfachen überschreiben hatte ich Probleme). Dann habe ich die Fehlermeldung bekommen, dass keine Verbindung zum Redis Server möglich ist – ich habe das zunächst im Iobroker Docker mit apt-get install redis-server versucht, aber die Installation hat kein Erfolg gebracht. In einem neuen Docker habe ich Redis installiert – gestartet und es… Mehr lesen »

Fugazzy
Gast
Fugazzy

Hallo, vielen Dank für die Pflege dieses tollen Docker-Containers.
Ich habe gerade gelesen, dass nur noch bridged Netzwerke unterstützt werden, aber extra für yahm auch avari eingebaut wird.
So wie ich es bisher verstanden habe, muss man für HomeKit/Homebridge zwingend das host-Netz verwenden?
Ich nutze in meinem iobroker den HAM-Adapter, um meine Homebridge mit einzubinden.
Funktioniert das nun noch?

Steven
Gast
Steven

Hi André, ich bin deiner Anleitung auch wunderbar gefolgt und folgen können:) Erstmal zum Problem, ich komme nicht mehr auf mein iobroker.admin rauf. Er arbeitet im Hintergrund noch nur die Web-Oberfläche lässt sich nicht mehr auf rufen. Bin bei Google auch schon alle Möglichkeiten die zu finden sind durch gegangen. —————————————————- z.B. cd /opt/iobroker npm i https://github.com/ioBroker/ioBroker.admin cd node_modules/iobroker.admin npm i gulp gulp node_modules/.bin/gulp und hier wollte er „npm i gulp“ nicht ausführen (Kommando nicht gefunden) dann habe ich npm i https://github.com/ioBroker/ioBroker.admin npm i https://github.com/ioBroker/ioBroker.admin/tarball/master ls -la node_modules/iobroker.admin cd node_modules/iobroker.admin npm i gulp node_modules/.bin/gulp (ging nicht richtig) npm install node_modules/.bin/gulp… Mehr lesen »

Ingo
Gast
Ingo

Hallo André, vielen Dank für die Anleitung. 1. Ich habe mit scripts keine Erfahrung. 2. Ich habe den Docker manuell auf meiner 416play installiert. 3. Die Installation bis zur Übertragung auf die DS hat funktioniert. Ich kann den iobroker über IP:8081 öffnen. 4. Aus- und wieder Einschalten zeigt eine Änderung des Logs in der file station der DS. Ich denke also das passt so weit? 5. Das backup funktioniert leider nicht. Was mache ich da falsch. 6. Ich habe das script in note++ kopiert und als backupscript.sh gespeichert. 7. Dann über den Aufgabenplaner einen task erstellt und diesen zum Test… Mehr lesen »

Daniel
Gast
Daniel

Hallo Andre,
deine Anleitung ist super und hat mir im vergangenen Jahr perfekt geholfen um meinen ioBroker vom PI in den Docker Container umzuziehen. Nun würde ich gerne auf die Version 2 umsteigen, damit einige neue Adapter damit laufen. Leider klappt das nicht so wie gewünscht. Ich habe schon versucht aus den einzelnen Seiten meine Infos zu entnehmen, aber eine echte „Upgrade“ Anleitung wäre da sehr hilfreich. Gerade auf die Basis deiner Grundinstallation bezogen. Ich denke da werden einige danach suchen.
Gruß
Daniel

Dirk
Gast
Dirk

Erstmal LOB! Sieht nach einem gut gepflegten repo aus. werde iobroker mal testen und wollte es in docker realisieren. wechsel von fhem, mal schauen was das taugt.
Test: wird auf nen Raspberry erfolgen.

werde berichten

Grüße DIrk

Nils
Gast
Nils

Hallo Andre,

danke für die Ausführliche Anleitung.
Ich habe ein Problem mit dem Backup.
Dieses wird erstellt aber die Archiv Datei ist leer.
Das Script wird auch ohne Fehler abgearbeitet.

Hast du eine Idee?

Gruß Nils

Sascha
Gast
Sascha

Hallo Andre,
ich habe dein Tutorial durchgearbeitet. Alles klappt super. Tolle Arbeit !!!!
Mir bleibt eine Frage zur Backupwiederherstellung offen. Ich habe in deinem Tutorial den Part mit dem Umzug auf ein neues System ausgelassen, weil ich das nicht brauchte. Warum soll der weg des BAckup-Wiederherstellens so „umständlich“ sein.
Erst in den Transferordner dann in den Zielorder entpacken , das noch über Kommandozeile….
Denke ich gerade falsch oder kann ich nicht „einfach“ direkt in der Filestation vom Backup Order in den ioBroker Ordner entpacken (den wir ja auf die DS „ausgelagert“ haben) ?

Danke und Gruß!
Sascha

Marc
Gast
Marc

Hallo,
ich habe eine eigentlich generelle Frage. Ich habe eine DS1817+ mit 8GB und dort ist standardmäßig schon der Synology Virtual Machine Manager installiert, in dem ich auch eine WinVM laufen habe. Nun meine eigentliche Frage: Kann ich das Image für Docker auch direkt in die VM einbinden ? Ist die Synology VMM eine neuere Version von Docker, oder ist es etwas komplett anderes ?

Michael
Gast
Michael

Hi André, habe IoBroker auf einer DS2413+ laufen (2GB RAM). Das läuft total langsam und hängt sich ab und an auf. Gibt es eine Beschränkung was die Anzahl Prozesse/Instanzen angeht? Habe ich auf der DS was falsch konfiguriert?

Viele Grüße Micha

Pahan
Gast
Pahan

Kurze Frage :
Wenn ich zur Auswahl hätte (bzw. habe) den iobroker neu zu installieren, auf der DS216 oder dem raspi2. Wo würde es am ehesten machen? Was würdet ihr empfehlen?
Vorkenntnisse zu iobroker sind leider keine vorhanden. Minimale Kenntnisse zu dashui vorhanden.

Besten Dank im Voraus
Pahan

Christof
Gast
Christof

Hi,
Dein Docker Container läuft nun seit Monaten super!
Ich habe noch eine Frage zu Deinem Update: Welchen Vorteil bietet das Update auf node8?

Danke
Christof

Matze
Gast
Matze

Für diejeningen, die in Kombination mit IoBroker und Synology auch Homematic betreiben:
Damit die Homematic-Adapter über IOBroker angesprochen werden können, muss bei den hm-rpc-Instanzen als Adapter Callback Adresse die IP der Synology eingetragen werden… außerdem müssen die Ports, über die die Homematic-Adapter laufen (2002 und 2010) ggf. in der Firewall der Synology erlaubt sein.
(Hat mich leider nen ganzen Tag gekostet, bis ich drauf gekommen bin, dass es nicht an der CCU liegt)

Martin
Gast
Martin

Hallo André, danke für deine tolle Dokumentation. Habe mittlerweile einen laufenden ioBroker Container auf meiner DS918+. Jetzt war die Datensicherung an der Reihe, Skript erstellt kopiert und gestartet. Leider wurde der Container nicht gestoppt und erneut gestartet. Der Log ergab „permission denied „. Mit Sudo ging es, leider aber nur mit PW Eingabe.

Hast evtl. einen Tipp für mich wie ich das ändern könnte, da so ein automatiesiertes Backupnicht möglich ist.

Danke und schönes WE.
Martin

Hinweis: sudo usermod -a -G docker $USER –> command not found

Claas
Gast
Claas

Hallo André, wirklich tolle Anleitungen hier! Ich bin total begeistert, da Du alles wirklich anschaulich und einleuchtend erklärst. Danke schon mal dafür!! Gerade habe ich ioBroker im Docker installiert, da ich mit meiner noch kleinen Hausautomatisierung von FHEM auf einem Raspi jetzt auf ioB auf meine Diskstation (ds218+ mit 10GB RAM / 10TB HDD) umziehen möchte. Jetzt habe ich allerdings ein weiteres Problem. Ich möchte meinen Eigenbau nanoCUL für die Steuerung einiger 433MHz Steckdosen nutzen. Wenn ich diesen der DS in USB einstecke wird er (natürlich?!) nicht erkannt. Was kann ich tun, damit der nanoCUL im ioB über USB einen… Mehr lesen »

Ronald
Gast
Ronald

Hallo André,

vielen Dank für die Anleitung … der Umzug von Raspi auf Synology Docker war einwandfrei.
Ein Problem das ich jetzt noch habe… ich hab ein Multihost-System. Der „Slave“ wird im Admin als Offline angezeigt.
Auch sind die entsprechenden Adapter nicht „grün“.

Kannst du mir sagen was ich noch tun muss, damit der Slave wieder läuft?

gruß Ronald