Démarrer démon mqtt_manager KO sous docker / debian 11

Bonjour,

Je suis en train de tester zwavejs sur docker (image jeedom/jeedom:latest, debian 11)

Apres analyse, debug, modification, etc, jai le souci suivant:

KO: Démarrer|arrêter le démon mqtt manager via le plugin ou la cmd node lancé par celui ci.

OK: Démarrer|arreter le demon mosquitto avec la conf du plugin par la commande system service ou /etc/init.d/mosquitto

Dans le cas ou c’est OK, le process, port d’ecoute et pid file sont ok
Par contre rien n’a faire pour démarrer via l’interface du plugin mqtt_manager. Pas de pid, pas de process.

Mes questions:

Comme j’arrive à démarrer le service avec la conf du plugins, le pb se situe dans le démarrage avec node selon moi

  • Est ce que ce plugin est compatible sous docker debian 11 / nodejs 16.20? Je vois compatible docker sur le market…
  • Qq un l’utilise sous docker debian 11?

J’ai essayé:

  • La commande fourni dans la log de mqtt mais elle ne démarre pas le démon et ne créé de pid file:
sudo  /usr/bin/node /var/www/html/plugins/mqtt2/resources/mqtt2d/mqtt2d.js --loglevel debug --socketport 55035 --mqtt_server mqtts://127.0.0.1:8883 --client_key /var/www/html/plugins/mqtt2/data/ssl/client.key --client_crt /var/www/html/plugins/mqtt2/data/ssl/client.crt --ca /var/www/html/plugins/mqtt2/data/ssl/ca.crt --username jeedom --password xxxxx --callback http://127.0.0.1:80/plugins/mqtt2/core/php/jeeMqtt2.php --apikey xxxxx --cycle 0.3 --pid /tmp/jeedom/mqtt2/deamon.pid
  • essayer avecnode inspect
  • modifié /var/www/html/plugins/mqtt2/core/class/mqtt2.class.php pour remplacer systemctl par service
  • Le fichier pid n’est pas créé (le répertoire /tmp/jeedom/mqtt est en 777). C’est le même chemin que j’utilise qd j’arrive à le démarrer via la commande service, j’en ai essayé d’autre.
  • J’ai rejoué les dépendances. Elles semblent ok.
  • reinstallation des plugins
  • J’ai fait une update de npm comme proposé dans les logs des dépendances 8.19.4 → 9.6.7
  • Pas plus de traces avec le mode debug.
  • J’ai regardé mqtt2d.js, le démarrage semble être fait par: require (‹ mqtt ›)… enfin j’en sais rien, je ne suis pas dev nodejs :frowning:
  • je n’ai pas testé sous docker/debian 10 (j’utilise l’ancien plugin zwave que j’ai désactivé dans cette install)
  • je n’ai pas testé ce plugin dans un environnement from scratch (mais depuis mon jeedom 4.3.17 validé sur docker/debian 10)

Environnement:

  • docker version 24.0.2 (ubuntu 22.04)
  • jeedom 4.3.17 (env perso fonctionnel sur docker/debian 10)
  • image docker jeedom/jeedom:latest (debian 11) Modification apportée a l’image (apt update & upgrade)
  • plugins: xiaomi Home, telegram, cloudsync pro
  • dépendance OK
  • conf MQTT: tt par défaut, j’ai juste précisé Broker Local et Port du contrôleur Z-Wave que j’utilse (dev/ttyACM0)

Log mqtt2

[2023-06-04 18:50:01][ERROR] : Attention je pense qu'il y a un soucis avec le démon que j'ai relancé plus de 3 fois consécutivement
[2023-06-04 18:50:02][INFO] : Démarrage du démon MQTT Manager : sudo  /usr/bin/node /var/www/html/plugins/mqtt2/resources/mqtt2d/mqtt2d.js --loglevel debug --socketport 55035 --mqtt_server mqtts://127.0.0.1:8883 --client_key /var/www/html/plugins/mqtt2/data/ssl/client.key --client_crt /var/www/html/plugins/mqtt2/data/ssl/client.crt --ca /var/www/html/plugins/mqtt2/data/ssl/ca.crt --username jeedom --password xxx --callback http://127.0.0.1:80/plugins/mqtt2/core/php/jeeMqtt2.php --apikey xxx --cycle 0.3 --pid /tmp/jeedom/mqtt2/deamon.pid
[2023-06-04 18:50:32][ERROR] : Impossible de démarrer le démon MQTT Manager, vérifiez les logs

Log mqttd

[2023-06-04 16:50:02][INFO] : Start mqtt2d
[2023-06-04 16:50:02][INFO] : Log level on  : debug
[2023-06-04 16:50:02][INFO] : Socket port : 55035
[2023-06-04 16:50:02][INFO] : MQTT : mqtts://127.0.0.1:8883
[2023-06-04 16:50:02][INFO] : Username : jeedom
[2023-06-04 16:50:02][INFO] : Password : xxx
[2023-06-04 16:50:02][INFO] : PID file : /tmp/jeedom/mqtt2/deamon.pid
[2023-06-04 16:50:02][INFO] : Apikey : xxx
[2023-06-04 16:50:02][INFO] : Callback : http://127.0.0.1:80/plugins/mqtt2/core/php/jeeMqtt2.php
[2023-06-04 16:50:02][INFO] : Cycle : 0.3
[2023-06-04 16:50:02][INFO] : Client key : /var/www/html/plugins/mqtt2/data/ssl/client.key
[2023-06-04 16:50:02][INFO] : Client crt : /var/www/html/plugins/mqtt2/data/ssl/client.crt
[2023-06-04 16:50:02][INFO] : CA : /var/www/html/plugins/mqtt2/data/ssl/ca.crt
[2023-06-04 16:50:02][INFO] : Connect to mqtt server
[2023-06-04 16:50:02][DEBUG] : HTTP listen on 127.0.0.1 port : 55035 started
[2023-06-04 16:50:02][ERROR] : Error on connection to mqtt server : Error: connect ECONNREFUSED 127.0.0.1:8883

Dépendances

mqtt2_packages.txt (4,9 Ko)

Bonsoir

Essaye plutôt une version 4-3 Buster
https://hub.docker.com/r/jeedom/jeedom/tags?page=1&ordering=-last_updated

Bonjour
C’est un soucis connu jeedom 4.3 ne marche pas vraiment en docker, enfin le core si mais pas les plugins utilisant un démon. J’ai corrigé en grande partie ces soucis en alpha (4.4), enfin tout ceux que j’ai vu mais il doit encore en rester. Étant donné que mon jeedom tourne mtn en docker sur Synology je vais enfin pouvoir corriger cette partie.

3 « J'aime »

Bonjour Loïc.

Bienvenu dans l’univers Synology / Docker :sunglasses:
Merci pour tes contributions.

1 « J'aime »

C’est un debut faut je change de nas il galere un peu la celui que j’ai…

C’est mon env de dev donc no stress

Je profitais de ce we ensoleillé pour faire mes maj docker, on s’amuse comme on veux :stuck_out_tongue_winking_eye:
Je laisse ma prod en Debian 10 et l’ancien plugins Z-Wave.

Merci pour l’info.
On peut fermer le ticket je pense, j’ai eu mes réponses.

Bonjour,

Ce n’est pas un « ticket » ici ni un site de support et pour fermer le sujet c’est à vous à cliquer le bouton « solution » sous la réponse correspondante.

Bonjour,

Est-ce que tu tente d’utiliser le plugin ZwaveJS dans le container Jeedom dans docker ?
Ce plugin est lui même dépendant de docker, est-ce qu’il tente d’installer docker dans le container, donc… docker dans docker ? :crazy_face:

Avec l’utilisation de docker il vaut mieux éviter les démons, en particulier le broker tu le met dans un autre container en dehors de Jeedom. Les démons si possible il faudrait aussi les « containeriser » (ça se dit?) i.e. les externaliser dans un autre container docker, mais pas dans le même que Jeedom bien sûr. Je ne crois pas que le plugin docker gère cela encore. J’espère que ça viendra :slight_smile:

1 « J'aime »

Bonjour,

Même problème pour moi (j’utilise docker sur un raspberry pour lancer jeedom)
Ce que j’ai compris c’est que deux systèmes cohabitent pour la gestion des services linux :

  • Le premier est basé sur SysV / init et fonctionne avec la commande service (exemple: service restart mosquitto), je pense que c’est ton cas.
  • Le deuxième est basé sur Systemd et fonctionne avec la commande systemctl (exemple: systemctl mosquitto restart)

Le démon mqtt2 repose sur systemd/systemctl comme on peut le voir dans le source du plugin mais mon image docker buster est configurée en init.d ce qui fait que, même si le package systemd est bien installé sur mon système j’ai l’erreur suivante :

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

En fait il ne suffit pas que systemd soit installé, il faut aussi que l’image lancée par docker soit configurée pour cela, c’est un paramètre de boot du noyau.

J’ai modifié le fichier plugins/mqtt2/core/class/mqtt2.class.php en remplaçant ‹ systemctl restart mosquitto › par ‹ service mosquitto restart ›. Ça me permet d’activer mosquitto en cliquant sur le bouton orange ‹ Redémarrer Mosquitto › dans la page de configuration du plugin, et après le démon se lance mais malheureusement je n’ai pas encore trouvé comment faire pour qu’il se lance au démarrage de jeedom pour l’instant :smiling_face_with_tear:

Pour ma part, j’avais le même problème, du coup j’ai installé un mqtt à part de jeedom dans un autre conteneur docker et j’ai sélectionné l’option Broker distant dans la liste déroulante. J’ai rempli l’ip et le port et j’ai relancé le démon qui a démarré sans soucis.

1 « J'aime »

Oui, c’est la meilleur des solutions

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.