Probleme mit Node-Red über Docker und einer Ordnerauswertung

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Jrlohni

Benutzer
Registriert
14. Jan. 2020
Beiträge
39
Reaktionspunkte
0
Punkte
6
Moin Zusammen,

ich "spiele" seit einigen Tagen mit Node-Red auf der Syno. Warum auf der Syno? Hab ich und läuft 24h...
Soweit bin ich auch super begeistert und zufrieden. Bisher klappt eigentlich alles.
Da ich aber von einer Alarmanlage Fehler Dateien bekomme, welche ich per FTP auf die Syno übertrage, würde ich gerne mit Node-Red den entsprechenden Ordner auswerten und bei Eingang einer neuen Datei einen Anruf auslösen bzw. eine Mail Versenden usw. Halt einfach auswerten wenn in dem Ordner eine oder mehrere neue Dateien sind.
Dazu habe ich auch schon den passenden Node gefunden und diverse Hilfestellungen im Netz. Allerdings verstehe ich diese entweder nicht, bzw. sie enden mit der Aussage das Node-Red bzw. Docker keinen zugriff auf die entsprechenden Ordner hat. Eine Erklärung wie ich das hinbekomme, speziell auf der Syno, gibt es nicht.

Daher hoffe ich auf euch, das Ihr mir mitteilen könnt woran es bei mir scheitert, bzw. wie ich die Berechtigung für einen Docker Container auf einen Ordner zulassen kann..

Beste Grüße
Johannes
 
Dazu habe ich auch schon den passenden Node gefunden und diverse Hilfestellungen im Netz. Allerdings verstehe ich diese entweder nicht, bzw. sie enden mit der Aussage das Node-Red bzw. Docker keinen zugriff auf die entsprechenden Ordner hat.

Vorab: Ich habe bisher alle Routinen per Blockly oder per Script eingebunden. Mit Node-Red habe ich mich noch nicht beschäftigt. Spielt hierfür aber wahrscheinlich keine Rolle. Was den Zugriff zum Ordner angeht: Wahrscheinlich wirst du diesen innerhalb des Docker-Containers als Volume mappen müssen.
 
Moin,

