Node-RED-Integration zum Starten eines Containers mit einem Klick

Hallo @Psoy @Lokkye

Tatsächlich, nachdem die Container gelöscht und dann mit
docker run -d --log-opt max-size=10m --restart=always --privileged --network=host --name gladys-test-nodered -e NODE_ENV=production -e SERVER_PORT=8010 -e TZ=Europe/Paris -e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/gladysassistant:/var/lib/gladysassistant -v /dev:/dev -v /run/udev:/run/udev:ro delogzway/gladys:nodered
einfach alles läuft super :crazy_face:
Bravo @Lokkye :clap: Tausendmal danke, das wird Gladys viel attraktiver machen, da es jetzt auf einfache Weise über Node-Red für alles geöffnet ist! Ein großer Fortschritt! :+1:
Kleine Frage:
Wird es möglich sein, die Anmeldedaten später zu ändern oder sogar die Option zu haben, die Authentifizierung zu aktivieren oder zu deaktivieren, oder sogar über
die Möglichkeit zu starten
image
ohne sich zusätzlich authentifizieren zu müssen?
Gleiches gilt für den Port?

@Psoy @cce66 Das ist keine Lösung, es muss wirklich funktionieren, auch ohne das Volume /var/lib/gladysassistant, sonst wird es für alle Nutzer, die Synology/Unraid oder jede andere Plattform nutzen, wo das Volume anders ist, abstürzen!

@Lokkye Hast du eine Idee, was schiefgehen könnte? Kannst du es reproduzieren?

Ich führe gerade Tests auf meiner Seite durch. Ich habe ein paar Probleme gesehen. Ich bin dabei, sie zu beheben.

Hallo @pierre-gilles @Lokkye
Zugegeben, aber ist es wirklich sinnvoll, zwei separate Node-RED-Instanzen zu haben und warum sollte die Instanz von @Lokkie einen anderen Pfad haben? Es erscheint mir sinnvoller, dass der Pfad jetzt der von gladysassistant ist, da Node-RED integriert und von Gladys verwaltet wird, zumal dies auch die Sicherung der Flows ermöglichen würde?
Was jedoch meiner Meinung nach wichtig ist, ist, dass der Übergang von der alten Node-RED-Verwaltung zur neuen Node-RED-Verwaltung durch Gladys transparent und ohne Datenverlust erfolgt.

@pierre-gilles @cce66 @Psoy
Ich habe gerade das Problem verstanden, es geht um « basePathOnContainer » und « basePathOnHost ».
Ich habe gerade eine neue Version des Docker-Images veröffentlicht. Ich habe es in alle Richtungen getestet (erster Start, Neustart, Löschen des node-red-Ordners, Volumenänderung, …)
Zögern Sie nicht, zu pullen und mir Feedback zu geben (vielen Dank im Voraus)

Ich habe keinen anderen Pfad. Ich muss nur die node-red-Konfigurationen im gladys-Ordner installieren, um mit allen möglichen Installationen kompatibel zu sein.

Genau das ist es

Ich weiß nicht, ob das automatisch möglich sein wird, da die node-red-Instanzen bisher nicht von Gladys bekannt waren. Allerdings habe ich gerade gesehen, dass es die Möglichkeit gibt, Exporte und Importe in node-red durchzuführen. Daher würde ich vorschlagen, die Exporte/Importe manuell von der alten Instanz zur neuen node-red-Instanz durchzuführen.

@Lokkye

Ich erinnere mich nicht mehr, ob sich das geändert hat, aber um auf Gladys in deinem Testbild zuzugreifen, was sind die Anmeldedaten?
Ich kann nicht auf http://192.168.0.xxx:8010 zugreifen, aber ich kann auf Node-RED zugreifen http://192.168.0.xxx:1881

Ja, aber das importiert nicht die benötigten node_modules für die Flows.
Wenn man eine Kopie von /var/lib/node-red/node_modules/
nach /var/lib/gladysassistant/node-red/node_modules/
macht, werden sie geladen, aber es bleiben auch Probleme mit den Anmeldedaten.


