Installation en container, soucis d'ajout de palette

Bonjour tout le monde,

Très bonne année à toutes et tous que la domotique soit avec vous :slight_smile:

Si je me permet d’ouvrir un petit post ici c’est que je coince sur quelque chose et je ne trouve pas la solution. J’ai crée un container pour installer Node-Red, via une stack de portainer avec la conf suivante :

version: "3.7"

services:
  nodered:
    container_name: nodered
    image: nodered/node-red:latest
    environment:
      - TZ=Europe/Paris
    ports:
      - "1880:1880"
    volumes:
      - data:/data
    network_mode: bridge
    
volumes:
  data:
    driver: local
    driver_opts:
      type: cifs
      device: //path/to/my/cifs/nodered/folder
      o: username=USER,password=PASSWORD,vers=1.0,nobrl,dir_mode=0777,file_mode=0777

La création du container nickel, j’ai accès à l’interface web, je peux créer des flow tout va bien, par contre quand j’essai d’installé la palette home assistant websocket la c’est le drame ça ne fonctionne pas (et j’ai le même style d’erreur avec les autres palettes d’ailleurs). J’obtiens le message suivant dans les logs :

602 verbose stack Error: ENOTSUP: operation not supported on socket, symlink '../multicast-dns/cli.js' -> '/data/node_modules/.bin/multicast-dns'
603 verbose cwd /data
604 verbose Linux 5.13.19-2-pve
605 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "--no-audit" "--no-update-notifier" "--no-fund" "--save" "--save-prefix=~" "--production" "--engine-strict" "node-red-contrib-home-assistant-websocket@0.40.0"
606 verbose node v14.18.2
607 verbose npm  v6.14.15
608 error code ENOTSUP
609 error syscall symlink
610 error path ../multicast-dns/cli.js
611 error dest /data/node_modules/.bin/multicast-dns
612 error errno -95
613 error nospc ENOTSUP: operation not supported on socket, symlink '../multicast-dns/cli.js' -> '/data/node_modules/.bin/multicast-dns'
614 error nospc There appears to be insufficient space on your system to finish.
614 error nospc Clear up some disk space and try again.
615 verbose exit [ -95, true ]

J’ai essayé différente chose :

  • une version plus ancienne de node-red
  • utiliser différent droit sur le montage cifs (777 étant mon dernier essai)
  • rajouter dans le yaml du stack l’utilisation de root ( user: « root:root »)

Mais peut importe j’ai toujours le même soucis. Quelque chose m’échappe mais je ne vois absolument pas quoi.
Alors oui je sais solution de facilité installé une vm avec HAOS ou HA supervised et ça roule, mais mon but étant de me débarrasser des vm je suis parti sur une version container de HA :stuck_out_tongue:

Du coup si vous avez une petite idée, des pistes je suis preneur.

Merci d’avance

PS : oui j’ai fait la même demande sur le forum de node-red mais je n’ai pas eu de réponse

Salut…

Tu peux surement commencer par faire plus basique : CIFS et droit en 777, tu vas tuer quelques administrateurs systèmes …
Commence par faire le container en local, dans les volumes tu isoles les données strictement nécessaires (et éventuellement les nodes additionnels)

Un peu HS mais pas certain de bien comprendre la logique de la suppression des VM. Les VM peuvent faire tourner plusieurs containers… Et puis un container, ça tourne soit dans une VM soit sur une machine physique …
Si on ajoute à ça la souplesse d’une infra virtualisée par rapport à du physique, c’est difficile d’arriver à la même conclusion.

Ha rassures toi le 777 c’était vraiment ma dernière option histoire de voir si le soucis venait des droits que je passais à ce montage :stuck_out_tongue:

J’avais fait un container avec zéro volume persistent et c’était nickel ca fonctionnait. C’est bine mon volume qui merdouille mais j’ai du mal de comprendre pourquoi, peut être que c’est incompatible avec un montage cifs va savoir, faudrait que j’essaie avec un volume persistent sur la machine local j’ai un doute d’avoir fait ce test d’un seul coup

On fait comme si c’est pas HS : Et bien si je veux me débarrasser des VM c’est premièrement pour alléger mon serveur, qui est un peu limite avec les vm que je possède. Et je récupère ce même serveur physique pour justement tout passer en container. Grâce a ça je vais avoir un peu plus de ressource mémoire de dispo ainsi que d’espace disque. Ensuite je monte tous les volumes sur un nas (bas de gamme, c’est une prochaine étape monté en gamme la dessus mais pour le moment pas possible). Et je n’ai qu’a garder les yaml de conf des container sous la main si j’ai besoin de les récréer en cas de crache de la machine physique.

