NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
@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?
-
@boardy sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
@heinzie beim booten im Log?
Danke, habe es dort gefunden
-
@boardy
Ich habe eine Raspberry im Flur mit einem Touchscreenmonitor hängen.
Da ist auch ein Zigbee-Bewegungsmelder.
Immer wenn der Bewegung detektiert, wird per Blockly Exec ein SSH-Befehl zum Raspberry geschickt, den Monitor einzuschalten.
Nach x-Minuten ohne Bewegung das dann wieder andersherum...
Ich wüsste jetzt nicht, wie ich das mit der Aufgabenverwaltung lösen sollte? -
@tugsi okay, das ist was anderes, hatte ich so nicht auf dem Schirm (-:
-
@tugsi Ich habe das zwar noch nie genutzt, aber schau Dir doch mal hier einen MQTT-Client für den Raspberry an. Evtl. kannst Du den Raspberry dann ganz einfach via ioBroker steuern und musst keine Umwege über ssh Scripte gehen.
Gruß
Robert
-
@heinzie
Auf der Synology in der Konsole sich als root anmelden.
Dort eingeben -> docker image ls
-> Id wird aufgelistet -> f92f75121ff1 -> Buanet (Beispiel)dann in der Konsole -> docker image inspect f92f75121ff1
Dann sollte unter dem Punkt 'org.opencontainers.image.version' die Version des Buanet-image erscheinen.
So geht es bei mir jedenfalls. -
Hallo Andre,
danke für die Pflege dieses tollen containers. Ich versuche aktuell die Amazon Echos in node-red zum Laufen zu bringen. Ich habe nach diesem Thema gesucht, jedoch hier nichts gefunden. Falls das Thema bereits behandelt wurde, bitte Bescheid geben.
Ich bekomme in meinem Flow jedenfalls die Meldung "Unable to start on Port 80". Das Problem ist bekannt und es wird auf mehrere Lösungen hier im Troubleshooting verwiesen: https://github.com/datech/node-red-contrib-amazon-echo/wiki/Troubleshooting#node-red-in-a-docker-container
Da ich iobroker in deinem container auf der Synology benutze, trifft für mich wohl der Punkt "node red in a docker container" zu. Doch diese kann ich nicht durchführen, weil die bash in portainer keine "docker" Befehle kennt => Kommando nicht gefunden. Gibt es da einen Trick?
Danke und viele Grüße
-
@prinz-ip sagte in [HowTo] ioBroker unter Docker auf Synology DiskStation:
weil die bash in portainer keine "docker" Befehle kennt => Kommando nicht gefunden.
Was meinst du , keine Befehle , geht doch