Vielleicht könnte man sich von [Tutorial] Automatisches Backup von Node-RED https://www.youtube.com/watch?v=l56VQgTpVBY inspirieren lassen
und es so anpassen, dass ein Backup des alten Node-RED und ein Wiederherstellen auf das neue durchgeführt wird?
Ich werde es mal versuchen…

Offensichtlich reicht es, den Inhalt von
/var/lib/node-red
nach
/var/lib/gladysassistant/node-red
zu kopieren

Ich bestätige, dass man durch das Kopieren alles wiederherstellt und es perfekt funktioniert!
@lokkie @pierre-gilles Allerdings werden die Verzeichnisse homekit und mosquitto im Testverzeichnis erstellt, ist das normal?

@lokkie
nach dem Stoppen und Entfernen der Container
nach dem docker pull des neuen Bildes mit
docker pull delogzway/gladys:noderet
und dem Starten des Containers mit
docker run -d --log-opt max-size=10m --restart=always --privileged --network=host --name gladys-test-nodered -e NODE_ENV=production -e SERVER_PORT=8010 -e TZ=Europe/Paris -e SQLITE_FILE_PATH=/var/lib/gladysassistant/gladys-production.db -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/gladysassistant_test_nodered:/var/lib/gladysassistant -v /dev:/dev -v /run/udev:/run/udev:ro delogzway/gladys:nodered

i aktiviere node-red


i deaktiviere es und habe

i muss ein Refresh durchführen, um

zu erhalten und wieder aktivieren zu können
Übrigens, beim ersten Login (nach der Installation) gebe ich die Anmeldedaten ein und kann mich nicht bei node-red anmelden (ungültige Anmeldedaten), ich deaktiviere node-red, aktiviere es erneut und dann kann ich mich anmelden, danach funktioniert alles normal ohne Authentifizierungsanfrage, vielleicht ein Autofill der Felder?

ich starte den node_red-Container neu, ich habe Zugriff auf mein altes node-red mit seinen Flows auf Port 1880

scheinbar müssen nur die JSON-Dateien, die sich in der Wurzel befinden, kopiert werden
flows.json enthält die Flows und package.json enthält die Namen der für die Flows erforderlichen Module
vielleicht kann das helfen

es sollte möglich sein, wenn man den node-red-Container aktiviert, den Pfad des ersten node-red-Containers und den des zweiten node-red-Containers (Version @lokkie) abzurufen und den Inhalt des ersten in den zweiten zu kopieren, bevor man den node-red (Version @lokkie) startet, falls man das möchte?

Ich glaube auch nicht, dass das automatisch möglich ist, denn die Gladys-Instanz hat keinen Zugriff auf die derzeit verwendeten Ordner.

Jedenfalls richtet sich diese Integration an ein Publikum, das Node-RED nicht selbst starten kann. Wenn du Node-RED bereits selbst gestartet hast, hast du im Moment wenig Interesse daran, es in Gladys zu starten… ^^

Ja.

@pierre-gilles @Lokkye

Das stimmt, bei der offiziellen Integration reicht es, die notwendigen Informationen bereitzustellen oder sie in die Dokumentation der Integration zu integrieren

Ah, da bin ich nicht einverstanden, denn für die „Gladys Plus“-Benutzer ist es ein Plus, ihre Node-RED-Umgebung zu sichern, vorausgesetzt, das Verzeichnis /var/lib/gladysassistant/node-red ist in der Sicherung enthalten (in diesem Fall müssten nur die wesentlichen Elemente gesichert werden, wie im Video angegeben, denn ich nehme an, du hast eine Beschränkung der Sicherungsgröße)

@pierre-gilles du könntest später ein Video für die Anglophoben machen, das zeigt, wie man das bestehende Node-RED sichert, um es in das von Gladys verwaltete zu wiederherstellen, ich sage ja nur! :wink:

Guten Abend @Lokkye
Also, ich habe es gerade noch einmal getestet, also jetzt funktioniert es mit dem Befehl

-v /var/lib/gladysassistant_test_nodered:/var/lib/gladysassistant \

