NEWS
[HowTo] ioBroker unter Docker auf Synology DiskStation
-
Hallo,
Harmony läuft jetzt bei mir.
Ich habe das Harmony Paket gelöscht und iobroker runtergefahen und neu gestartet und das Harmony Paktet neu installiert.
Danach hatte ich alle Funktionen
Jetzt bleibt nur noch das Problem mit dem Arbeitsspeicher.. :?:
-
hast du dem doker container 16 gb zugewiesen (was totaler quatsch währe) oder dynamisch zuteilen lassen
-
Kann es sein, dass man den Befehl "exec" und oder "wget" innerhalb des buanet Containers per iobroker Skript nicht aufrufen kann?
Ich habe mir immer per Sript mittels des exec Befehls ein Standbild von meiner Webcam geholt auf /opt/iobroker/Cache/bild.jpg.
Muss der Pfad vielleicht anders angegeben sein in einer Dockerumgebung?
-
Hast Du vorher den Ordner erstellt? (ich nehme an ja, frage aber trotzdem mal nach)
Rechte dann auch vergeben?
Des Weiteren kann ich Dir nur empfehlen das gesammte Dockerverzeichnis von iobroker zu mounten. Macht vieles einfacher
-
Danke für den Hinweis!
Habe es gelöst:
Also: Ich hatte tatsächlich den cache-Ordner nicht erstellt. Ich bin davon ausgegangen er ist "ab Werk" vorhanden.
OK, Ordner erstellt, geht immer noch nicht.
Dann im iobroker Containerterminal ein bisschen gespielt und festgestellt, dass "wget" nicht installiert ist.
Habe dann wget nachinstalliert mit "````
apt update
apt install wgetSeitdem geht es wieder 8-) Mh, aber beim nächsten Containertausch ist das wget wieder weg… :?
-
Ich habe dem ioBoker 4 GB zugeordnet, vorher habe ich diesem nichts zugordnet, und da fing ermit 16 BG an und senkte sich dann …
Nach der Festlegung von 4GB ist dennoch der niedrige Speicher vorhanden...
-
Danke für den Hinweis!
Habe es gelöst:
Also: Ich hatte tatsächlich den cache-Ordner nicht erstellt. Ich bin davon ausgegangen er ist "ab Werk" vorhanden.
OK, Ordner erstellt, geht immer noch nicht.
Dann im iobroker Containerterminal ein bisschen gespielt und festgestellt, dass "wget" nicht installiert ist.
Habe dann wget nachinstalliert mit "````
apt update
apt install wgetSeitdem geht es wieder 8-) Mh, aber beim nächsten Containertausch ist das wget wieder weg… :? `
Du hast sicher auch ne Export Funktion?
Ich exportier mir einen Container immer wenn alles gut läuft….seltenes neu aufsetzen also
-
Aber dann habe ich doch auch den alten Container, oder? Und bei den Einstellungen exportieren wird wget bestimmt nicht mitexportiert?
-
Aber dann habe ich doch auch den alten Container, oder? Und bei den Einstellungen exportieren wird wget bestimmt nicht mitexportiert? `
Ich kann meine Container einzeln exportieren…...also mit Auswahl welchen ich möchte. Ich denke es wird der komplette Container exportiert, also alles was dort gemacht wurde.
Hab ich so noch nie versucht, da mir ein Rückspielen der gesicherten Ordner gereicht hat
-
Muss man wirklich mal durchtesten.
Ich meinte, wenn watchdog mir das Image:latest durch ein aktuelles ersetzt. Ich glaube, man müsste das buanet-Image Forken und das fehlende wget-Paket direkt ins Image einpflanzen. Aber das ist mir zu hoch.
… oder ich baue mir ein Script, welches beim starten von iobroker mit exec wget (drüber-)installiert? Das müsste gehen, oder?
-
Jetzt bleibt nur noch das Problem mit dem Arbeitsspeicher.. :?: `
Das habe ich auch noch nicht gelöst bekommen:
804MB RAM verbraucht / Frei 169 (2%) 15 Prozesse
…obwohl auf der Synology DS218+ noch 8GB RAM frei sind und keine Ressourcenbeschränkung eingestellt wurde.
Hat der Container selbst eine Grenze auf 1GB oder wo ist die eingestellt?
Und kann man die höher setzen?
-
Das habe ich auch noch nicht gelöst bekommen:
804MB RAM verbraucht / Frei 169 (2%) 15 Prozesse
…obwohl auf der Synology DS218+ noch 8GB RAM frei sind und keine Ressourcenbeschränkung eingestellt wurde. `
Ich glaub, da gibt's nichts zu lösen. Mir scheint, der ioBroker erhält im Container einfach nicht die richtigen Speicherwerte. Ich habe z.B. 6 GB auf meiner DS718+ installiert. Das wird so auch im Docker korrekt angezeigt.
Auf der Admin-Oberfläche des ioBroker erhalte ich aber die folgenden Werte angezeigt:
Wenn ich nun noch weitere Adapter installiere, steigt einfach die RAM-Nutzung, ohne dass der freie Speicher deutlich runter geht. Da holt sich der ioBroker dann wohl einfach den benötigten RAM.Ich würde mir da ehrlich gesagt keinen großen Kopf drum machen.
Bis dann,
Thorsten
-
Danke, dann werde ich mal weiter installieren & beobachten.
Coole Admin-Oberfläche für's iPad: Wie kommt man da dran?
Ich habe die "normale" Web-Oberfläche, ist etwas unübersichtlich.
-
Muss man wirklich mal durchtesten.
Ich meinte, wenn watchdog mir das Image:latest durch ein aktuelles ersetzt. Ich glaube, man müsste das buanet-Image Forken und das fehlende wget-Paket direkt ins Image einpflanzen. Aber das ist mir zu hoch.
… oder ich baue mir ein Script, welches beim starten von iobroker mit exec wget (drüber-)installiert? Das müsste gehen, oder? `
Hallo,
am besten einfach mal fragen. Ich kann das Paket mit in den Container nehmen… Darf ich fragen was du mit wget machst?
Die Export-Funktion ist für Container Updates nicht geeignet. Damit wird ja der gesamte Container inklusive allem Inhalt exportiert. Bei einem neuerlichen Import findet also keine Aktualisierung statt.
PS: Sorry falls ich im moment ein bisschen verzögert antworte, aber weil tapatalk nicht mehr geht bekomme ich weder Benachrichtigungen noch kann ich von unterwegs schnell mal meinen Senf dazu geben...
MfG,
André
[EDIT] wget ist drin. Läuft unter Beta. Build ist angestoßen, das neue Image sollte demnächst zur Verfügung stehen.
-
Aber dann habe ich doch auch den alten Container, oder? Und bei den Einstellungen exportieren wird wget bestimmt nicht mitexportiert? `
Ich kann meine Container einzeln exportieren…...also mit Auswahl welchen ich möchte. Ich denke es wird der komplette Container exportiert, also alles was dort gemacht wurde.
Hab ich so noch nie versucht, da mir ein Rückspielen der gesicherten Ordner gereicht hat `
Hallo,
das Exportieren dient maximal zur Datensicherung (auch wenn ich da eine andere Methode bevorzugen würde) nicht aber zum Aktualisieren eines Containers. Siehe dazu auch der Punkt zur Aktualisierung des Containers in der Anleitung.
Zur Aktualisierung gibt es nur zwei Möglichkeiten: Entweder über die Kommandozeile den bestehenden Container hin und wieder updaten (apt-get update, apt-get upgrade) oder ab und an Container löschen, Image updaten, Container neu erstellen (siehe Anleitung).
MfG,
André
-
Danke, andre! Das wäre der Hammer wenn wget mit drin ist! :ugeek:
wget nutze ich in verschiedenen Scripten, um ein Standbild von meiner Webcam D-Link DSC-2332L abzuholen. Das Standbild wird dann innerhalb von 1-2 Sekunden erzeugt und wird dann danach per Telegram an mich verschickt. Auslöser sind verschiedene Sachen, wenn jemand klingelt oder wenn ich es per Telegrambefehl abfordere. Den Code kann ic hgerne mal posten, er müsste aber in den Untiefen des Forums hier schon irgendwo sein (habe ich aber nicht gefunden).
-
Danke, andre! Das wäre der Hammer wenn wget mit drin ist! :ugeek:
wget nutze ich in verschiedenen Scripten, um ein Standbild von meiner Webcam D-Link DSC-2332L abzuholen. Das Standbild wird dann innerhalb von 1-2 Sekunden erzeugt und wird dann danach per Telegram an mich verschickt. Auslöser sind verschiedene Sachen, wenn jemand klingelt oder wenn ich es per Telegrambefehl abfordere. Den Code kann ic hgerne mal posten, er müsste aber in den Untiefen des Forums hier schon irgendwo sein (habe ich aber nicht gefunden). `
Hallo,
Build ist durchgelaufen, also sollte wget ab sofort im neuen Beta-Image drin sein.
Offtopic:
! Ok, ich mache das selbe mit meiner Cam. Allerdings komme ich ohne wget aus. Ich mache das per request. habe ich hier auch irgendwo im Forum gesehen:
var source_url = 'http://xxxx', // Pfad zum Kamerabild dest_path = '/opt/transfer/webcam/'; // Pfad zum Speicherort var request = require('request'); var fs = require('fs');
! ````
function saveImage() {
request.get({url: source_url, encoding: 'binary'}, function (err, response, body) {
fs.writeFile(dest_path + 'kamerabild.jpg', body, 'binary', function(err) { // Dateiname Kamerabild
! if (err) {
log('Fehler beim Bild speichern: ' + err, 'warn');
} else {
log('Webcam Bild gespeichert');
sendImage(dest_path + 'kamearbild.jpg'); // Optional Kamerabild senden, bei mir mit Telegram.
}
});
});
}>! Sind natürlich nur die entsprechenden Codefragmente. Aber so geht es bei mir. :) >! Habe übrigens eine Foscam. MfG, André
-
Hallo,
Build ist durchgelaufen, also sollte wget ab sofort im neuen Beta-Image drin sein. `
Hi André!
habe gerade von :latest auf :beta umgestellt und es klappt hervorragend. wget ist nun "ab Werk" installiert. Danke vielmals!
Hier mein wget - Foto Abholbefehl per Telegram:
! ````
// ###################################################
// Webcamfoto schicken
! on("telegram.0.communicate.request", function (obj) {
if (obj.newState.val == "[xxx]torfoto" || obj.newState.val == "[xxx]/torfoto") {
getfoto();
setState("telegram.0.communicate.request","leer");
}
});
! function getfoto() {
exec ("wget --user=xxxx--password=xxxx-N -P /opt/iobroker http://192.168.1.xxx/dms?nowprofileid=1.jpg");
sendphoto(); // Rufe Funktion sendphoto aufsetState("telegram.0.communicate.request","leer"); sendTo('telegram', 'Was noch?' + '\n' + '/haus' + '\n' + '/haupthahn' + '\n' + '/heckehatti' + '\n' + '/reboot');
}
! function sendphoto() { // Warteschleife, 2 Sekunden, damit das Bild erzeugt wird
setTimeout(waittime, 2000);
}
! function waittime() { // Nach der Warteschleife, sende das Bild per Telegram
sendTo('telegram', "/opt/iobroker/dms?nowprofileid=1.jpg");
}
! ```` -
Der Docker Container läuft perfekt, vielen Dank dafür.
Habe noch eine Synology-spezifische Frage: Ich möchte auch die ioBroker-Authentifikatiion zum Schutz von admin und vis in Betrieb nehmen. Wie an mehreren Stellen zu lesen ist, geht das nur in Verbindung mit "Verschlüsselung(HTTPS)" und eigenen Zertifikaten. Das funktioniert bei mir allerdings nicht, da ja die Synology die Ports 80 & 443 besetzt hat und sich darüber selbst Zertifikate über Lets encrypt beschafft.
Bisher habe ich das immer gelöst, in dem ich unter Synology/Anwendungen den reverse Proxy (nginx) aktiviert habe und lasse bepielsweise nextcloud.xxx.myds.me auf den Docker-Port der Anwendung verweisen, so dass ich hier kein Zertifikat mehr benötige.
Das würde ich für den ioBroker auch so machen und alles den Zugriff nur noch über die IP der Synology zu damit keiner den https umgehen kann.
Wie kann ich den hhtps-Zwang für die Authentifikation befriedigen wenn ich Port 80 für iobroker nicht bereit stellen kann?
Muss ich die Zertifikate etwa alle 3 Monate von der Synology in ioBroker importieren?
Gruß, Ralf
-
Hey! Cooles Projekt mit Docker. Funktioniert einwandfrei. Gute Anleitung!
Wollte heute mal ein Update fahren. Habe aus diesem Forumsbeitrag rausgelesen, dass man folgende Kombination verwenden kann um ein Update des Containers zu machen und danach ein Update von js-controller durchführen kann:
Update Container:````
apt-get update
apt-get upgradeUpdate js-controller:```` pkill io npm install iobroker.js-controller –production node node_modules/iobroker.js-controller/controller.js >/opt/scripts/docker_iobroker_log.txt 2>&1 &
Leider kommt dann folgender Fehler:````
root@buanet-iobroker1:/opt/iobroker# pkill io
root@buanet-iobroker1:/opt/iobroker# npm install iobroker.js-controller –product
ion
npm ERR! addLocal Could not install /opt/iobroker/–production
npm ERR! Linux 3.10.102
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "iobroker.js-controller"
"–production"
npm ERR! node v6.13.1
npm ERR! npm v3.10.10
npm ERR! path /opt/iobroker/–production
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall opennpm ERR! enoent ENOENT: no such file or directory, open '/opt/iobroker/–producti
on'
npm ERR! enoent ENOENT: no such file or directory, open '/opt/iobroker/–producti
on'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoentnpm ERR! Please include the following file with any support request:
npm ERR! /opt/iobroker/npm-debug.log
[1]+ Exit 1 node node_modules/iobroker.js-controller/controlle
r.js > /opt/scripts/docker_iobroker_log.txt 2>&1
root@buanet-iobroker1:/opt/iobroker# node node_modules/iobroker.js-controller/co
ntroller.js >/opt/scripts/docker_iobroker_log.txt 2>&1 &
[1] 10117Habt Ihr eine Idee? Danke euch!