NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
@hetti72 Sehr gut beantwortet. Das wurde hier sogar schon diverse Male besprochen.
@gutgut30 Ich würde sogar noch einen Schritt weiter gehen: Sofern nichts dagegen spricht lasse doch dein Redis einfach auch in einem Container laufen und verbinde die beiden Container über das angesprochene zusatzliche bridge Netzwerk...
MfG,
André -
@hetti72
Ahhhhj, tatsächlich. Da muss man mal drauf kommen. Mit den Suchworten habe ich dazu auch was gefunden. Danke!!!@andre
Ich hatte versucht redis im ioBroker Container zu installieren, das ging nicht.
Also bin ich auf den Host ausgewichen.
Wenn ich dich richtig verstehe:
Einen weiteren Container einrichten der „nur“ redis beinhaltet?
Kannst du mir evtl die Vorteile dieser Lösung nennen? Ich bin absolut neu im Docker Bereich und möchte es für mich natürlich soweit wartbar haben. -
@gutgut30 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Einen weiteren Container einrichten der „nur“ redis beinhaltet?
Ja genau. Ich glaube es gibt auch solche Container (fertig).
Kannst du mir evtl die Vorteile dieser Lösung nennen? Ich bin absolut neu im Docker Bereich und möchte es für mich natürlich soweit wartbar haben.
Ich bin auch relativ neu in Docker, aber die Doktrin lautet wohl: Für jede Aufgabe, jeden Server, jedes Programm einen eigenen Container. Und diese untereinander über definierte Schnittstellen sprechen lassen. So sind die Aufgaben klar voneinander getrennt und du kannst die einzelnen Teile auch separat voneinander austauschen oder updaten. Und sie beeinflussen sich nicht negativ, wenn in separaten Containern aufgeteilt.
-
Halleluja, kompliziert, aber hat geklappt. Wenn man es dann geschafft hat, checkt man es auch.
Es gibt fertige Redis-Container. Die lassen sich auch mit
--appendonly yes
starten sowie einem Volume auf dem Host. Dazu die Bridge, die nur den IP Bereiche braucht:
172.18.0.0/24
Und die Bridge dem Redis als auch dem ioBroker connecten. Und schon finden sich die zwei.
Der ioBroker Container hängt zwar nun schon seit 15 Min bei
ioBroker backup file detected in /opt/iobroker. Restoring ioBroker...
aber ich lasse ihn mal machen. Evtl. muss man auch einfach die Netzwerkdevices in anderer Reihenfolge attachen. Ist irgendwie doof, dass man in der Config nicht gleich alle gewünschten Netzwerke setzen kann.
Ich habe mit der Bridge zum Start angefangen und auch die ENV (redis, ip, port) dazu gesetzt, den MACVLAN dann nach dem Start ergänzt.
Vielleicht ist es schlauer erst mit dem MACVLAN zu starten und die Bridge anschließend zu ergänzen. -
Tja, leider bekomme ich es nicht hin mein Backup einzuspielen. Ich habe jetzt seit Stunden alle möglichen Reihenfolgen versucht. Ich gebe auf.
- Mit Redis, ohne Redis
- über das Startscript mit Backitup backup, Kommandozeilenbackup, mit und ohne redis file, mit und ohne history file
- nach dem Startscript mit Backitup manuell installiert
- neue Instanz und Backitup oder dem Backup aus der Kommandozeile
Ich bin mit meinem Latein am Ende. Das kann doch nicht so schwer sein?!
Versuche ich es über das Startscript > bekomme ich immer eine neue Instanz mit den drei Standardadaptern und nichts weiter passiert.
Im restore.log sehe ich dazu dann allerdings:
host.iobroker-prod Using backup file iobroker_2020_07_21-20_15_21_iorp4_backupiobroker.tar.gz host.iobroker-prod Cannot find extracted file from file "/opt/iobroker/node_modules/iobroker.js-controller/tmp/backup/backup.json" Cannot save /opt/iobroker/iobroker-data/states.json: Error: EACCES: permission denied, open '/opt/iobroker/iobroker-data/states.json.bak'
Versuche ich es über ein anschließend manuell installiertes Backitup > schreibt er im Fenster nur "Gestartet..." und nichts weiter passiert.
Das Log in der GUI vom iobroker zeigt keine Fehler, das Log vom Portainer auch nicht.
-
@gutgut30 Lies mal hier:
https://github.com/buanet/docker-iobroker/issues/120
und probiere es mit der Beta...MfG,
André -
@andre
Na, da habe ich mir wohl genau die richtige Version zum Starten mit dem Thema ausgesucht Danke! Auf git nach bekannten Fehlern habe ich natürlich nicht gesucht, erst mal den Fehler bei mir vermutet als Einsteiger.Ich hab es gerade auch noch mal mit dem Restore einer vollständigen iobroker Instanz versucht. Dabei laufe ich aber auch in einen Fehler, die alte IP scheint dabei Probleme zu machen:
================================== > LOG REDIRECT system.adapter.admin.0 => false [Process stopped] ================================== > LOG REDIRECT system.adapter.admin.0 => false [system.adapter.admin.0.logging] Error: listen EADDRNOTAVAIL: address not available 192.168.69.27:2010 at Server.setupListenHandle [as _listen2] (net.js:1296:21) at listenInCluster (net.js:1361:12) at doListen (net.js:1498:7) at processTicksAndRejections (internal/process/task_queues.js:85:21) Error: listen EADDRNOTAVAIL: address not available 192.168.69.27:2001 at Server.setupListenHandle [as _listen2] (net.js:1296:21) at listenInCluster (net.js:1361:12) at doListen (net.js:1498:7) at processTicksAndRejections (internal/process/task_queues.js:85:21) ================================== > LOG REDIRECT system.adapter.admin.0 => false [Process stopped] ================================== > LOG REDIRECT system.adapter.admin.0 => false [system.adapter.admin.0.logging] Error: listen EADDRNOTAVAIL: address not available 192.168.69.27:9292 at Server.setupListenHandle [as _listen2] (net.js:1296:21) at listenInCluster (net.js:1361:12) at doListen (net.js:1498:7) at processTicksAndRejections (internal/process/task_queues.js:85:21) Error: listen EADDRNOTAVAIL: address not available 192.168.69.27:2010 at Server.setupListenHandle [as _listen2] (net.js:1296:21) at listenInCluster (net.js:1361:12) at doListen (net.js:1498:7) at processTicksAndRejections (internal/process/task_queues.js:85:21) Error: listen EADDRNOTAVAIL: address not available 192.168.69.27:2001 at Server.setupListenHandle [as _listen2] (net.js:1296:21) at listenInCluster (net.js:1361:12) at doListen (net.js:1498:7) at processTicksAndRejections (internal/process/task_queues.js:85:21) cat: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq: Datei oder Verzeichnis nicht gefunden Error: listen EADDRNOTAVAIL: address not available 192.168.69.27:9292 at Server.setupListenHandle [as _listen2] (net.js:1296:21) at listenInCluster (net.js:1361:12) at doListen (net.js:1498:7) at processTicksAndRejections (internal/process/task_queues.js:85:21) ================================== > LOG REDIRECT system.adapter.admin.0 => false [Process stopped] ================================== > LOG REDIRECT system.adapter.admin.0 => false [system.adapter.admin.0.logging] Error: listen EADDRNOTAVAIL: address not available 192.168.69.27:2010 at Server.setupListenHandle [as _listen2] (net.js:1296:21) at listenInCluster (net.js:1361:12) at doListen (net.js:1498:7) at processTicksAndRejections (internal/process/task_queues.js:85:21) Error: listen EADDRNOTAVAIL: address not available 192.168.69.27:2001 at Server.setupListenHandle [as _listen2] (net.js:1296:21) at listenInCluster (net.js:1361:12) at doListen (net.js:1498:7) at processTicksAndRejections (internal/process/task_queues.js:85:21) Error: listen EADDRNOTAVAIL: address not available 192.168.69.27:9292 at Server.setupListenHandle [as _listen2] (net.js:1296:21) at listenInCluster (net.js:1361:12) at doListen (net.js:1498:7) at processTicksAndRejections (internal/process/task_queues.js:85:21) ================================== > LOG REDIRECT system.adapter.admin.0 => false [Process stopped] ================================== > LOG REDIRECT system.adapter.admin.0 => false [system.adapter.admin.0.logging]
Muss man nach dem Kopieren noch was anpasse oder ist das ggf. auch ein Fehler den man bei git eintragen sollte?
Edit:
Das mit der Beta klappt schon bezüglich des Restores. Top! Allerdings lande ich auch hier im Folgefehler, konnte ihn aber mitiobroker stop admin.0 iobroker set admin.0 --bind 0.0.0.0 iobroker start admin.0
beheben. Danke für die Hilfe!
-
@Ennos sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Hi, ich habe seit einiger Zeit den ioBroker auf meinem Synology in Betrieb. Jetzt habe ich aber Probleme mit den Updates. Das Update des js-controllers (Version 3.1.6) kann ich über die Konsole des Portainers durchführen, es wird kein Fehler angezeigt. Nach einem Neustart des Containers wird jedoch wieder Version 3.0.19 angezeigt. Auch die Adapterupdates werden ausgeführt, nach Abschluss sind die Adapter jedoch wieder updatebar. Ich habe bereits ein recreate in Portainer versucht mit einem pull des aktuellsten Images. Das brachte jedoch keine Änderung.
Hat jemand einen Tipp, wie ich das beheben kann?Hat niemand einen Tipp für mich? Ich kann leider nach wie vor keine Updates durchführen...
-
Wie wäre es den Container zu löschen und die Latest Version als neuen Container zu installieren? Vom alten vorher ein Backup machen, in einen leeren Ordnet packen. Den Ordner Mounten und neue Version vom iobroker installieren. Fertig.
Wird von André ja auch auf der Seite entspr. beschrieben. Dann hast du alles auf dem neusten Stand.
-
Ich scheitere leider daran mein Redis in Backitup zu sichern. Redis läuft in einem anderen Container und kann in der Config angesprochen werden.
Backitup möchte allerdings einen "Pfad" wissen, den kenne ich nicht. Laut Google muss ich die "Remote-Config" gemäß Doku angeben, dazu steht in der Doku aber nichts. Hat hier jemand mit identischer Konstellation einen Tipps?Zudem bekomme ich nach Konfiganpassungen im Portainer / Docker folgende Meldung im Start-Log und die GUI startet nicht:
/opt/scripts/iobroker_startup.sh: Zeile 184: [: !=: Einstelliger (unärer) Operator erwartet.
Meine Zeile 184 in iobroker_startup.sh
184 elif [ $(bash iobroker object get system.adapter.admin.0 --pretty | grep -oP '(?<="host": ")[^"]*') != $(hostname) ]
Das passiert vor allem dann, wenn ich gesetzte Umgebungsvariablen wieder lösche. Bekommt man das irgendwie behoben?
-
warum ein Redis Backup?
Mache es so wie Sunshinemaker beschrieben hat, bzw. so wie es in der buanet Doku steht.
Den Redis Container würde ich außen vor lassen, erstmal...
Ihn kannst du ja als solchen auch mal updaten wenn es ein neues Image dazu gibt.
Das Redis Backup vom Iobroker Container aus kann glaube ich nicht funktionieren, da backitup nicht auf den anderen Conatainer zugreifen kann -
@K_o_bold
Eigentlich, weil ich Redis bisher immer gesichert habe... Never Change a running...Aber, du hast mir da einen guten Denkanstoß gegeben. Das ist mit dem Redis-Container gar nicht zwingend notwendig.
Wenn ich das zum Redis Container gehörende, gemountete Volume entsprechend manuell sicher gehts auch. Ist halt nicht so bequem wie der Klick im Backitup Adapter.
Ich hätte halt gedacht: Wenn ioBroker auf die Redis Daten kommt, warum dann Backitup nicht... -
@gutgut30 Nutz doch einfach HyperBackup um das Volume zu sichern. Zb ein Rotierendes Back auf ein Räumlich getrenntes Medium, damit es wirklich ein Richtiges Backup ist. Zb eine zweite DS.
-
Und nun hoffentlich erst mal eine letzte Frage
Nutzt jemand (schon länger) das Image mit der Option
--net=host
und hat den Portainer auf einen anderen Port umgezogen? Kam das im längeren Betrieb zu Problemen oder kann man das so laufen lassen?
Hintergrund: Ich bekomme meinen Bluetooth Dongle nicht zum Laufen. Der einzige Weg wie ich ihn bisher ansprechen konnte ist, wenn ich als Netzwerk "Host" setze. Das ist auch die gängige Lösung in den Docker-Foren.
Jetzt muss ich zwar meinen MQTT Devices die neue IP mitteilen, aber das sollte überschaubar sein.
-
@Sunshinemaker said in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
@gutgut30 Nutz doch einfach HyperBackup um das Volume zu sichern. Zb ein Rotierendes Back auf ein Räumlich getrenntes Medium, damit es wirklich ein Richtiges Backup ist. Zb eine zweite DS.
Ich fahre das Setup auf einem OpenMediaVault 5. Ich muss mal schauen wie ich da ein dauerhaftes Backup aufsetze für die Container / Container-Volumes. Ich wollte erst mal zusehen alles auf diese Kiste zu bekommen. Steiniger Weg, aber er scheint machbar zu sein. Und man lernt einiges zum Thema Docker, Linux & Co.
Daher der Docker auf dem Host auf der Systemplatte liegt (SSD) wäre die banalste Lösung ein Copy-Job auf die HDD im gleichen Blech.
Vielleicht schiebe ich zusätzlich noch auf die HDD an der Fritzbox. -
noch als Tipp. Wenn du ein backup von deinen Volumes machst, dann stoppe alle container vorher.
Hat den Hintergrund, dass dann bei allen zu kopierenden Dateien keine Schreibprozesse mehr laufen. Somit ist dein Backup nachher auf jeden Fall sauber. -
@andre
Gibt es einen einfachen Weg nach dem Start der Maschine Befehle auszuführen? Ich muss meinem BT Adapter beim Containerstart etwas nachhelfen.Ich könnte es in das startup-script schmeißen, aber das ist wohl bei jedem Containerupdate weg nehme ich an und ich möchte eigentlich auch nicht zwingend drin rum fummeln.
Es geht um diese drei Zeilen:
service dbus start service bluetooth start hciconfig hci0 up
-
@gutgut30
Benutzerdefinierte Startup Scripte:
https://github.com/buanet/docker-iobroker#userdefined-startup-scriptsMfG,
Andre -
@andre
Danke! Du hast echt an alles gedacht -
@gutgut30 Zumindest an alles was ich selbst verwende.