Wie @cce66, nachdem ich auf den NodeRed-Link geklickt habe, kann ich die NodeRed-Seite aufrufen, aber das Kopieren/Einfügen der Anmeldedaten funktioniert nicht beim ersten Mal (Verbindungsfehler). Ich musste NodeRed deaktivieren und dann wieder aktivieren, und dann hat das Kopieren/Einfügen funktioniert und ich kann NodeRed aufrufen.

Nein, Gladys Plus wird Node-RED nicht sichern, das gehört nicht zu dieser Entwicklung. Diese Entwicklung startet nur einen Node-RED-Container. Ich bin mir nicht sicher, ob Node-RED die gleichen Sicherungsmöglichkeiten wie Zigbee2mqtt hat.

Hallo @pierre-gilles,
Donnerwetter, Donnerlittchen, Teufel auch, Himmelherrgott und Donnerwetter nochmal! :bomb:
Ich bin enttäuscht :sob:
Schade, denn in Bezug auf Backups sind das nicht viele Daten, aber vielleicht in Zukunft … :slight_smile:

Nun, sagen wir mal, da wir vorher keine andere Wahl hatten … Sobald diese Integration betriebsbereit ist, werde ich eine saubere Installation durchführen und nur die Verwaltung über Gladys beibehalten.
Für das Backup verwende ich den « [Tuto] Automatisches Backup von Node-RED » https://www.youtube.com/watch?v=l56VQgTpVBY, aber es stimmt schon, ein Backup über Gladys Plus – was wird eigentlich von Gladys Plus gesichert (besteht die Gefahr, dass Parameter anderer Gladys-Integrationen verloren gehen)?

@Lokkye Könntest du eine Nachricht in der Oberfläche hinzufügen, die besagt, dass Node-RED nicht von Gladys Plus gespeichert wird und dass der Benutzer, wenn er seine Node-RED-Instanz sichern möchte, seine Flows manuell in Node-RED exportieren oder eine automatische Sicherung auf Node-RED-Seite einrichten muss? Das wäre klarer und würde Verwirrung vermeiden.

Hallo,
Aber wenn wir einen speziellen Antrag dafür stellen, sind wir uns einig, dass das möglich ist?
Ich würde diese Integration persönlich nicht nutzen, aber es war nur, um deinen Punkt « das gehört nicht zu dieser Entwicklung » zu verstehen :slight_smile:

Keine Ahnung, bisher habe ich den Eindruck, dass das nicht geht, aber ich bin kein Node-RED-Experte :slight_smile:

Ich habe gerade ein neues Bild veröffentlicht mit:

  • Der Korrektur der Verbindung beim ersten Start
  • Der Anzeige des Buttons, wenn Node-RED deaktiviert wird

Ab an die Tests, fertig, los :slight_smile:

@pierre-gilles,
Für das Backup, wenn ich eine Möglichkeit finde, die Informationen von Node-RED zu exportieren und zu importieren, denkst du, dass dies in die Gladys-Sicherung übernommen werden könnte? (in Bezug auf Volumen/Preis des Abonnements)

Was wir auf der Seite von Zigbee2mqtt machen, ist, dass Zigbee2mqtt eine API anbietet, die alle Parameter im JSON-Format exportiert, die es ermöglichen, eine Instanz von Null aus wiederherzustellen, und wir speichern dieses JSON in einer „Variablen“ in der DB :slight_smile:

Auf diese Weise ist die Sicherung in Gladys Plus enthalten, und die Zigbee2mqtt-Integration testet beim Start von Gladys die Präsenz der Variable und stellt Zigbee2mqtt wieder her.

Wenn Node-RED eine API anbietet, warum nicht. Danach sollte man das Dateisystem nicht naiv sichern, das ist die beste Methode, um eine beschädigte Sicherung zu erhalten (und vor allem, wir werden uns nicht amüsieren, node_modules in Gladys Plus zu sichern), wenn Node-RED keine API anbietet, dann ist es nicht möglich…

Offensichtlich muss man nur eine Variable hinzufügen, die den externen Pfad definiert, an dem die Flows gespeichert werden sollen

-v /var/lib/gladysassistant_test_nodered/node-red/data:/data

Verwaltung von Benutzerdaten

