NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
Hallo zusammen,
leider bin ich über die Suche nicht fündig geworden.
Ich habe eine DS416play und würde mich freuen wenn sich jemand findet, der auf diesem Modell auch erfolgreich über Docker den IOBroker installiert und erfolgreich Adapter zum laufen bekommen hat.
Ich kann zwar io borker installieren aber die Adepter laufen nicht. Z.B Flot macht probleme. Keine Datenpunkte zur Asuwertung und sieht auch in der Adpteransicht seltsam aus.
Danke vorab für eine Rückmeldung. `
Kannst du genauer werden? Ich befürchte fast dass das nichts mit der Tatsache zu tun hat, dass ioBroker unter Docker läuft.
MfG,
André
-
Moin Moin alle zusammen,
> Kleiner Tipp, zum Umzug node6 auf node8 gibt's im Tutorial und auch in der offiziellen Doku einen Hinweis. Stichwort reinstall.sh. Hat bei mir aber auch erst im zweiten Anlauf geklappt…
Der Link zu den Infos in deiner Anleitung geht nicht mehr.
Kannst du für die Angsthasen unter uns eine Anleitung schreiben, wie man einen 2ten docker container laufen lassen kann zum testen?
Ich denke wenn man als Abbild vor langer Zeit die latest geladen hat also bei Abbild steht buanet/iobroker:latest
und man wieder die latest unter registrierung lädt, wird das alte abbild überschrieben?
also muss man beim download am besten die version 2.0.0 direkt auswählen?
> Dann einfach den ioBroker-Ordner auf der DS klonen und in den neuen Container vom neuen Image einhängen
Wie mache ich das klonen?
wenn ich einfach nur über DSM den ordner kopiere, entsteht doch meta daten salat? rechte passen nicht mehr usw.
kann ich den 2 docker container auch iobroker nennen?
wenn nicht, was muss ich beachten ? `
Hallo,
stimmt, da hat sich wohl was geändert… Schau mal hier: http://www.iobroker.net/docu/?page_id=8323&lang=de
Eine Anleitung zum zweiten ioBroker werde ich nicht schreiben. Das sollte jeder hin bekommen. Es geht wirklich nur darum den Ordner zu duplizieren (z.B. ober Kommandozeile oder winscp).
Was das Image angeht. Solange ein Container aus dem Image läuft (bei dir "latest") wirst du das Image sowieso nicht löschen/ ersetzen können. Das heißt du müsstest so oder so über das 2.0.0 Image gehen (sofern du nicht mutig genug bist ;).
Meine Empfehlung: Containereinstellungen exportieren, Container löschen, Neues Image (2.0.0) laden, neuen Container aus neuem Image mit Mount auf kopiertes Verzeichnis erstellen, testen. Für den Fall dass es nicht funktioniert: Neuen Container löschen, Sicherung wieder importieren. fertig.
Zwei Container mit gleichem Namen geht glaub ich nicht.
Wenn der Container im 2.0.0 Image mit dem kopierten Ordner funktioniert, dann einfach latest-Image löschen und neu laden. iobroker Container mit gemountetem kopierten Verzeichnis löschen. Original-Verzeichnis umbenennen (z.B. _bak), kopiertes Verzeichnis auf "normalen" Namen umbenennen und anschließend den ganz am Anfang exportierten Container importieren (sollte dann aus dem neuen latest-Image und dem neuen Ordner erstellte werden.
…jetzt hab ich doch eine Anleitung geschrieben.
Viel Erfolg!
Mfg;
André
-
Hallo André,
ich werde mein Vorgehen gerne nachreichen, habe momentan nur noch ein Problem mit dem Multihostbetrieb. Ich kann die Anbindung eines Raspberry Pis nicht auf den Docker umziehen. Sobald das Problem behoben ist, melde ich mich.
Ich sehe das auch so, dass es nicht dem Dockerprinzip entspricht, aber ich habe zu viele Portüberlagerungen mit der DS, daher eigene IP mit Standardports.
-
*** Update ***
Die Lösung gibt es hier: http://www.iobroker.net/docu/?page_id=8 … ion_Nodejs unter dem Punkt "Upgrade von nodejs und npm".
cd /opt/iobroker mv reinstall.sh reinstall.dos tr -d '\r' < reinstall.dos > reinstall.sh chmod +x reinstall.sh
Dann funktioniert es auch mit dem ./reinstall.sh `
In meinem Setup (docker unter Qnap) hatte ich selbige Situation, die Lösung war auch die obige Prozedur -
Ich kämpfe immer noch mit meinen Container iobroker_test.
Wie bringe ich diesen Container in den host-Mode. Damit ich die Ports nicht umleiten muss. Die beiden Container sollen nicht parallel laufen.
-
Vielen Dank für den Tipp mit reinstall.sh. Das hat alle Probleme gelöst.
Zwei oder mehr Container mit gleicher Basis denke ich geht nur, wenn du den Docker Befehl direkt oder mit docker-Compose ausführst.
Ich hoffe, dass ich heute noch dazu komme dazu was zu schreiben.
Aber wie schon von André geschrieben wurde, kannst du ja einfach den ioBroker Ordner in einen neuen Version 2.0 Container einbinden. Falls es nicht klappt, einfach wieder die alte Version des Containers nehmen.
-
Ich habe auf die Schnelle mal mein Vorgehen zusammengefasst und hoffe ich habe nichts vergessen.
-
Ich habe mal eine Frage.
Wie kann ich den Adapter js2fs benutzten?
Weil ich nicht weiß wie ich mich via scp verbinden kann.
Wenn ich die Dateien nur durchreiche via Docker,
bekomme ich Rechte Probleme.
ich möchte mit atom.io arbeiten. der hat ein scp plugin.
wie sind eigentlich die Passwörter ?
komme ich überhaupt via terminal(mac) auf die instanz rauf ?
Mit freundlichen Grüßen
kevin
-
Ich habe mal eine Frage.
Wie kann ich den Adapter js2fs benutzten?
Weil ich nicht weiß wie ich mich via scp verbinden kann.
Wenn ich die Dateien nur durchreiche via Docker,
bekomme ich Rechte Probleme.
ich möchte mit atom.io arbeiten. der hat ein scp plugin.
wie sind eigentlich die Passwörter ?
komme ich überhaupt via terminal(mac) auf die instanz rauf ?
Mit freundlichen Grüßen
kevin `
Hallo Kevin,
bitte nochmal ein paar Infos zu Docker recherchieren. Ich weiß nicht wie oft ich schon darauf hingewiesen habe, dass der Container weder ein virtueller Pi noch eine virtuelle Maschine ist.
Es gibt keine Passwörter. Nein, nichtmal ein Rechte- oder gar Usermanagement… Braucht ein Container aber auch nicht...
Alle Daten die du im Container ablegtst sind schlecht. Der Container soll eine leere, austauschbare Hülle sein und bleiben. Entweder du arbeitest mit einem weiteren eingehängten Volume oder du machst es wie ich und lässt den Adapter die Scripte in einem Backup Ordner innerhalb /opt/iobroker ablegen und greifst über die DiskStation darauf zu...
MfG,
André
Gesendet von Unterwegs...
-
Ich habe mal eine Frage.
Wie kann ich den Adapter js2fs benutzten?
Weil ich nicht weiß wie ich mich via scp verbinden kann.
Wenn ich die Dateien nur durchreiche via Docker,
bekomme ich Rechte Probleme.
ich möchte mit atom.io arbeiten. der hat ein scp plugin.
wie sind eigentlich die Passwörter ?
komme ich überhaupt via terminal(mac) auf die instanz rauf ?
Mit freundlichen Grüßen
kevin `
Welche Rechte Probleme genau hast du?
Kannst du nicht read/write zusätzlich vergeben für deinen User?
Ich hab da auch etwas rumgefrickelt, aber nun geht's perfekt.
-
> Es gibt keine Passwörter. Nein, nichtmal ein Rechte- oder gar Usermanagement… Braucht ein Container aber auch nicht...
Also als ich den ordern /opt/iobroker auf die Diskstation durchgereicht habe,
und ein backup nach der Anleitung wieder eingespielt hatte,
waren von alle Dateien und Ordner deren Privilegien, Besitzer und Gruppen durcheinander.
Ist das wirklich völlig egal?
> Welche Rechte Probleme genau hast du?
Also ich habe folgendes versucht:
1. Ordner via Terminal erstellt im Container /opt/user_java_scripts
2. js2fs diesen Ordner als ziel Ordner deklariert
3. root Verzeichnis ist /opt/iobroker
4. adapter gestaret, alle scripte wurden kopiert
5. order auf der diskstation erstellt
6. ordner zur cloudstation hinzugefügt
7. container beendet
8. ordner von container /opt/user_java_scripts durchgereicht zum ordner der diskstation
9. alle datein haben die rechte root:root
10. sobald ich scripte editiere ändert sich die rechte auf kevin.
weil ich via cloudstation mit dem user kevin arbeiten muss.
alles scripte mit root:root kann ich weder sehen noch ändern.
wenn ich alle scipte mit kevin:users ändere kann ich sie zwar ändern aber der sync klappt nicht….
> Ich hab da auch etwas rumgefrickelt, aber nun geht's perfekt.
sag mir bitte wie du das gelöst hast.
-
> Es gibt keine Passwörter. Nein, nichtmal ein Rechte- oder gar Usermanagement… Braucht ein Container aber auch nicht...
Also als ich den ordern /opt/iobroker auf die Diskstation durchgereicht habe,
und ein backup nach der Anleitung wieder eingespielt hatte,
waren von alle Dateien und Ordner deren Privilegien, Besitzer und Gruppen durcheinander.
Ist das wirklich völlig egal? `
Nein, natürlich nicht völlig egal.
Docker selbst läuft immer als root. Erstellt man einen Container im Standard, läuft dieser auf dem Host auch als root und greift auch so auf Dateien auf dem Host zu. Es gibt aber eine Möglichkeit dem Container eine uid und eine gid mit zu geben. Dann würde der Container unter dem entsprechenden (Host-)User laufen. Habe ich persönlich aber noch nicht mit experimentiert und kann auch nicht sagen was das ggf für Auswirkungen auf iob hat…
MfG,
André
Gesendet von Unterwegs...
-
> Ich hab da auch etwas rumgefrickelt, aber nun geht's perfekt.
sag mir bitte wie du das gelöst hast. `
Hab gerade nachgeschaut, aktuell hab ich es gelöst mit read/write für "everyone" auf dem Ordner von js2fs.
-
@nisio:> Ich hab da auch etwas rumgefrickelt, aber nun geht's perfekt.
sag mir bitte wie du das gelöst hast. `
Hab gerade nachgeschaut, aktuell hab ich es gelöst mit read/write für "everyone" auf dem Ordner von js2fs. `
Hast du alle scripte in einem Ordner?
ich habe einige unterordner.
-
Ich habe auch Unterordner global, common, test, …
Meintest du die?
-
@nisio:Ich habe auch Unterordner global, common, test, …
Meintest du die? `
Ja genau. Das bedeutet, wenn man neue ordner erstellt, müssen die rechte angepasst werden?
Für jedes neues script müssen die rechte angepasst werden?
-
@nisio:Ich habe auch Unterordner global, common, test, …
Meintest du die? `
Ja genau. Das bedeutet, wenn man neue ordner erstellt, müssen die rechte angepasst werden?
Für jedes neues script müssen die rechte angepasst werden? `
Für neue Skripte muss ich nix anpassen, das klappt automatisch.
-
Hallo zusammen,
nach dem Update auf den container 2.0.0 habe ich ein Problem mit dem fs-Object.
Mit diesem javascript habe ich immer Bilder von der Kamera kopiert:
const fs = require('fs'); const ESKcam1URL = 'http://x.x.x.x/web/tmpfs/snap.jpg&-usr=xxx&-pwd=xxx'; const ESKcam1PIC = 'iobroker-data/files/icons-esk/ESKcam.jpg'; function AdapterESKcam() { request(ESKcam1URL).pipe(fs.createWriteStream(ESKcam1PIC)); }
Nach dem Container-Update und reinstall.sh kommt jetzt immer folgende Meldung im Log:
2018-12-24 13:59:11.428 - info: javascript.0 Start javascript script.js.esk_prod.AdapterESKcam 2018-12-24 13:59:11.432 - error: javascript.0 script.js.esk_prod.AdapterESKcam: script.js.esk_prod.AdapterESKcam:10 2018-12-24 13:59:11.432 - error: javascript.0 request(ESKcam1URL).pipe(fs.createWriteStream(ESKcam1PIC)); 2018-12-24 13:59:11.432 - error: javascript.0 ^ 2018-12-24 13:59:11.433 - error: javascript.0 TypeError: fs.createWriteStream is not a function 2018-12-24 13:59:11.433 - error: javascript.0 at AdapterESKcam (script.js.esk_prod.AdapterESKcam:10:33) 2018-12-24 13:59:11.433 - error: javascript.0 at script.js.esk_prod.AdapterESKcam:13:1 2018-12-24 13:59:11.433 - error: javascript.0 at ContextifyScript.Script.runInContext (vm.js:59:29)
Ist auch ein Issue im Github (https://github.com/ioBroker/ioBroker.ja … issues/243), aber ich denke, das hängt eher wirklich mit dem Update zusammen.
Hat irgendwer eine Idee?
Gruß, Ralf
-
Ist auch ein Issue im Github (https://github.com/ioBroker/ioBroker.ja … issues/243), aber ich denke, das hängt eher wirklich mit dem Update zusammen.
Hat irgendwer eine Idee?
Gruß, Ralf `
Jup, dir fehlt das Modul fs…
Also beim JavaScript adapter halt fs als zusätzliches Modul eintragen
Sent from my iPhone using Tapatalk
-
Ist auch ein Issue im Github (https://github.com/ioBroker/ioBroker.ja … issues/243), aber ich denke, das hängt eher wirklich mit dem Update zusammen.
Hat irgendwer eine Idee?
Gruß, Ralf `
Jup, dir fehlt das Modul fs…
Also beim JavaScript adapter halt fs als zusätzliches Modul eintragen `
War es vor dem Update doch auch nicht ?!
Habe es versucht, aber keine Besserung:
~~![](</s><URL url=)https://i.imgur.com/ca0EJeF.png" />
Gruß, Ralf~~