NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
@Negalein Also ich habe heute die last-Version geladen.
Da musste ich es eben noch einrichten.Ich probiere das morgen nochmal.
-
So,
ich habe jetzt mal die aktuelle Version des Containers ganz normal im Host-Modus über den Docker installiert. Und was soll ich sagen? Alles läuft. Hätte ich mir viel Ärger die letzten Tage ersparen können.
Der Portainer kam jetzt weg und die MariaDB läuft wieder direkt auf der DS in Verbindung mit phpMyAdmin über Port 3307. Auch der Zugriff auf den yahka-Adapter über die Home App klappte auf Anhieb.
Puh. Bin erleichtert.
-
@rostnagel
Was hast du denn bisher gemacht? Wie lautet deine Konfiguration?
Hast du die für den Adapter benötigten Linux-Pakete installiert?
Wie schaut es mit den Capabilities aus?
Falls dir das nichts sagt, lies bitte mal die readme vom radar2 Adapter.
Mit Adapter installieren und Device durch reichen ist es hier nicht getan....MfG,
André -
@dtp
Sorry dass ich mich jetzt erst zu Wort melde. Habe gerade mal deine letzten Beiträge gelesen und ein weiteres Mal festgestellt, dass ich dringend was in Richtung Docker Basics machen muss...Mir ist wichtig, dass jeder versteht dass der Portainer nicht Docker ist! Docker ist ein Dienst der auf dem Host (z.B. der DS) läuft. Normalerweise bedient man den Dienst per Kommandozeile. Es gibt aber auch Weboberflächen die praktisch im Hintergrund die grafischen Eingaben in Kommandozeilenbefehle umwandeln. Und die Ausgaben wiederum grafisch darstellen. Solche eine Oberfläche liefert Synology im DSM bereits mit. Das Problem: Diese Oberfläche bietet einfach zu wenig Funktionen. Eine umfangreichere Administrations-Oberfläche ist z.B. Portainer...
DIe Beziehung zwischen Docker und Portainer ist übrigens in etwa wie die Beziehung zwischen deiner mariadb und dem phpmyadmin...Weiterhin ist der Dockerdienst nunmal so konzipiert, dass man nicht einfach Konfigurationen anpassen kann. Hier gilt das Prinzip: Löschen und neu Einrichten. Mit docker-compose gibt es ein Hilfsmittel mit dem man durch ein einfaches "Konfigurationsfile" schnell und einfach einen oder mehrere Container inklusive Netzwerke, Volumes und was sonst so benötigt wird aufsetzen kann. An einem entsprechenden Tutorial inkl. Beispiel arbeite ich gerade...
Generell führen viele viele Wege zum Erfolg. Der Container lässt sich natürlich auch ohne portainer aufsetzen. Aber MACVLAN geht schonmal über die Oberfläche der DS nicht... Und auch mit dem Durchreichen von USB-Devices oder dem Setzen von Capabilities wird es da schwer. Wer das benötigt, der muss entweder eine andere Oberfläche oder die Kommandozeile verwenden...
MfG,
AndréPS: Freut mich übrigens, dass du nicht die Flinte ins Korn geworfen hast. Das Thema "ioBroker unter Docker" ist nicht ganz einfach. Um so besser dass du einen Weg gefunden hast wie es für dich am Besten funktioniert...
-
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.