NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
Hallo André,
danke für deine Rückmeldung. Also alles in die Tonne zu treten wäre definitiv nicht in Frage gekommen. Dafür läuft der ioBroker in deinem Docker-Image auf der DiskStation einfach zu gut.
Eigentlich hätte ich es auch gerne mit dem Portainer und MACVLAN weiterlaufen lassen. Ich hatte zwischenzeitlich auch gelesen, dass man für den Zugriff auf die lokal auf der DS installierte MariaDB wohl eine Bridge hätte einrichten müssen. Aber da nun alles im Host-Modus läuft und ich aktuell nicht so viele freie Ports benötige, lasse ich es wohl lieber so.
Gruß,
Thorsten
-
@dtp
Richtig dazu musst ein Netzwerk "Bridge" einrichten. Dies ist hier auch irgendwo erklärt.
Das Problem bei so einem Thread ist einfach, er wird zu groß und wenn man nicht ständig mitliest, kommt man nur durcheinander.
Auch mir passiert es, dass ich weiß, ich habe es hier irgendwo gelesen, aber wo....
Daher ist ein Wiki o.ä. immer sehr hilfreich, verstehe aber auch André, dies ist Zeitaufwändig und hinzu kommt, wie formuliere ich dies verständlich. -
So,
heute kam eine neue Version des js-controllers raus und ich musste feststellen, dass ich den ohne Portainer nicht installiert bekomme. Also fix den Portainer wieder installiert und dann darüber in die Konsole des ioBrokers gegangen, um das update durchzuführen.
Bis dann,
Thorsten
-
Hm. Hat der Container nicht ein eigenes Terminal?
-
Doch, aber darüber sind leider keine Eingaben möglich.
-
-
@dtp sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Doch, aber darüber sind leider keine Eingaben möglich.
sollte aber normal funktionieren.
Ich verwende zwar nur noch die Konsole vom Portainer, aber auch im Docker selbst funktioniert sie. -
@Glasfaser sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Gehe auf erstellen und wähle " bash" aus
Ah. Danke. Funktioniert.
-
Hallo André,
Ich habe IoBroker nach deiner Anleitung im MACVLAN und einem eingehängten Bridge Netzwerk am laufen.
Jetzt möchte ich meine Wetterstation direkt auslesen und im Skript das ich benutzen möchte (Anleitung: https://github.com/SBorg2014/WLAN-Wetterstation/wiki/Installation) werden die Befehle bc und nc verwendet.
Leider bekomme ich immer eine Fehlermedung (Paket bc kann nicht gefunden werden).
Gibt es eine Möglichkeit diese Befehle zu installieren?
Sg. Gerald -
@gerald123 sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Gibt es eine Möglichkeit diese Befehle zu installieren?
ENV ---> PACKAGES
-
@darkiop Was sollte ich hier einstelle damit es funktioniert?
-
Seltsam. Seit der Version 4.1 und der Installation des ioBroker-Containers im Host-Modus kann ich keine Instanzen und Adapter mehr löschen. Es wird zwar der Löschvorgang angezeigt, aber am Ende dreht sich die runde Fortschrittsanzeige unaufhörlich weiter und die admin-Oberfläche hängt sich auf.
Ich muss den ioBroker dann jedes Mal über den Docker neu starten. Selbst ein Löschen im node_modules-Verzeichnis mit "sudo rm -R iobroker.Adapter" funktioniert zwar zunächst, doch nach dem Neustart des ioBroker sind Instanz und Verzeichnis wieder da. Jemand eine Idee?
Ich habe sowohl den fixer drüber laufen lassen, als auch die Rechte alle Unterverzeichnisse und Dateien auf 777 gesetzt.
Neue Adapter und Instanzen sowie deren Updates lassen sich problemlos installieren und dann auch wieder deinstallieren. Es geht nur um die Adapter und Instanzen, die vor dem Update auf die Version 4.1 bereits installiert waren. So ließen sich z.B. weder der Parser- noch der Pushover-Adapter samt zugehöriger Instanzen deinstallieren.
EDIT: Auch ein "npm rebuild" hat an der Situation leider nichts geändert.
-
Ich glaube, ich habe die Ursache für mein Problem gefunden.
Mit Port 9000 hatte ich schon bei der MACVLAN-Installation Probleme, so dass ich Port 8889 auf Port 9000 umgeleitet habe. Nur leider geht das im Host-Betrieb ja nicht.Hat jemand vielleicht einen Tipp? Durch was ist Port 9000 auf der DS blockiert?
-
@dtp Bei mir ist Portainer in der Standardinstallation auf Port 9000 angelegt.
Ist das möglicherweise bei dir auch so? -
Ich nutze den Portainer ja nicht mehr und hatte den entsprechenden Container wieder deinstalliert. Daher dürfte da ja eigentlich keine Port-Blockierung mehr vorliegen, oder?
9000 und 9001 sind doch die Ports für den Multihost-Betrieb. Kann man den nicht einfach deaktivieren, wenn man ihn - wie ich - nicht nutzt?
EDIT: Ich glaube, es wird mal wieder Zeit für einen Clean Install.
EDIT2: Hab jetzt einen jungfräulichen ioBroker-Container erstellt, dann mit
iobroker backup
ein Backup der alten ioBroker-Konfiguration gemacht und es mit
iobroker restore <Dateiname_Backup_file>
in den neuen Container eingespielt. So wurden alle Adapter neu erstellt. Und jetzt funktioniert auch wieder das Löschen. Einziger Nachteil: ich muss jetzt die Home App wieder komplett neu konfigurieren, weil sie die bisherigen Bridges nicht mehr finden konte. Daher musste ich für jede jahka-Instanz einen neuen User setzen, und darf nun in der Home App wieder gut 200 Devices konfigurieren.
-
Endlich habe auch ich dem Umstieg von der Docker Version 2 auf die 4.1 geschafft. Falls andere auch ein Problem haben will ich hier einmal meinen Weg zeigen. Komplett ohne Terminalbefehle und quasi als Cleaninstall
Vorbemerkungen: Ich nutze Docker im Host-Modus d. h. ioBroker ist über die selbe IP erreichbar wie mein Synology. Über die Paketverwaltung vom Synology habe ich Maria-DB installiert wo ioBroker Daten archiviert (also nicht in einen anderen Docker-Container).
Desweiteren nutze ich viele Scripte die sich mit der Uhrzeit beschäftigen. Ich schreibe einmal im Tag Dämmerungszeiten, Sonnenauf- und -untergang in Objekte. Diese nutze ich um in anderen Scripten zu berechnen wann
z. B. verschiedene Lichter angehen oder die Rollos runterfahren. Für Siri nutze ich Yahka. Für Alexa entsprechend den iot-Adapter. Die meisten Komponenten sind von eq3 also Homematic.Für meine Zwecke reichen die Einstellmöglichkeiten die Synology für Docker vorsieht deshalb nutze ich kein Portainer.
Vor dem Update habe ich erstmal alle Scripte angepasst die die Astrozeiten in Objekte schreiben weil die neue Version 4 bzw wahrscheinlich die 10er Node-Version nicht mehr die tz-Einstellungen von Docker berücksichtigen.
Die Folge ist das Uhrzeiten in englischer Form ausgegeben werden. Statt "7:29:21" kommt die Ausgabe "7:29:21 AM". Beim ersten Updateversuch vor ein paar Wochen war das der Punkt das ich das Update abgebrochen habe weil viele Script damit bei mir nicht mehr liefen.Konkret habe ich nach folgenden Muster geändert:
Alt: let sunrise = getAstroDate("sunrise").toLocaleTimeString();
Neu: let sunrise = getAstroDate("sunrise").toLocaleTimeString('de-DE', { hour12: false });Danach mittels Backitup-Adapter ein Backup erstellt. Das Backup wird unter dem gemounteten Ordner auf die Synology erstellt wo auch ioBroker installiert ist. Bei mir: "docker\iobroker_daten_19-05-21". Dort legt Backitup ein Unterverzeichnis an wo das gezippte Backup liegt.
Für die neue Installation habe ich einen neuen Ordner angelegt "docker\iobrroker_20-01-26"Mit dem Filemanager von Synology habe ich die Backupdatei dann direkt in das Hauptverzeichnis "iobrroker_20-01-26" kopiert.
Danach habe ich den Container mit der Version 2 einfach angehalten. Danach die V4.1 runtergeladen und ein neuen Container angelegt. Dort habe ich nur 3 Einstellungen vorgenommen:
1: Host-Modus
2: Mount-Verzeichnis "docker\iobrroker_20-01-26" nach "/opt/iobroker/"
3: avhai von false auf trueDanach den Container V4 starten. Das Script von Andre erkennt das im gemounteten Verzeichnis ein Backup liegt und ansonsten keine ioBroker Installation vorliegt. Somit installiert es zuerst ioBroker mit dem aktuellen js-controller und startet anschließend den restore. Nach nur wenigen Sekunden (10-30) ist iobroker über die bekannte Adresse erreichbar und unter dem Menüpunkt log sieht man wie ein Adapter nach den anderen installiert wird. Die Scripte und Datenpunkte sind schon vorhanden. Im Normalfall sollte im Log keine Fehler zu finden sein. Bei mir gab es einen Fehler mit dem Nuki-extended Adapter da dort der Name geändert wurde und er es so nicht installieren konnte (habe ich hinterher manuell gemacht.)
Die Instanzen werden nicht automatisch gestartet. Nach dem Restore (bei mir etwa 20-30 Minuten). Habe ich also die Instanzen manuell gestartet.4 Probleme hatte ich:
1: den Nuki Adapter musste ich manuell nachinstallieren.
2: Unter den Einstellungen vom Javascript-Adaptern musste ich die GPS-Koordinaten eingeben damit die Script mit den Astrozeiten funktionierte Die Einstellung dort die GSP-Daten von der zentralen Konfig zu nehmen funktioniert nicht.
3: iot-Adapter. Beim starten vom Adapter gab es Fehlermeldungen im Log. Nach Neueingabe von User und Kennwort unter den iot-Einstellungen und Anforderung vom neuen Zertifikat lief der Adapter.
4: yahka. Der Adapter wurde grün aber in Homekit waren alle Geräte nicht erreichbar.Problemlösung yahka: Ich habe unter den Einstellungen im Adapter eine neue Mac-Adresse eingegeben und einen neuen Namen.
Im Homekit habe ich die alte yahka-Bridge gelöscht und unter Neu anlegen tauchte die neue sofort auf. Nach PIN-Eingabe darf man direkt allen Geräten einen Raum zuordnen.Vorteil dieser Methode: Man braucht nicht ein Terminalbefehl verwenden. Man erspart sich das manuelle Update von node oder dem js-controller. Die Problem-Punkte 1-3 sind schnell behoben einzig die Neueinrichtung von yahka ist natürlich ein großer Nachteil und je nach Geräteanzahl etwas aufwendiger.
Ein großer Vorteil ist natürlich das falls beim Update irgend etwas nicht läuft im log komische Fehler kommen kann man einfach im Admi-Bereich von Synology den Container V4.1 stoppen und den alten wieder starten. Ohne zusätzliche Sicherung oder großen Zeitverlust. Dadurch das man nicht das alte Verzeichnis nutzt oder komplett kopiert hat man quasi fast einen Cleaninstall.
-
@cash sagte in [HowTo][Anleitung] Installation ioBroker in Docker auf Synology DiskStation:
Problemlösung yahka: Ich habe unter den Einstellungen im Adapter eine neue Mac-Adresse eingegeben und einen neuen Namen.
Einen neuen Namen für die Bridge bzw. die yahka-Instanz hättest du gar nicht vergeben brauchen. Die Vergabe eines neuen User-Namens (analog MAC-Adresse) hätte genügt.
Was mir wirklich gut an dem yahka-Adapter gefällt, ist die simple Möglichkeit, weitere Bridges mittels Instanzen einzurichten, da ja bekanntlich Homekit nur ca. 100 Geräte pro Bridge/Instanz unterstützt.
-
Den neuen Namen hat den Vorteil das man die neue und alte Bridge besser auseinander halten kann. Ich habe die alte erst gelöscht als die neue lief. Das hat den Vorteil, dass falls ich doch mit der V2 erst weiter gemacht hätte ich nur den Container neu starten musste ich die Geräte sofort verfügbar sind.
Ich habe bei mir nicht soviele Geräte eingebunden, da ich mit Siri z. B. nie die Heizung steuere also habe ich dort nur eine kleine Auswahl genommen.
Die Frage wäre ja warum man überhaupt das ganze neu machen muss. Das müsste man noch irgendwie hinkriegen dann wäre das wiederherstellen per Backup wirklich die einfachste und sauberste Lösung. Ich vermute das das Backup irgend etwas nicht mitsichert und man dadurch bei yahka eine neue Bridge benötigt...
-
kurze Backup Frage.
ich nutze noch das Script von Andre aus der v2 Anleitung.
Im ersten Part des scripts wird der container angehalten.ich erhalte leider seit ein paar Wochen ein Fehler - also kein Backup gemacht.
docker stop iobroker Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/iobroker/stop: dial unix /var/run/docker.sock: connect: permission denied
hat jemand eine Idee wie ich das fixen kann... Danke
-
@dos1973 Für meinen Bitwarden Container verwende ich das folgende Script, vielleicht hilft dir das weiter, es nutzt die Synology WebAPI, dann gibts auch im DSM keine Fehlermeldungen über abgebrochene Container mehr.
Gruß, Ralf
# docker container stop /usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container version=1 method=stop name=bitwarden zip -r $bwBackup/$bwFile $bwPfad # docker container start /usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container version=1 method=start name=bitwarden