ja richtig. Das ist auch die Fehlerbeschreibung. Wenn ich das allerdings tun möchte (per SSH mit

"sudo docker run --name=nodered -d -v ~/Ordner:pfad -p portneu:portalt nodered", kommt immer die Meldung:
"Unable to find image 'nodered:latest' locally"...

Ist an dem Befehl etwas falsch? Oder liegt es wohl doch an der Syno?

Beste Grüße
Johannes
 
Zuletzt bearbeitet von einem Moderator:
Den Syntax kann ich aufgrund der Smileys nicht erkennen. Am einfachsten wäre es, wenn du über die Syno-GUI den Container stoppst und per GUI das zusätzliche Volume einbindest.
 
Moin,

Danke! Das werde ich später wieder testen, wenn ich NodeRed wieder installiert bekommen habe...
Habe es versuchsweise aus Docker deinstalliert und per SSH installiert. Jetzt wollte ich es per Docker wieder installieren (per SSH deinstalliert), nur klappt das leider nicht...

Der Container startet sich die ganze Zeit neu. Unter dem Pfad wo das letzte mal alles installiert war ist jetzt nichts...

Ich bekomm folgende Fehler:


content
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! Failed at the node-red-docker@2.2.2 start script.
npm ERR!
npm ERR! Exit status 1
npm ERR! node-red-docker@2.2.2 start: `node $NODE_OPTIONS node_modules/node-red/red.js $FLOWS "--userDir" "/data"`
npm ERR! errno 1
npm ERR! code ELIFECYCLE
}
dest: '/data/settings.js'
path: '/usr/src/node-red/node_modules/node-red/settings.js',
code: 'EACCES',
syscall: 'copyfile',
errno: -13,
at Module.load (internal/modules/cjs/loader.js:950:32) {
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module._compile (internal/modules/cjs/loader.js:1085:14)
at Object.<anonymous> (/usr/src/node-red/node_modules/node-red/red.js:125:20)
at Object.copySync (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:26:10)
at handleFilterAndCopy (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:33:10)
at getStats (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:48:44)
at onFile (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:56:25)
at copyFile (/usr/src/node-red/node_modules/fs-extra/lib/copy-sync/copy-sync.js:70:6)
at Object.copyFileSync (fs.js:2061:3)
Error: EACCES: permission denied, copyfile '/usr/src/node-red/node_modules/node-red/settings.js' -> '/data/settings.js'
^
throw err;
internal/fs/utils.js:332
> node $NODE_OPTIONS node_modules/node-red/red.js $FLOWS "--userDir" "/data"
> node-red-docker@2.2.2 start /usr/src/node-red


Ganz oben befindet sich der letzte Eintrag... Meiner Meinung nach fehlt dort ein Pfad bzw. Dateien in einem Pfad. Aber ich weiß nicht wie ich den hinzufügen kann...

Beste Grüße
Johannes
 
Den Syntax kann ich aufgrund der Smileys nicht erkennen. Am einfachsten wäre es, wenn du über die Syno-GUI den Container stoppst und per GUI das zusätzliche Volume einbindest.
Moin,

also die Installation hat wieder geklappt. Hatte einen Tippfehler im Skript...

Zu dem Thema des Ordner Mountens:
Es klappt noch nicht. Ich habe per GUI auch den weiteren Ordner eingebunden, habe aber anscheinend noch keinen Zugriff darauf.
Kann ich den Zugriff irgendwie testen? NodeRed gibt keine Fehlermeldung...
Das GUI und die Einstellungen des WatchDirectory-Nodes seht Ihr auf dem Foto

Vielleicht hat ja jemand noch eine Idee?

Beste Grüße
Johannes
 

Anhänge

  • Bildschirmfoto 2022-02-27 um 18.24.04.png
    Bildschirmfoto 2022-02-27 um 18.24.04.png
    100,5 KB · Aufrufe: 28
  • Bildschirmfoto 2022-02-27 um 18.35.52.png
    Bildschirmfoto 2022-02-27 um 18.35.52.png
    87,8 KB · Aufrufe: 27
Zuletzt bearbeitet:
Dein "Folder" sieht mir etwas komisch aus. Wenn du den mappst, solltest du den innerhalb des Containers mit dem definierten Mount-Pfad ansprechen können. Das heißt anstelle von /volume2/homes/FTP_WEA_Drive/Fehler sollte /Fehler stehen. Hast du den Pfad manuell eingegeben?
 
Moin,

den Pfad habe ich manuell eingegeben. Den Ordner habe ich ebenfalls manuell gemountet.

Aber wenn ich nur "/Fehler" eingebe (oder auch ohne Slash), klappt es auch noch nicht...
 

Anhänge

  • Bildschirmfoto 2022-02-27 um 19.31.41.png
    Bildschirmfoto 2022-02-27 um 19.31.41.png
    81 KB · Aufrufe: 13
Moin,

ich habe es jetzt hinbekommen, weiß aber nicht warum. Irgendwie verhält sich das total komisch, vielleicht kann sich hier ja jemand einen "Reim darauf machen"...

Also, Ich hatte wie in #6 zu sehen einen weiteren Ordner gemountet. Zu dem /Fehler Ordner, noch einen /Test Ordner (nicht auf dem Screenshot zusehen, aber nach dem gleichen Prinzip).
Pfad des "/Test" Ordners ist "/homes/FTP_WEA/Drive/Fehler". Beim testen und spielen heute, habe ich den Hinweis von #7 noch einmal aufgenommen und dann einmal mit "/data" (gemountet für die Installation) getestet. Dazu habe ich auch weitere Nodes hinzugefügt und eine gefunden die mir eine Fehlermeldung ausgab, falls es nicht geht. Dort war dann teilweise die Fehlermeldung "Directory not found" und teilweise "Access denied". Letzteres wenn ich nur den Mount-Pfad angab, erstes bei dem gesamten Ordnerpfad. Dadurch war klar das @Ulfhednir natürlich recht hatte und nur der Mount-Pfad genutzt werden muss. Also schon einmal ein Riesen Dank dafür!
Dann habe ich es mit den übrigen Ordnern getestet...
"/Fehler" -> kein Zugriff
"/data" -> Zugriff und hat Dateien erkannt
"/Test" -> Zugriff und hat Dateien erkannt

Zum Aufräumen wollte ich dann noch einmal einen Ordner richtig Mounten und die anderen löschen... Als ich dann noch einen Ordner Mountete, mit dem Mount-Pfad "/All", -> funktionierte nicht (da hatte ich leider den Node, welcher mir die Fehlermeldungen anzeigte schon gelöscht - weiß also nicht ob er den Pfad nicht kannte oder kein Zugriff hatte). Ich ging aber davon aus das der Mount-Pfad nicht den gleichen Namen haben darf wie ein existierender Ordner im zu überwachenden Ordner.
Also habe ich "/Fehler" zu "/Fehlerr" gemacht. -> Node Red wurde in Docker gestartet aber es gab keine Überwachung...
Also habe ich den "/Fehlerr" Mount gelöscht -> Node Red funktionierte gar nicht mehr und wurde dauerhaft neu gestartet...
Anschließend habe ich den Ordner wieder gemountet wie er war, dann funktionierte Node-Red wieder!

Nun überwache ich den "/Test" Mount... Das Funktioniert, ist aber nicht so "Aufgeräumt"... Hat jemand eine Idee wie dieser Zustand (besonders das NodeRed nicht mehr funktioniert, wenn der nachträglich gemountete Ordner fehlt) zustande kommt?
Habe ich Recht mit der Annahme das die Mount-Pfade nicht die gleichen Namen haben dürfen wie ein Ordner im Order-Pfad?

Na ja. Es funktioniert erstmal! Danke für die Hinweise. Aber ich würde es gerne noch aufräumen, falls jemand eine Idee hat!

Beste Grüße
Johannes!
 
Moin zusammen,

leider war der "Erfolg" nicht von langer Dauer... Eine Löschroutine hat meinen Ordner gelöscht und Docker, sowie der DriveClient konnten nicht mehr darauf zugreifen. Ein einfaches Erstellen des Ordners hat auch keine Abhilfe geschaffen.... Jetzt versuch ich mich schon wieder lange Zeit daran die Überwachung hinzubekommen, aber egal was ich versuche (Neue Ordner und Pfade, Neustart, alles neu mounten) nichts klappt.. ich habe keinen Zugriff mit Docker auf die Ordner, obwohl alles so ist wie vor dem Löschen des Ordners...

Hat jemand noch eine Idee?...

Beste Grüße
Johannes
 
Hast du schon einmal den Container neu erstellt?
 
Gegenfrage, wenn du dich per Terminal auf den Container schaltest, wird der Ordner denn überhaupt angezeigt? Innerhalb des Containers kannst du mit den üblichen Shell-Befehlen cd, cd.., ls durch die Verzeichnisse hüpfen.

Das Mapping passiert automatisch, wenn die entsprechenden -v gesetzt sind.
 
Also das Terminal zeigt mir nur einen Ordner (es sind 4 vorhanden) und eine Datei (diverse vorhanden) an.
Weitere vermeintlich "gemountete" Ordner werden nicht angezeigt. Befehl lautete "ls".

Wenn ich jetzt über einen Befehl den ich im Internet fand ("mount -o bind /volume2/homes/FTP_WEA/Fehler:/err \ >> /etc/rc.local") versuche einen Ordner zu Mounten, kam die Meldung: "/etc/rc.local permission denied". Ohne den Zusatz mit /etc/ kam die Meldung: "mount: can't find /volume2/homes/FTP_WEA/Fehler:/err in /etc/fstab ".

Ich denke ich habe ein Berechtigungs- und Befehlsproblem. Dort taucht ja auch nichts mit "-v" auf wie du meintest...

Hat da jemand einen Tipp was ich dort eintippen muss?
 
Also kurz zur Info:
Ich habe Node Red jetzt "einfach" "normal" installiert. Über Node.js kann ich NodeRed ohne Docker installieren. Somit hat NodeRed Zugriff auf alle Ordner.

LG
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat