NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
@ice987 Das hört sich für mich erstmal nicht verkehrt an. Wenn du Upgrade per Restore machst, dann werden erst anschließend die Adapter nachinstalliert. Die Instanzen bleiben solange ohne Icon. Ein Blick in das ioBroker Log sollte helfen. Je nach Anzahl der Adapter und Performance des Systems kann das Neuinstallieren schon mal ein Stündchen dauern...
Wenn du aber "nur" von v5.1.0 auf v5.2.0 (also ein Minor Upgrade) gehst, dann brauchst du den Stunt nicht zu machen. Einfach Container Löschen. ioBroker Ordner duplizieren. Container neu anlegen und freuen... geht eigentlich problemlos...
MfG,
André -
Wunderbar, vielen Dank für deine Rückmeldung!
Dann müsste ich bei der „Backupwiederherstellung“ einfach länger warten (habe dann schon gelacht weil auch in der Beschreibung steht ).
Von ich möchte von 5.1 auf 5.2: somit werde ich mal den (kopierten) Ordner mounten und erneut versuchen…
Ich denke auch, dass das nicht ein grundsätzliches Problem ist. Vielen Dank für all deinen Effort (Support und Entwicklung)!
-
Habe mal eine Frage an die Experten bezüglich der Geschwindigkeit von iobroker unter Docker.
Bei mir läuft das auf einer Synology DS918
- CPU Belastung ~23%
- RAM ~36%
- Wenn ich im Docker einen Ping auf 8.8.8.8 setze liegt der zwischen 10-20ms
Wenn ich jetzt im Browser z.B. die Seite http://192.168.0.4:8081/#tab-objects aufrufe, dauert das 25sec bis die aufgebaut ist. Finde das schon ziemlich lange, habe aber leider keinen direkten Vergleich.
Dauert das bei auch so lange?
-
@heinzie Das scheint mir zu langsam:
DS218+ mit 10GB RAM, Objekte: 15233, ca. 4 Sekunden Ladezeit.Festplatte frei: 29%, Gesamte RAM-Auslastung: 2364 Mb / Frei: 36% = 3572 Mb [Server: iobroker - 34 Prozesse]
Ich verwende allerdings REDIS für die States.
-
@rk62 Danke für den Tipp mit REDIS, dass kannte ich noch gar nicht.
Habe das mal eingebaut und ist jetzt deutlich schneller <15sec.
Das ganze scheint jetzt auch deutlich flüssiger zu laufen -
Wie es im Docker auf der Synology ist, kann ich nicht sagen.
Aber auf meinem RasPi4 erscheint das Webinterface in 1,5 Sekunden. (beim ersten laden im sauberen Browser) -
@paul-ol Hab nochmal mit einem anderen Browser getestet, aber unter 13sec komme ich nicht.
Das ist dann aber schon deutlich langsamer gegenüber dem Raspberry Pi -
@heinzie Genau. Deswegen wollte ich das zumindest mal erwähne. Beim Einstellen summieren sich da die Sekunden zu unnötige Stunden.
Ich hab es auch nicht mehr auf dem Synology Docker. Vor allem Seit der DSM 7.
Nun hab ich wieder ein Raspi welches ich alle 3 Monate komplett backuppe.Läuft stabil. (bis auf ioBroker was durchwachsen ist.)
-
Moin zusammen.
Ich hab' jetzt erstmals auf meinem Raspi 4B an ein Update von 4.2.0 auf 6.0.0 gewagt. Node.js war aktuell (14.x) im alten Container, js-controller nur minimal um ein Minor-Update veraltet. Ich fahre ioBroker mit Docker-Compose per docker-compose.yml zusammen mit zwei anderen Containern hoch. So habe ich alles runtergefahren mit "docker-compose stop" und mit "docker-compose up --build" wieder hochgefahren (bewirkt ja ein Recreate mit neuem Container). Soweit alles korrekt gemacht, oder?
Jetzt habe ich aber das Problem, dass der ioBroker beim Start in eine Endlosschleife gerät und das Skript ständig von Schritt 5 aus wieder nach Schritt 1 springt. Was kann man tun? Ist dieser komische Zeitfehler (Node.js) irgendwie bekannt? Hatte ich mit 4.2.0 nicht...
Den Raspi hatte ich auch mal upgedatet, hat nichts verändert am Problem.
-------------------------------------------------------------------------------- ----- Welcome to your ioBroker-container! ----- ----- Startupscript is now running. ----- ----- Please be patient! ----- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----- Debugging information ----- ----- ----- ----- System ----- ----- arch: armv7l ----- ----- ----- ----- Docker-Image ----- ----- image: v6.0.0 ----- ----- build: 2021-12-17T03:48:21+00:00 ----- ----- ----- ----- Versions ----- Node.js[21]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed. ----- node: ----- Node.js[23]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed. ----- npm: ----- ----- ----- ----- ENV ----- ----- PACKAGES: nano build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev ----- ----- SETGID: 1000 ----- ----- SETUID: 1000 ----- ----- USBDEVICES: /dev/ttyUSB0 /dev/ttyAMA0 ----- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----- Step 1 of 5: Preparing container ----- -------------------------------------------------------------------------------- Installing additional packages is set by ENV. Checking the following Packages: nano build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev... W: GPG error: http://security.debian.org/debian-security bullseye-security InRelease: At least one invalid signature was encountered. E: The repository 'http://security.debian.org/debian-security bullseye-security InRelease' is not signed. W: GPG error: http://deb.debian.org/debian bullseye InRelease: At least one invalid signature was encountered. E: The repository 'http://deb.debian.org/debian bullseye InRelease' is not signed. W: GPG error: http://deb.debian.org/debian bullseye-updates InRelease: At least one invalid signature was encountered. E: The repository 'http://deb.debian.org/debian bullseye-updates InRelease' is not signed. nano is not installed. Installing... sudo: unable to get time of day: Operation not permitted sudo: error initializing audit plugin sudoers_audit Done. build-essential is already installed. libcairo2-dev is already installed. libpango1.0-dev is already installed. libjpeg-dev is already installed. libgif-dev is already installed. librsvg2-dev is already installed. Reading package lists... Building dependency tree... Reading state information... Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Done. -------------------------------------------------------------------------------- ----- Step 2 of 5: Detecting ioBroker installation ----- -------------------------------------------------------------------------------- Existing installation of ioBroker detected in /opt/iobroker. -------------------------------------------------------------------------------- ----- Step 3 of 5: Checking ioBroker installation ----- -------------------------------------------------------------------------------- (Re)Setting folder permissions (This might take a while! Please be patient!)... Done. Fixing "sudo-bug" by replacing sudo in iobroker with gosu... cp: preserving times for '/opt/iobroker/iobroker.bak': Operation not permitted Done. Node.js[196]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed. iobroker: line 6: 196 Aborted gosu iobroker node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js "$@" /opt/scripts/iobroker_startup.sh: line 199: [: !=: unary operator expected -------------------------------------------------------------------------------- ----- Step 4 of 5: Applying special settings ----- -------------------------------------------------------------------------------- Some adapters have special requirements/ settings which can be activated by the use of environment variables. For more information take a look at readme.md on Github! Usb-device-support is activated by ENV. Setting permissions for /dev/ttyUSB0 /dev/ttyAMA0... Done. -------------------------------------------------------------------------------- ----- Step 5 of 5: ioBroker startup ----- -------------------------------------------------------------------------------- Starting ioBroker... Node.js[218]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed. /opt/scripts/iobroker_startup.sh: line 505: 218 Aborted gosu iobroker node node_modules/iobroker.js-controller/controller.js tail: cannot read realtime clock: Operation not permitted -------------------------------------------------------------------------------- ------------------------- 1970-01-01 01:00:00 ------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----- Welcome to your ioBroker-container! ----- ----- Startupscript is now running. ----- ----- Please be patient! ----- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----- Debugging information ----- ----- ----- ----- System ----- ----- arch: armv7l ----- ----- ----- ----- Docker-Image ----- ----- image: v6.0.0 ----- ----- build: 2021-12-17T03:48:21+00:00 ----- ----- ----- ----- Versions ----- Node.js[20]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed. ----- node: ----- Node.js[22]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed. ----- npm: ----- ----- ----- ----- ENV ----- ----- PACKAGES: nano build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev ----- ----- SETGID: 1000 ----- ----- SETUID: 1000 ----- ----- USBDEVICES: /dev/ttyUSB0 /dev/ttyAMA0 ----- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----- Step 1 of 5: Preparing container ----- -------------------------------------------------------------------------------- Installing additional packages is set by ENV. Checking the following Packages: nano build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev... W: GPG error: http://security.debian.org/debian-security bullseye-security InRelease: At least one invalid signature was encountered. E: The repository 'http://security.debian.org/debian-security bullseye-security InRelease' is not signed. W: GPG error: http://deb.debian.org/debian bullseye InRelease: At least one invalid signature was encountered. E: The repository 'http://deb.debian.org/debian bullseye InRelease' is not signed. W: GPG error: http://deb.debian.org/debian bullseye-updates InRelease: At least one invalid signature was encountered. E: The repository 'http://deb.debian.org/debian bullseye-updates InRelease' is not signed. nano is not installed. Installing... sudo: unable to get time of day: Operation not permitted sudo: error initializing audit plugin sudoers_audit Done. build-essential is already installed. libcairo2-dev is already installed. libpango1.0-dev is already installed. libjpeg-dev is already installed. libgif-dev is already installed. librsvg2-dev is already installed. Reading package lists... Building dependency tree... Reading state information... Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Done. -------------------------------------------------------------------------------- ----- Step 2 of 5: Detecting ioBroker installation ----- -------------------------------------------------------------------------------- Existing installation of ioBroker detected in /opt/iobroker. -------------------------------------------------------------------------------- ----- Step 3 of 5: Checking ioBroker installation ----- -------------------------------------------------------------------------------- (Re)Setting folder permissions (This might take a while! Please be patient!)... Done. Fixing "sudo-bug" by replacing sudo in iobroker with gosu... cp: preserving times for '/opt/iobroker/iobroker.bak': Operation not permitted Done. Node.js[188]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed. iobroker: line 6: 188 Aborted gosu iobroker node /opt/iobroker/node_modules/iobroker.js-controller/iobroker.js "$@" /opt/scripts/iobroker_startup.sh: line 199: [: !=: unary operator expected -------------------------------------------------------------------------------- ----- Step 4 of 5: Applying special settings ----- -------------------------------------------------------------------------------- Some adapters have special requirements/ settings which can be activated by the use of environment variables. For more information take a look at readme.md on Github! Usb-device-support is activated by ENV. Setting permissions for /dev/ttyUSB0 /dev/ttyAMA0... Done. -------------------------------------------------------------------------------- ----- Step 5 of 5: ioBroker startup ----- -------------------------------------------------------------------------------- Starting ioBroker... Node.js[210]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed. /opt/scripts/iobroker_startup.sh: line 505: 210 Aborted gosu iobroker node node_modules/iobroker.js-controller/controller.js tail: cannot read realtime clock: Operation not permitted -------------------------------------------------------------------------------- ------------------------- 1970-01-01 01:00:00 ------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----- Welcome to your ioBroker-container! ----- ----- Startupscript is now running. ----- ----- Please be patient! ----- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----- Debugging information ----- ----- ----- ----- System ----- ----- arch: armv7l ----- ----- ----- ----- Docker-Image ----- ----- image: v6.0.0 ----- ----- build: 2021-12-17T03:48:21+00:00 ----- ----- ----- ----- Versions ----- Node.js[20]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed. ----- node: ----- Node.js[22]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed. ----- npm: ----- ----- ----- ----- ENV ----- ----- PACKAGES: nano build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev ----- ----- SETGID: 1000 ----- ----- SETUID: 1000 ----- ----- USBDEVICES: /dev/ttyUSB0 /dev/ttyAMA0 ----- --------------------------------------------------------------------------------
-
Ich sehe da gleich mehrere Sachen die mir nicht gefallen...
Als erstes solltest du mal hier lesen und die Version prüfen (Grundvoraussetzung).
Außerdem scheint node im Allerwertesten zu sein. Die Fehlermeldung dazu kenne ich allerdings noch nicht...
Du könntest mal schauen ob du generell einen Container in V6 zum Laufen bringst. Kannst du komplett ohne mount und im Bridge Netzwerk machen, nur um zu sehen ob das Startscript generell ohne Fehler durch läuft (sollte es tun!).
Wenn das soweit klappt, würde ich dir empfehlen den V6 Container per Backup und Restore aufzusetzen. Du kommst von einer sehr alten Image Version. Da würde es sicher gut tun mal den ioBroker von Grund auf neu zu installieren und nur die Konfiguration wiederherzustellen.
MfG,
André -
@andre sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Ich würd' mal sagen: Du bist ein Gott! Ich hab die Lib aktualisiert, danach lief alles ohne einen Fehler, keine Probleme mehr. Vielen Dank!
Außerdem scheint node im Allerwertesten zu sein. Die Fehlermeldung dazu kenne ich allerdings noch nicht...
War wohl derselbe oder ein Folgefehler.
Wenn das soweit klappt, würde ich dir empfehlen den V6 Container per Backup und Restore aufzusetzen. Du kommst von einer sehr alten Image Version. Da würde es sicher gut tun mal den ioBroker von Grund auf neu zu installieren und nur die Konfiguration wiederherzustellen.
Kannst du das evtl. kurz näher erläutern? Ich habe bisher Node.js, js-controller und alle Adapter immer aktuell gehalten. Was fehlt mir dann noch? Die ioBroker-Software selbst? Ich dachte bisher, die besteht aus den unterschiedlichen Adapter-Komponenten wie z.B. Admin. Zumindest habe ich an der Oberfläche selbst noch keine Versionsnummer für den ioBroker selbst gefunden oder einen Updatehinweis?! Kann man den auch updaten?
-
Jetzt habe ich auch noch ein anderes Problem (also schon ein paar Wochen, sowohl mit dem ganz alten als auch ganz neuen Container): Ich hatte vor ein paar Monaten eine VIS-Offline-Lizenz gekauft. Wohl durch das Node.js-Update (von 10 auf 12 vor längerer Zeit?) hatte mir ioBroker beim Start ausgegeben, dass ich eine neue Lizenz brauche und mich an ioBroker wenden sollte. Das hatte ich vor ein paar Wochen gemacht und eine Mail mit neuer UUID und neuem Lizenzschlüssel für VIS erhalten (muss ja beides zusammen passen). Auf Nachfrage schrieb man mir, dass die neue UUID/Seriennummer des ioBrokers beim ioBroker-Start übernommen werde.
Jedoch behält meine Installation beharrlich die alte Nummer, egal ob ich den Container neustarte, den Container neu erstelle oder ioBroker im Container abschieße und neustarte oder normal stoppe und neu starte (wie vom ioBroker-Team empfohlen).Hatte schon mal jemand diesen Anwendungsfall (mit dem Docker-ioBroker)? Ich weiß jetzt nicht, ob das ein Issue/Bug der Docker-Variante oder von ioBroker selbst ist...
-
@stevie77 sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Kannst du das evtl. kurz näher erläutern? Ich habe bisher Node.js, js-controller und alle Adapter immer aktuell gehalten. Was fehlt mir dann noch? Die ioBroker-Software selbst? Ich dachte bisher, die besteht aus den unterschiedlichen Adapter-Komponenten wie z.B. Admin. Zumindest habe ich an der Oberfläche selbst noch keine Versionsnummer für den ioBroker selbst gefunden oder einen Updatehinweis?! Kann man den auch updaten?
Nein, dir fehlt nichts weiter. Es ist nur manchmal so, dass es bei Installationen die über längere Zeit "gewachsen" sind unter Umständen sinnvoll sein kann, den ioBroker (und alles drumherum) einmal per restore neu aufzusetzen. Dabei werden alle npm Pakete (also auch die Adapter) frisch herunter geladen und installiert. Alle "Leichen" wie zum Beispiel verwaiste Dateien aus alten Paketversionen oder deinstallierten Adaptern werden dabei beseitigt (weil nicht übernommen). Wenn es bei dir nur an der Lib gelegen hat ist alles gut. Solltest du irgendwann mal Probleme bei der Installation oder dem Update von Adaptern haben, wäre ein neu Aufsetzen mit Restore meist keine schlechte Idee.
@stevie77 sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
Jetzt habe ich auch noch ein anderes Problem (also schon ein paar Wochen, sowohl mit dem ganz alten als auch ganz neuen Container): Ich hatte vor ein paar Monaten eine VIS-Offline-Lizenz gekauft. Wohl durch das Node.js-Update (von 10 auf 12 vor längerer Zeit?) hatte mir ioBroker beim Start ausgegeben, dass ich eine neue Lizenz brauche und mich an ioBroker wenden sollte. Das hatte ich vor ein paar Wochen gemacht und eine Mail mit neuer UUID und neuem Lizenzschlüssel für VIS erhalten (muss ja beides zusammen passen). Auf Nachfrage schrieb man mir, dass die neue UUID/Seriennummer des ioBrokers beim ioBroker-Start übernommen werde.
Jedoch behält meine Installation beharrlich die alte Nummer, egal ob ich den Container neustarte, den Container neu erstelle oder ioBroker im Container abschieße und neustarte oder normal stoppe und neu starte (wie vom ioBroker-Team empfohlen).Das UUID Thema kenne ich vom Ding her auch. Allerdings kenne ich da die genaue Vorgehensweise bezüglich Neuausstellung der Lizenz seitens ioBroker nicht im Detail.
Fest steht dass bestimmte (fehlerhaft erzeugte) UUIDs auf eine Blacklist gekommen sind und daher neu generiert/ geändert werden müssen und dann eine neue Lizenz bekommen.
Da ich hier aber nichts Falsches sagen will sollten wir mal @apollon77 oder @Bluefox dazu befragen. Eventuell ist das auch ein Thema das einer der Beiden direkt mit dir klären kann.MfG,
André -
Hi André,
wieder mal tolle Arbeit von dir... hatte mal wieder Zeit - nach gefühlt einem Jahr und hab heute gleich mal auf die neueste beta Version mit Node 16 aktualisiert - bisher scheint alles zu laufen!!!
Dann werde ich mich wohl mal an das DMS Upadate auf 7 wagen...
LG Uwe
Update: nach ca. 1,5 Stunden lief wieder alles unter DSM 7.0 - die Anfänglichen Schwierigkeiten sind wohl alle behoben - einzig meien DS hat nicht rebootet sondern ist runtergefahren... aber nach Knöpfchen drücken lief alles durch...
-
@andre
Habe mir auch die V6 jetzt produktiv geschaltet.
Dabei ist mir aufgefallen, dass kein ssh mehr mit am Board ist. Ich denke mal, dies wird Sicherheitsgründe haben?!
Allerdings brauche ich ssh, weil ich mit einem Scriptbefehl von meiner Synology mein Monitor am RPi Slave ein- und ausschalte, durch einen Bewegungsmelder. (Keys auch vorher getauscht, damit kein Passwort mit übergeben werden muss)ssh pi@192.168.33.250 vcgencmd display_power 1
Jetzt kann ich ja den Container auch so anlegen, dass er standardmäßig ssh nachinstalliert, klappt ja auch.
Wollte trotzdem fragen, ob es einen Grund gibt für das fehlende ssh
und
vielleicht gibt es ja auch eine Alternative anstand per ssh den Befehl zum Slave zu schicken. -
@tugsi sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
dass kein ssh mehr mit am Board ist
War noch nie dabei ..
https://forum.iobroker.net/topic/4733/howto-iobroker-unter-docker-auf-synology-diskstation/2247
über ioBroker
https://forum.iobroker.net/topic/4733/howto-iobroker-unter-docker-auf-synology-diskstation/1285
-
@glasfaser
Ah ok, dann hatte ich das wohl damals auch schon nachträglich installiert, denn ich habe ja den Blockly mit dem Exec über ssh...
Ok, ich lese mir deinen zweiten Link mal in Ruhe durch, da geht es um sowas wie npm-ssh...
Ansonsten installiere ich ssh halt wie jetzt einfach nach ...
Danke -
Hallo,
ich habe einmal ein Update des Containers mit Portainer von V4 auf V6 durchgeführt. Das scheint auch alles zu funktionieren.
Gibt es ein Möglichkeit dei Version des aktuellen Containers - zur Kontrolle - irgendwo auszulesen?
-
@tugsi benötigst du SSH wirklich? ich mache alles über die Aufgabenverwaltung der Synology
-
@heinzie beim booten im Log?