Je ne dis pas que les vm ce n’est pas bien, mais je n’en trouve plus l’utilité pour ma part évidement. Y a certes des avantages et inconvénient pour les deux mais pour le moment les inconvénient que j’ai trouvé au container ne me gène pas pour mon utilisation :slight_smile:

Si c’est le CIFS qui n’est pas compatible avec le container, tu peux surement rendre les choses transparentes :
Montage CIFS via l’OS et container qui tape sur le point de montage

Pour cette histoire de VM, ça ressemble plus à un souci de rationalisation (bon sizing des vm/mémoire/disque). Et à mon avis rien que les fonctions de snapshot/backup devraient largement compenser les quelques contraintes de ressources. Bon après, si ça te convient comme ça…

Faut que je teste également cette solution, j’avais testé pour un autre container mais pas pour celui de node-red en effet.

Pour les ressources des vm je mettais toujours le strict minimum, mais niveau ram les 8go que j’avais était vite plein, pour l’espace disque j’avais essayer en mettant les vm sur le nas histoire d’être un poil tranquille, mais selon les vm c’était pas toujours fluide. Mais j’avoue je m’éclate bien avec les containers. Pour le moment ca fonctionne comme je veux, un peu dévolution à faire a sur la partie réseau des containers ou je suis pas au top. Mais ça roule bien. Pour les backups proxmox en effet fait de bon backup complet des vm, mais justement c’est pareil comme les backups je veux les externaliser avec mon adsl je ne peux pas, même avec des vm optimisée niveau taille ça fait des truc énorme a balancer par adsl. Du coup la avec les container c’est un peu plus jouable :p.

Mais bon je suis pas a l’abris de revenir sur de la vm à un moment si je m’en sors pas avec node red en container :wink:

Jette un oeil à l’occasion sur ces sujets
https://forum.hacf.fr/t/plusieurs-vm-ct-par-container/8327/21
https://forum.hacf.fr/t/plutot-nuc-ou-vm/8143/11

Après sans tous les détails, je pense que tes soucis sont liée à ton infra

  • 8Go c’est clairement pas beaucoup(assez), même pour des containers
  • mettre les disques des VM sur le NAS, oui mais à condition d’avoir du très bon matos, sinon comme tout passe par le reseau => performances pourries.

Un meilleur choix rapide serait de laisser les disques des VM en local, mais de mettre les backup sur le nas

J’en suis bien conscient mais bon je pouvais pas faire plus pour le moment niveau matos, que ce soit ram / réseau :slight_smile: . J’espère pouvoir faire quelques évolutions cette année, notamment si je peux avec un synology et une évolution de mon réseau également. Mais bon j’ai un banquier à convaincre :smiley:

C’est en effet au final ce que j’ai fait, ouep des fois j’arrive a voir de bonne idées :stuck_out_tongue:

1 « J'aime »

Bon après moult recherche et tests c’était bien un droit que mon montage n’avait pas celui de pouvoir créé des liens symbolique

Il me manquait dans la déclaration de mon montage une petite info : mfsymlinks

Donc en résumé

volumes:
  data:
    driver: local
    driver_opts:
      type: cifs
      device: //path/to/my/cifs/nodered/folder
      o: username=USER,password=PASSWORD,uid=1000,gid=999,iocharset=utf8,vers=1.0,sec=ntlm,nobrl,mfsymlinks

Et la installation de palettes finger in the nose of node-red

1 « J'aime »

Même si ça marche, je me dis que monter le volume persistant depuis le NAS, c’est (à mon avis) pas idéal…
J’aurais plutôt tendance à faire les volumes sur la machine ou sont les containers Tu installes un docker samba en plus. Tu donnes accès à tous les volumes persistants via samba. Depuis le NAS, tu copies ces volumes. Et hop, la sauvegarde est faite.
Un container samba ça ne consomme quasi rien…
J’ai généralisé cette méthode et ça marche bien.
Tous les volumes sont dans /home/moi et j’exporte ça avec Samba. En copiant /home/moi sur le NAS, c’est fait.

On peut se poser la question de sauvergarder les palettes(/node_modules/) … Les quelques fichiers .json doivent permettre de remettre la config en place, les palettes sont ré installables à postériori
C’est seulement ça dont on a besoin sur la partie volume/backup
image

C’est vrai. Mais, de mes tests le package.json correspond à tout ce qui est dans node_modules. J’avais joué avec le fichier package.json et j’ai eu du mal pour que tout retombe en marche. Donc, copier « bêtement » tout le folder nodered, c’est le moins risqué…

oui il y a plein de trucs qui trainent

  • flows.json, c’est les config perso…
  • Les sous répertoires (cronplusdata par ex) contiennent aussi des infos…

Donc le truc à virer du volume c’est /node_modules/ (c’est la partie déployée des palettes)

Oui en effet faudrait à la rigueur que je regarde comment faire ça pour que ca reste dans le container