Sobald Node-RED mit Docker läuft, müssen wir sicherstellen, dass keine hinzugefügten Knoten oder Flows verloren gehen, wenn der Container zerstört wird. Diese Benutzerdaten können durch das Mounten eines Datenverzeichnisses auf ein Volume außerhalb des Containers persistiert werden. Dies kann entweder mit einem Bind-Mount oder einem benannten Datenvolume erfolgen.

Node-RED verwendet das Verzeichnis /data innerhalb des Containers, um Benutzerkonfigurationsdaten zu speichern.

Verwendung eines Host-Verzeichnisses für die Persistenz (Bind Mount)

Um Ihr Node-RED-Benutzerverzeichnis innerhalb des Containers in einem Host-Verzeichnis außerhalb des Containers zu speichern, können Sie den folgenden Befehl verwenden. Damit der Zugriff auf dieses Host-Verzeichnis möglich ist, muss der Benutzer node-red (Standard-UID=1000) innerhalb des Containers denselben UID wie der Besitzer des Host-Verzeichnisses haben.

docker run -it -p 1880:1880 -v /home/pi/.node-red:/data --name mynodered nodered/node-red

In diesem Beispiel wird das Host-Verzeichnis /home/pi/.node-red an das Container-Verzeichnis /data gebunden.

Hinweis: Benutzer, die von Version 0.20 auf 1.0 migrieren, müssen sicherstellen, dass jedes vorhandene /data-Verzeichnis die richtigen Berechtigungen hat. Ab Version 1.0 muss dies 1000:1000 sein. Dies kann mit dem Befehl sudo chown -R 1000:1000 path/to/your/node-red/data erzwungen werden.

Weitere Informationen zu Berechtigungen finden Sie im Wiki.

Ich mache heute Nachmittag Tests dafür, also wenn es nur eine Zeile ist, die hinzugefügt werden muss… :wink:

Ach nein, das geht nicht, es ist eine Zeile, die in dem Befehl geändert werden muss, den @lokkie in seiner Integration startet, schnarch :smiling_face_with_tear: @lokkie ist der Meister der Schlüssel :sob: :rofl:

@pierre-gilles

Nein, es ist nicht nötig, die Datei /var/lib/gladysassistant_test_nodered/node-red/packages.json enthält die Liste der für die Flows benötigten Module und wenn sie fehlen, werden sie neu geladen

Ja, es gibt APIs, aber ich weiß nicht, wie @lokkie das umsetzen kann

Storage API

Die Storage API bietet eine erweiterbare Möglichkeit, zu konfigurieren, wo die Node-RED-Laufzeitumgebung Daten speichert.

Die von der API gespeicherten Informationen umfassen:

Flow-Konfiguration
Flow-Anmeldedaten
Benutzereinstellungen
Benutzersitzungen
Node-Bibliotheksinhalte

und die Methoden für diese API hier

Dort gibt es einen interessanten Abschnitt

Bei der Installation von Node-Red auf Docker wurde Ihr Volume für das Datenverzeichnis von und gehört dem Benutzer « root », dessen Benutzerkennung « uid=0 gid=0 » lautet. Der Node-Red-Benutzer innerhalb des Containers, der das Verzeichnis /data besitzt, hat jedoch andere Kennungen: « uid=1000 gid=1000 ». Sie können dieses Problem lösen, indem Sie sich per SSH auf Ihrem Server anmelden und die Eigentümerschaft des Docker-Volumes auf den Benutzer mit der ID 1000:1000 ändern, indem Sie den folgenden Befehl ausführen:

Ich bin als « root » angemeldet, der Befehl « sudo » ist nicht nötig, aber ich gebe ihn Ihnen für den Fall der Fälle mit.

sudo chown -R 1000:1000 /mnt/node-red/data

Man muss also wahrscheinlich dieselben Rechte für

var/lib/gladysassistant_test_nodered/node-red/data

setzen
Danach ist es zwar wahr, dass dies für den Fall einer Nutzung unter Linux gilt, unter Windows (ich denke, es gibt keine Probleme) und unter Synology weiß ich nicht (obwohl Syno eigentlich Linux ist, aber vielleicht gibt es im Syno eine integrierte Backup-Option, wenn Synology-Nutzer die Antwort geben können)