Intégration Node-RED pour lancer un container en un clic

Salut @Psoy @Lokkye

Effectivement en purgant les containers puis en relancant avec
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
tout marches nickel :crazy_face:
Bravo @Lokkye :clap: Mille fois merci ca va rendre gladys bien plus attractif car maintenant ouvert sur tout de façon simple via node-red ! Une sacrée avancée ! :+1:
Petite question :
Ce sera possible de pouvoir changer les identifiants ensuite voire choisir d’activer ou pas l’authentification ou alors de lancer via
image
sans avoir en plus à s’'authentifier en plus après
?
Pareil pour le port ?

@Psoy @cce66 Ce n’est pas une solution, il faut vraiment que ça fonctionne même sans le volume /var/lib/gladysassistant, sinon ça va crasher pour tous les utilisateurs qui sont sur Synology/Unraid, et tout autre plateforme où le volume est différent !

@Lokkye Une idée de ce qui pourrait ne pas aller ? Tu arrives à reproduire ?

Je suis en train de faire des test de mon coté. J’ai vu des petits problèmes. Je suis en train de corriger

1 « J'aime »

Bonjour @pierre-gilles @Lokkye
Certes mais est-ce bien utile d’avoir 2 instances node-red distinctes et pourquoi l’instance de @Lokkie devrait avoir un chemin différent ? Cela me sembles plus cohérent que le chemin soit celui de gladysassistant maintenant que node-red est intégré et géré par Gladys d’autant plus que cela permettrait la sauvegarde des flows non ?
Ce qu’il faut par contre je pense c’est faire en sorte que le passage de la gestion de node-red ancienne méthode à la nouvelle gestion de node-red géré par Gladys soit transparente et sans pertes de données.

@pierre-gilles @cce66 @Psoy
Je viens de comprendre le problème une histoire de « basePathOnContainer » et de « basePathOnHost ».
Je viens de sortir une nouvelle version de l’image docker. Je l’ai testé dans tout les sens (1er démarage, redemarage, suppression du dossier node-red, changement de volume, …)
N’hésité pas a pull et a me faire des retours (merci d’avance)

Je n’ai pas un chemin different. Il faut juste que j’installe les configs de nodered dans le dossier de gladys pour être compatible avec toutes les installations possible.

C’est bien cela

Je ne sais pas si cela pourra être automatique car jusqu’a maintenant les instances de node-red n’était pas connu de Gladys. Cependant je viens de voir qu’il y a la possibilité de faire des exports et imports dans node-red. Donc je préconiserais de faire les exports/imports manuellement depuis l’ancienne instance vers la nouvelle instance de node-red.

@Lokkye

