NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
Vielen Dank für deine Bemühungen.
Mit dem Eintrag geht dann gar nichts mehr.
Kann damit leben, dass es bei jedem Zweitstart in die Hosen geht.
Wenn man weiss woran es liegt und was man dann machen muss, geht es ja.
-
Vielen Dank für deine Bemühungen.
Mit dem Eintrag geht dann gar nichts mehr.
Kann damit leben, dass es bei jedem Zweitstart in die Hosen geht.
Wenn man weiss woran es liegt und was man dann machen muss, geht es ja. `
OK, das geht also so nicht.Ich glaube dass ioBroker nicht ordnungsgemäß startet liegt daran, dass es im container nicht sauber beendet wurde. Wenn ich das recht deute, dann hängt irgendwo der iobroker.js-controller noch. Das würde auch die meldung erklären:
iobroker controller daemon already running. PID: 65
Hab es gerade mal bei mir getestet. schieb mal den ./iobroker stop hinter den avahi… also so:
#!/bin/sh if [ -f .install_host ]; then sed -i "s/$(cat .install_host)/$(hostname)/g" iobroker-data/objects.json rm .install_host fi /opt/scripts/avahi-start.sh ./iobroker stop ./iobroker start cd / /bin/bash
MfG,
André
-
Hatte es davor eingefügt.
Nun geht nix mehr.
Habe den Dockerordner gelöscht (vorher gesichert).
Den Container gelöscht. Alles neu installiert. Dockerordner zurück kopiert.
Dann gestartet. iOBroker läuft an, sehe auch, dass er alles lädt.
Nur auf der Adminseite unter xxx.xxx.xxx.xx:8081 startet nix von dem was installiert ist.
Was nun?
-
Hatte es davor eingefügt.
Nun geht nix mehr.
Habe den Dockerordner gelöscht (vorher gesichert).
Den Container gelöscht. Alles neu installiert. Dockerordner zurück kopiert.
Dann gestartet. iOBroker läuft an, sehe auch, dass er alles lädt.
Nur auf der Adminseite unter xxx.xxx.xxx.xx:8081 startet nix von dem was installiert ist.
Was nun? `
Hmm,verstehe ich das richtig? Die Prozesse (also auch adpater io.xxxx) laufen im docker an in der admin oberfläche (warscheinlich unter instanzen) nicht? oder kann man den admin gar nicht öffnen? Kannst du Screenshots machen? Kann es mir gerade so nicht vorstellen in welchem status sich dein system befindet.
Das startup.sh script müsste ja in deinem gesicherten ioBroker ordner gewesen sein. ist das wieder zurück geändert?
MfG,
André
-
So sieht es mal aus, jetzt.
Docker
![](<ATTACHMENT )~~[attachment=1]~~Docker.gif[/attachment]" />
Zugriff auf Webseite
![](<ATTACHMENT )~~[attachment=0]~~Webseite.gif[/attachment]" />
-
So sieht es mal aus, jetzt.
Docker
Zugriff auf Webseite
`
Sieht doch eigentlich ganz gut aus. Wie schaut deine Konfig vom Docker aus? Hast du an die Portweiterleitung bzw. das Häkchen für "selbes Netzwerk wie Host verwenden" beim Erstellen des Containers gedacht?Ich denke dass dein ioBroker läuft und schlicht nur nicht erreichbar ist.
MfG,
André
-
Ist ja peinlich !
Natürlich war es das Häkchen bei selbem Netzwerk!
Danke dir!
-
So, nach einem Abend voller Ehrgeiz und ausgiebigem Testen haben ich den Fehler nun auch bei mir nachstellen können.
Ich habe daraufhin verschiedene Sachen ausprobiert und vermute, dass sich beim starten des Containers schlicht die Ereignisse überholen/ gegenseitig behindern.
Um das Ganze zu entzerren habe ich in die startup.sh ein sleep mit 5 Sekunden vor dem Start von ioBroker eingebaut.
Danach habe ich jetzt den Container insgesamt 5 Mal in Folge erfolgreich durchgestartet und keinen Aussetzer gehabt.
Vielleicht kann das ja jemand von den Mitlesern hier mal testen.
Hier der Code meiner startup.sh.
#!/bin/sh if [ -f .install_host ]; then sed -i "s/$(cat .install_host)/$(hostname)/g" iobroker-data/objects.json rm .install_host fi /opt/scripts/avahi-start.sh sleep 5 ./iobroker start cd / /bin/bash
Danke schon mal vorab fürs Testen.
MfG,
André
-
Habe 3x ausprobiert, Container hat ohne Problemen gestartet.
-
Hatte den Vorschlag mit sleep ausprobiert.
Hat nichts geholfen, musste trotzdem manuell starten.
Habe jetzt den iOBroker-Ordner, nicht das opt-Verzeichnis, aus dem Docker-Verzeichnis raus genommen.
Dann den Mountpfad auf das alte Verzeichnis unter admin gelegt.
Seit dem startet es bei jedem Neustart.
Vielleicht habe ich das bei der Installation auch verkehrt gemacht oder falsch gelesen.
Jedenfalls funktioniert es jetzt.
-
So, nach einem Abend voller Ehrgeiz und ausgiebigem Testen haben ich den Fehler nun auch bei mir nachstellen können.
Ich habe daraufhin verschiedene Sachen ausprobiert und vermute, dass sich beim starten des Containers schlicht die Ereignisse überholen/ gegenseitig behindern.
Um das Ganze zu entzerren habe ich in die startup.sh ein sleep mit 5 Sekunden vor dem Start von ioBroker eingebaut.
Danach habe ich jetzt den Container insgesamt 5 Mal in Folge erfolgreich durchgestartet und keinen Aussetzer gehabt.
Vielleicht kann das ja jemand von den Mitlesern hier mal testen.
Hier der Code meiner startup.sh.
#!/bin/sh if [ -f .install_host ]; then sed -i "s/$(cat .install_host)/$(hostname)/g" iobroker-data/objects.json rm .install_host fi /opt/scripts/avahi-start.sh sleep 5 ./iobroker start cd / /bin/bash
Danke schon mal vorab fürs Testen.
MfG,
André `
Hi Andre,
leider klappt die startup.sh bei mir nicht, wegen folgende Fehlermeldung:
` > /opt/iobroker/startup.sh: 2: /opt/iobroker/startup.sh:
: not found
/opt/iobroker/startup.sh: 13: /opt/iobroker/startup.sh: Syntax error: end of file unexpected (expecting "then") `
Was habe ich falsch gemacht?
Habe die sh Datei im Editor geöffnet inhalt gelöscht und deinen inhalt eingefügt….
Gruß
gingo
-
Hatte den Vorschlag mit sleep ausprobiert.
Hat nichts geholfen, musste trotzdem manuell starten.
Habe jetzt den iOBroker-Ordner, nicht das opt-Verzeichnis, aus dem Docker-Verzeichnis raus genommen.
Dann den Mountpfad auf das alte Verzeichnis unter admin gelegt.
Seit dem startet es bei jedem Neustart.
Vielleicht habe ich das bei der Installation auch verkehrt gemacht oder falsch gelesen.
Jedenfalls funktioniert es jetzt. `
Hi,
läuft iobroker weiterhin ohne Probleme bei Dir an?
Kann Deine Schritte für mich noch nicht klar nachvollziehen, falls es bei dir weiter sauber anläuft, könntest Du diese bitte noch mal ausfürhlicher beschreiben.
gruß
gingo
-
Hi Andre,
leider klappt die startup.sh bei mir nicht, wegen folgende Fehlermeldung:
` > /opt/iobroker/startup.sh: 2: /opt/iobroker/startup.sh:
: not found
/opt/iobroker/startup.sh: 13: /opt/iobroker/startup.sh: Syntax error: end of file unexpected (expecting "then") `
Was habe ich falsch gemacht?
Habe die sh Datei im Editor geöffnet inhalt gelöscht und deinen inhalt eingefügt….
Gruß
gingo `
Hallo,
offensichtlich ist was mit deiner startup.sh nicht in Ordnung.
Mit welchem Editor hast du die Datei bearbeitet? Über welchen Weg hast du die Datei bearbeitet? Hast du sie vorher auf den PC herunter geladen?
MfG,
André
[EDIT] Konsole vom Container, was gibt
cd /opt/iobroker ls -al
Und welchen Inhalt hat die Datei jetzt?
-
Hi Andre,
leider klappt die startup.sh bei mir nicht, wegen folgende Fehlermeldung:
` > /opt/iobroker/startup.sh: 2: /opt/iobroker/startup.sh:
: not found
/opt/iobroker/startup.sh: 13: /opt/iobroker/startup.sh: Syntax error: end of file unexpected (expecting "then") `
Was habe ich falsch gemacht?
Habe die sh Datei im Editor geöffnet inhalt gelöscht und deinen inhalt eingefügt….
Gruß
gingo `
Hallo,
offensichtlich ist was mit deiner startup.sh nicht in Ordnung.
Mit welchem Editor hast du die Datei bearbeitet? Über welchen Weg hast du die Datei bearbeitet? Hast du sie vorher auf den PC herunter geladen?
MfG,
André
[EDIT] Konsole vom Container, was gibt
cd /opt/iobroker ls -al
Und welchen Inhalt hat die Datei jetzt? `
Hallo Andre,
ich habe die Datei mit dem Windows Editor bearbeitet.
Ich bin im Windows Explorer direkt auf den iobroker Ordner (dieser ist im Container gemountet) gegangen und habe die startup.sh im windows Editor geöffnet.
Alten Inhalt gelöscht und dann den neuen aus deinen Beitrag reinkopiert.
cd /opt/iobroker ls -al
Das kann ich leider nicht im Terminal vom Container eingeben, weil der Container nicht läuft und ich somit keinen Zugriff auf das Terminal habe.
Das ist der Inhalt der startup.sh
` > #!/bin/shif [ -f .install_host ];
then
sed -i "s/$(cat .install_host)/$(hostname)/g" iobroker-data/objects.json
rm .install_host
fi
/opt/scripts/avahi-start.sh
sleep 5
./iobroker start
cd /
/bin/bash `
gruß
gingo
-
Hallo Andre,
ich habe die Datei mit dem Windows Editor bearbeitet.
Ich bin im Windows Explorer direkt auf den iobroker Ordner (dieser ist im Container gemountet) gegangen und habe die startup.sh im windows Editor geöffnet.
Alten Inhalt gelöscht und dann den neuen aus deinen Beitrag reinkopiert.
cd /opt/iobroker ls -al
Das kann ich leider nicht im Terminal vom Container eingeben, weil der Container nicht läuft und ich somit keinen Zugriff auf das Terminal habe.
gruß
gingo `
Mhh, seltsam. Eigentlich sollte der Container laufen, auch wenn die Datei fehlt. Dann wird halt nur ioBroker nicht gestartet. Bist du dir sicher, dass der Container korrekt konfiguriert ist? Also das Verzeichnis korrekt gemountet ist?
Vielleicht hat es auch was mit der Änderung der Datei über Windows in der Dateifreigabe zu tun. Eventuell hat Windows beim Speichern die Datei verbogen. ioBroker läuft ja unter Linux. Ich mach sowas immer über winscp oder die konsole der synology…
Habe dir mal meine startup.sh angehängt. Vielleicht kannst du die mal zu ioBroker kopieren. Vielleicht hilft es was, wenn du die Datei über die Weboberfläche der Syno und die File Station hoch lädst. Nicht das wirklich die Netzwerkfreigabe in Windows das Problem ist.
Muss mal versuchen das nach zu stellen.
MfG,
André
914_startup.zip -
Hallo Andre,
ich habe die Datei mit dem Windows Editor bearbeitet.
Ich bin im Windows Explorer direkt auf den iobroker Ordner (dieser ist im Container gemountet) gegangen und habe die startup.sh im windows Editor geöffnet.
Alten Inhalt gelöscht und dann den neuen aus deinen Beitrag reinkopiert.
cd /opt/iobroker ls -al
Das kann ich leider nicht im Terminal vom Container eingeben, weil der Container nicht läuft und ich somit keinen Zugriff auf das Terminal habe.
gruß
gingo `
Mhh, seltsam. Eigentlich sollte der Container laufen, auch wenn die Datei fehlt. Dann wird halt nur ioBroker nicht gestartet. Bist du dir sicher, dass der Container korrekt konfiguriert ist? Also das Verzeichnis korrekt gemountet ist?
Vielleicht hat es auch was mit der Änderung der Datei über Windows in der Dateifreigabe zu tun. Eventuell hat Windows beim Speichern die Datei verbogen. ioBroker läuft ja unter Linux. Ich mach sowas immer über winscp oder die konsole der synology…
Habe dir mal meine startup.sh angehängt. Vielleicht kannst du die mal zu ioBroker kopieren. Vielleicht hilft es was, wenn du die Datei über die Weboberfläche der Syno und die File Station hoch lädst. Nicht das wirklich die Netzwerkfreigabe in Windows das Problem ist.
Muss mal versuchen das nach zu stellen.
MfG,
André `
Hi,
wo finde ich die Angehängte startup.sh?
Mit der Ursprünglichen startup.sh läuft ja iobroker an (wenn auch meistens nach x maligen restarts)
Diese habe ich ja jetzt schon ca 5 mal zu Test zwecken der neuen startup.sh , auf der selben weise gelöscht und wieder eingefügt.
gruß
gingo
-
Sorry, Klassiker. Jetzt hängt sie oben mit dran.
-
Was mir gerade einfällt. Hat deine Datei einen Absatz nach der letzten Zeile? Also ein "Return"? Könnte auch eine Ursache sein, warum es nicht geht. Würde auch zu deiner zweiten Fehlermeldung passen:
/opt/iobroker/startup.sh: 13: /opt/iobroker/startup.sh: Syntax error: end of file unexpected (expecting "then")
Zeile 13 ist nämlich die letzte Zeile…
MfG,
André
-
Hallo Andre,
ich habe jetzt Deine startup.sh genommen.
iobroker startet auch nach mehreren anläufen nicht!
Prozesse sind alle bei 0 CPU Auslastung.
Protokoll sagt:
` > root@FuttelStation:/#
[….] Stopping Avahi mDNS/DNS-SD Daemon: avahi-daemonProcess 40 died: No such process; trying to remove PID file. (/var/run/avahi-daemon//pid)
[?25l7[1G[[32m ok [39;49m8[?12l[?25h.
[….] Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon[?25l7[1G[[32m ok [39;49m8[?12l[?25h.
iobroker controller daemon already running. PID: 65 `
Zumindest das Terminal ist aufrufbar und sagt bei
cd /opt/iobroker
ls -al
` > total 52
drwx–---- 7 1026 users 4096 Jun 4 11:03 .
drwxr-xr-x 11 root root 4096 Apr 19 17:37 ..
d--------- 2 root root 4096 Apr 22 19:17 backups
drwx------ 2 1026 users 4096 Apr 19 17:40 etc
-rwx------ 1 1026 users 297 Apr 19 17:40 install.sh
-rwx------ 1 1026 users 67 Apr 19 17:40 iobroker
drwx------ 3 1026 users 4096 Apr 19 17:40 iobroker-data
-rwx------ 1 1026 users 92 Apr 19 17:40 killall.sh
drwx------ 2 1026 users 4096 Jun 4 07:32 log
drwx------ 24 1026 users 4096 May 31 10:38 node_modules
-rwx------ 1 1026 users 116 Apr 19 17:40 package.json
-rwx------ 1 1026 users 688 Apr 19 17:40 reinstall.sh
-rwx------ 1 1026 users 205 May 29 23:38 startup.sh `
gruß
gingo
-
Hallo Andre,
ich habe jetzt Deine startup.sh genommen.
iobroker startet auch nach mehreren anläufen nicht!
Prozesse sind alle bei 0 CPU Auslastung.
Protokoll sagt:
` > root@FuttelStation:/#
[….] Stopping Avahi mDNS/DNS-SD Daemon: avahi-daemonProcess 40 died: No such process; trying to remove PID file. (/var/run/avahi-daemon//pid)
[?25l7[1G[[32m ok [39;49m8[?12l[?25h.
[….] Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon[?25l7[1G[[32m ok [39;49m8[?12l[?25h.
iobroker controller daemon already running. PID: 65 `
Zumindest das Terminal ist aufrufbar und sagt bei
cd /opt/iobroker
ls -al
` > total 52
drwx–---- 7 1026 users 4096 Jun 4 11:03 .
drwxr-xr-x 11 root root 4096 Apr 19 17:37 ..
d--------- 2 root root 4096 Apr 22 19:17 backups
drwx------ 2 1026 users 4096 Apr 19 17:40 etc
-rwx------ 1 1026 users 297 Apr 19 17:40 install.sh
-rwx------ 1 1026 users 67 Apr 19 17:40 iobroker
drwx------ 3 1026 users 4096 Apr 19 17:40 iobroker-data
-rwx------ 1 1026 users 92 Apr 19 17:40 killall.sh
drwx------ 2 1026 users 4096 Jun 4 07:32 log
drwx------ 24 1026 users 4096 May 31 10:38 node_modules
-rwx------ 1 1026 users 116 Apr 19 17:40 package.json
-rwx------ 1 1026 users 688 Apr 19 17:40 reinstall.sh
-rwx------ 1 1026 users 205 May 29 23:38 startup.sh `
gruß
gingo `
Das sieht ja erstmal gar nicht schlecht aus.
Das Problem ist jetzt eigentlich nur noch diese Zeile im Log:
iobroker controller daemon already running. PID: 65
Wenn dein Container in diesem zustand ist, versuche mal dies über das Terminal:
cd /opt/iobroker ./iobroker stop ./iobroker start
Oder wenn es so nicht klappt dies:
cd /opt/iobroker kill 65 ./iobroker start
Die 65 ist dabei die ProzessID (PID) aus der Fehlermeldung.
Wenn alles gut geht, sollte dein ioBroker starten, wenn nicht poste mal die Fehlermeldungen.
MfG,
André