Je me souviens plus ou ça a changé mais pour accéder à gladys de ton image de test c’est quoi déjà
les identifiants (je n’accède pas http://192.168.0.xxx:8010 mais j’accède bien au nodered http://192.168.0.xxx:1881)

oui mais cela importe pas entre autres les node_modules nécessaires aux flows
en faisant une copie de /var/lib/node-red/node_modules/
vers /var/lib/gladysassistant/node-red/node_modules/
cela les charge mais il reste des problèmes de crédentials aussi
image
peut-être s’inspirer de [Tuto] Backup automatique de Node-RED https://www.youtube.com/watch?v=l56VQgTpVBY
en le modifiant pour faire un backup de l’ancien node-red et un restore ver le nouveau ?
Je vais essayer pour voir…

Apparemment il suffit de faire une copie du contenu de
/var/lib/node-red
vers
/var/lib/gladysassistant/node-red

je confirme en faisant la copie on récupères tout et cela fonctionne nickel !
@lokkie @pierre-gilles par contre il y a une création du repertoire homekit et mosquitto dans le rep de test, normal ?

@lokkie
après stop et remove des containers
après docker pull la nouvelle image avec
docker pull delogzway/gladys:nodered
et lancé le container avec
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

j’active node-red


je désactive et j’ai

je suis obligé de faire un refresh pour avoir

et à nouveau pouvoir activer
Au passage, lors de la première connexion(suite installation), j’entre les identifiants et je ne peux pas me connecter à node-red(identifiants invalides), je désactive node-red, je réactive et là je peux me connecter ensuite plus de problème cela se connectes normalement sans demande d’authentification, peut-être l’autofill des champs ?

je restart le container node_red, j’ai bien accès à mon ancien node-red avec ses flows sur le port 1880

aparament seuls les json présents à la racine sont à copier
flows.json contient les flows et package.json contient les noms des modules nécessaires pour les flows
cela peut-être peut aider

il doit être possible de récupérer quand on actives le container node-red le path du 1er container node-red et celui du 2d container node-red (version @lokkie) et copier le contenu du p1er dans le 2d avant de lancer le node-red (version @lokkie) aenfin si on le veut ?

Je ne pense pas que ce soit possible d’être automatique non plus, l’instance Gladys n’a pas accès aux dossiers actuellement utilisé.

De toute façon, cette intégration ne s’adresse qu’à un public qui ne sait pas lancer lui même Node-RED. Si tu as déjà lancé Node-RED toi même, tu as assez peu d’intérêt pour l’instant à le lancer dans Gladys… ^^

Oui.

@pierre-gilles @Lokkye

C’est vrai, il suffira lors de l’officialisation de cette intégration de donner les infos qu’il faut voire l’intégrer dans la doc de l’intégration

Ah bah là je suis pas d’accord car pour les utilisateurs "Gladys Plus " c’est un plus que de pouvoir sauvegarder son environnement nodered enfin si le répertoire /var/lib/gladysassistant/node-red est compris dans la sauvegarde (dans ce cas il faudrait sauvegarder que les éléments essentiels comme précisé dans la vidéo car je suppose que tu as une limitation de la taille de la sauvegarde)

@pierre-gilles après tu pourras faire une vidéo pour les anglophobes qui montre comment backup le node-red existant pour le restore dans celui géré par gladys, je dis ca je dis rien ! :wink:

Bonsoir @Lokkye
Voila je viens de retester, donc maintenant ça fonctionne avec la commande

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

Comme @cce66, apres avoir cliqué sur le lien NodeRed , j’accede bien à la page de NodeRed, par contre le copier/coller des identifiants ne fonctionne pas du premier coups (echec de connexion). Il a fallu que je desactive NodeRed , puis que je le réactive, et là, le copier/coller a fonctionné et j’accede bien a NodeRed.

Non, Gladys Plus ne sauvegardera pas Node-RED, ça ne fait pas parti de ce développement. Ce développement ne fait que lancer un container Node-RED. Je ne suis pas sûr que Node-RED ait les mêmes possibilités de sauvegardes que Zigbee2mqtt

Bonjour @pierre-gilles,
Diantre, fichtre, bougre, carabistouille et tonnerre de Brest ! :bomb:
Je suis désappointé :sob:
Dommage car en terme de sauvegarde cela représente pas beaucoup de données, bon peut-être qu’à l’avenir … :slight_smile:

Bah disons que comme on pouvait pas faire autrement avant…maintenant quand cette intégration sera opérationnelle, je referais une install propre en ne gardant que la gestion par Gladys
Pour le backup je passe par le « [Tuto] Backup automatique de Node-RED » https://www.youtube.com/watch?v=l56VQgTpVBY mais c’est vrai qu’une sauvegarde via Gladys Plus finalement qu’est ce-qui est backupé par Gladys Plus finalement (il y a t-il un risque de perdre des paramétres d’autres intégrations de Gladys) ?

@Lokkye Du coup tu peux rajouter un message dans l’interface pour dire que Node-RED n’est pas sauvegardé par Gladys Plus, et que si l’utilisateur veut sauvegarder son instance Node-RED, il faut qu’il exporte manuellement ses flow dans Node-RED ou mette en place une sauvegarde automatique côté Node-RED ? ça sera plus clair et ça évitera les confusions

Hello,
En revanche, si l’on créé une demande spécifiquement pour ça, on est d’accord que cela peut se faire ?
Moi personnelement je n’utiliserais pas cette intégration, mais c’était juste pour comprendre ton propos « ça ne fait pas parti de ce développement » :slight_smile:

Aucune idée, pour l’instant de ce que j’ai vu je n’ai pas l’impression, mais je ne suis pas expert Node-RED :slight_smile:

Je viens de sortir une nouvelle image avec :

  • La correction de la connection au premiere lancement
  • L’affiche du bouton lorsque l’on désactive nodered

A vos tests, prêt, partez :slight_smile:

@pierre-gilles,
Pour le backup, si je trouve un moyen d’export et importé les informations de nodered, est ce que tu pense que cela pourrais être envoyer dans la sauvegarder gladys plus ? (en terme de volume/prix de l’abonnement)

Ce qu’on fait côté Zigbee2mqtt, c’est que Zigbee2mqtt propose une API qui exporte au format JSON tous les paramètres qui permettent de restaurer une instance de zéro, et on stocke ce JSON dans une « variable » en DB :slight_smile:

Ainsi, la sauvegarde est incluse dans Gladys Plus, et l’intégration Zigbee2mqtt teste la présence de la variable lors d’un démarrage de Gladys, et restaure Zigbee2mqtt.

Si Node-RED propose une API, pourquoi pas. Après, il ne faut pas sauvegarder naïvement le filesystem, c’est la meilleure façon d’avoir une sauvegarde corrompue (et surtout, on va pas s’amuser à sauvegarder des node_modules dans Gladys Plus), si Node-RED ne propose pas d’API, alors ce n’est pas possible…

1 « J'aime »

Apparemment il faut juste ajouter une variable qui définit le path externe vers lequel sera enregistré les flows

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

https://nodered.org/docs/getting-started/docker

Managing User Data

Once you have Node-RED running with Docker, we need to ensure any added nodes or flows are not lost if the container is destroyed. This user data can be persisted by mounting a data directory to a volume outside the container. This can either be done using a bind mount or a named data volume.

Node-RED uses the /data directory inside the container to store user configuration data.

Using a Host Directory for Persistence (Bind Mount)

To save your Node-RED user directory inside the container to a host directory outside the container, you can use the command below. To allow access to this host directory, the node-red user (default uid=1000) inside the container must have the same uid as the owner of the host directory.

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

In this example the host /home/pi/.node-red directory is bound to the container /data directory.

Note: Users migrating from version 0.20 to 1.0 will need to ensure that any existing /data directory has the correct ownership. As of 1.0 this needs to be 1000:1000. This can be forced by the command sudo chown -R 1000:1000 path/to/your/node-red/data

See the wiki for detailed information on permissions.

Je fais des tests cet pm pour cela comme cela si c’est juste une ligne à rajouter… :wink:

Ah bah non je peux pas c’est une ligne à modifier dans la commande que lance @lokkie dans son intégration snif :sleepy: :smiling_face_with_tear: c’est @lokkie le maitre des clès :sob: :rofl:

@pierre-gilles

Non il y a pas besoin le fichier /var/lib/gladysassistant_test_nodered/node-red/packages.json intègre la liste des modules nécessaires aux flows et si ils sont absents alors ils sont rechargés

oui il y a des API mais après je sais pas comment cela peut être mis en oeuvre par @lokkie
https://nodered.org/docs/api/storage/

Storage API

The Storage API provides a pluggable way to configure where the Node-RED runtime stores data.

The information stored by the API includes:

flow configuration
flow credentials
user settings
user sessions
node library content

et les méthodes pour cette api ici
https://nodered.org/docs/api/storage/methods/

Il y a là un passage intéressant

Lors de l’installation de Node-Red sur Docker, votre volume pour le répertoire de données a été créé par et appartient à notre utilisateur « root », dont l’identifiant est « uid=0 gid=0 ». L’utilisateur Node-Red à l’intérieur du conteneur, qui possède le répertoire /data, a cependant des identifiants différents : « uid=1000 gid=1000 ». Vous pouvez résoudre ce problème en vous connectant en SSH sur votre serveur et changer la propriété du volume Docker à l’utilisateur avec l’ID 1000:1000 en exécutant la commande suivante :

Je suis connecté en « root », la commande « sudo » n’est pas utile, mais je vous la met au cas ou.

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

Il faudra donc mettre les mêmes droits je pense à

var/lib/gladysassistant_test_nodered/node-red/data

Après c’est vrai que c’est pour le cas d’une utilisation sous linux, sous windows (je pense pas qu’il y ait de problèmes) et sous synology je sais pas (quoique syno c’est du linux à la base mais peut-être que dans le syno il y a une option de sauvegarde intégrée si des utilisateurs de syno peuvent apporter la réponse)