5/5 - (5 votes)
Noël domotique

La domotique, et plus particulièrement la gestion d’un réseau Zigbee, repose sur la stabilité et la performance des logiciels qui la composent. Zigbee2MQTT s’est imposé comme un outil central pour de nombreux utilisateurs, faisant le pont entre les appareils Zigbee et un broker MQTT. Son exécution au sein d’un conteneur LXC sur un hyperviseur Proxmox est une pratique de plus en plus courante, offrant isolation, flexibilité et sécurité. Cependant, comme tout logiciel, il nécessite des mises à jour régulières pour bénéficier des dernières fonctionnalités, des correctifs de sécurité et de la prise en charge de nouveaux appareils. Naviguer dans ce processus de mise à jour peut sembler intimidant, mais une approche méthodique permet de garantir une transition en douceur, sans interruption de service prolongée ni perte de données.

Introduction au conteneurisation avec LXC Proxmox

Qu’est-ce qu’un conteneur LXC ?

Un conteneur LXC, pour Linux Containers, est une méthode de virtualisation au niveau du système d’exploitation. Contrairement à une machine virtuelle (VM) complète qui émule un matériel entier et exécute son propre noyau, un conteneur LXC partage le noyau du système hôte. Cette approche le rend extrêmement léger et rapide à démarrer. Pour des services comme Zigbee2MQTT, qui n’ont pas besoin d’un système d’exploitation complet dédié, le conteneur LXC représente un compromis idéal entre l’isolation d’une VM et l’efficacité d’une application native.

Avantages de l’utilisation de Proxmox pour la domotique

Proxmox Virtual Environment (VE) est une plateforme de gestion de virtualisation open source qui combine deux technologies : KVM pour les machines virtuelles et LXC pour les conteneurs. Son interface web centralisée facilite grandement la gestion de multiples services domotiques. Les principaux avantages sont :

  • La centralisation : Gérez tous vos services (Home Assistant, Zigbee2MQTT, un broker MQTT, etc.) depuis un seul tableau de bord.
  • Les sauvegardes et snapshots : Proxmox permet de créer des snapshots instantanés d’un conteneur avant une opération critique comme une mise à jour. En cas de problème, une restauration à l’état précédent ne prend que quelques secondes.
  • L’isolation des ressources : Chaque service tourne dans son propre environnement, évitant ainsi les conflits de dépendances et améliorant la sécurité globale du système.

Pourquoi isoler Zigbee2MQTT dans un conteneur ?

Isoler Zigbee2MQTT dans son propre conteneur LXC est une bonne pratique pour plusieurs raisons. Premièrement, la stabilité. Si une erreur survient dans Zigbee2MQTT, elle reste confinée au conteneur et n’affectera pas l’hyperviseur Proxmox ou les autres services en cours d’exécution. Deuxièmement, la gestion des dépendances est simplifiée. Le conteneur embarque ses propres versions de Node.js et des autres paquets nécessaires, sans interférer avec les exigences d’autres applications. Enfin, cela facilite la migration ou la réplication de votre installation sur un autre serveur ou ordinateur.

  • UGREEN NASync DH2300 NAS Bureau 2 Baies, 4Go RAM, Connexion NFC One-Touch, LAN 1GbE, Album Photo IA, Système NAS Facile pour Débutants, Serveur NAS Maison (sans Disque) (DH2300)
  • Synology DS223J NAS de Bureau 2 Baies, Blanc
  • GL.iNet MT2500A (Brume 2) Mini passerelle, Travail à Distance, Serveur et Client VPN pour la Maison et Le Bureau, Cascade, WAN 2.5G *Pas de WiFi* (Aluminium)

Maintenant que l’intérêt de cette architecture est établi, il est essentiel de s’assurer que toutes les conditions sont réunies avant de lancer la procédure de mise à jour.

Prérequis pour mettre à jour Zigbee2MQTT

Prérequis pour mettre à jour zigbee2mqtt

Accès et permissions nécessaires

Avant toute chose, vous devez pouvoir accéder à votre environnement. Cela implique un accès à l’interface web de Proxmox pour gérer le conteneur, mais surtout un accès à la console du conteneur LXC lui-même. Cet accès se fait généralement via SSH ou directement depuis l’interface Proxmox (fonction « Console »). Une fois dans le conteneur, vous aurez besoin des droits d’administrateur, obtenus via la commande sudo ou en étant connecté en tant qu’utilisateur root, pour arrêter les services et installer les mises à jour.

Sauvegarde : l’étape incontournable

C’est sans doute l’étape la plus importante de tout le processus. Une mise à jour peut parfois introduire des régressions ou des incompatibilités. Créer une sauvegarde vous offre un filet de sécurité. Avec Proxmox, le processus est simple :

  1. Sélectionnez votre conteneur LXC dans l’interface web.
  2. Allez dans l’onglet « Snapshot ».
  3. Cliquez sur « Take Snapshot » et donnez-lui un nom descriptif, par exemple « avant-maj-z2m-1.33.0 ».

Cette opération est quasi instantanée et vous permettra de revenir en arrière en un clic si la mise à jour ne se déroule pas comme prévu.

Connaissance de l’environnement existant

Pour mener à bien la mise à jour, vous devez connaître quelques informations sur votre installation actuelle. Le plus souvent, Zigbee2MQTT est installé dans le répertoire /opt/zigbee2mqtt. Il est également crucial de savoir quel utilisateur exécute le service pour pouvoir réappliquer les bonnes permissions après l’installation. Enfin, il peut être utile de noter la version actuelle de Zigbee2MQTT pour confirmer que la mise à jour a bien été appliquée. Ces informations se trouvent généralement dans les logs de démarrage du service.

Élément à vérifier Emplacement / Commande type
Répertoire d’installation /opt/zigbee2mqtt
Fichier de configuration /opt/zigbee2mqtt/data/configuration.yaml
Service systemd zigbee2mqtt.service

Enfin, assurez-vous que votre coordinateur Zigbee, souvent une clé USB, est correctement reconnu par le conteneur.

  • SONOFF ZigBee 3.0 USB Dongle Plus (2 Pack), TI CC2652P Coordinator, Universelle USB ZigBee Hub, Passerelle ZigBee pour Home Assistant
  • SLZB-07p10 - Clé USB Zigbee avec Antenne 3dB, Adaptateur pour Zigbee2mqtt, ZHA et Home Assistant SLZB-07 p10 (SLZB-07p10)
  • SLZB-06p7 – Adaptateur Zigbee 3.0 vers Ethernet, USB et WiFi avec PoE, Fonctionne avec Zigbee2MQTT, Home Assistant, ZHA, SLZB-06 P7 (SLZB-06P7)

Une fois ces prérequis validés et la sauvegarde effectuée, l’opération peut commencer par l’arrêt propre et sécurisé du service en cours d’exécution.

Procédure pour arrêter Zigbee2MQTT en toute sécurité

Identifier le service Zigbee2MQTT

Dans la majorité des installations standard, Zigbee2MQTT est géré comme un service systemd. Cela garantit qu’il démarre automatiquement avec le conteneur et qu’il peut être géré de manière propre. Pour vérifier l’état du service, utilisez la commande suivante dans la console de votre conteneur :

sudo systemctl status zigbee2mqtt.service

Cette commande vous indiquera si le service est actif (running) ou non, et affichera les dernières lignes de log, ce qui peut être utile pour un premier diagnostic.

Commande d’arrêt du service

Pour arrêter le service proprement, il faut utiliser la commande dédiée. L’utilisation de systemctl stop garantit que l’application a le temps de terminer ses opérations en cours, comme l’écriture de l’état des appareils dans son fichier state.json, évitant ainsi toute corruption de données. La commande est la suivante :

sudo systemctl stop zigbee2mqtt.service

Aucune sortie n’est généralement affichée si la commande réussit. Il est donc impératif de vérifier que l’arrêt a bien été pris en compte.

Vérification de l’arrêt effectif

Pour confirmer que le processus est bien terminé, exécutez à nouveau la commande de statut :

sudo systemctl status zigbee2mqtt.service

Le statut doit maintenant être inactive (dead). Cette vérification est cruciale, car tenter de mettre à jour les fichiers alors que le programme les utilise encore peut entraîner des erreurs imprévisibles et une installation corrompue.

Le service étant maintenant complètement arrêté, le champ est libre pour récupérer la version la plus récente du logiciel.

Téléchargement des dernières mises à jour Zigbee2MQTT

Navigation vers le répertoire d’installation

La première étape consiste à se placer dans le bon répertoire de travail. Comme mentionné précédemment, l’emplacement par défaut pour Zigbee2MQTT est /opt/zigbee2mqtt. Utilisez la commande cd pour vous y rendre :

cd /opt/zigbee2mqtt

Toutes les commandes suivantes devront être exécutées depuis ce répertoire.

Utilisation de Git pour la mise à jour

La méthode la plus simple et la plus fiable pour mettre à jour Zigbee2MQTT est d’utiliser Git, le système de contrôle de version avec lequel le projet est développé. Cela suppose que votre installation initiale a été faite via un git clone. Le processus consiste à récupérer les dernières modifications depuis le dépôt officiel :

  • Récupérer les changements : git fetch origin. Cette commande télécharge les nouveautés sans les appliquer immédiatement.
  • Vérifier la branche : Assurez-vous d’être sur la branche principale avec git checkout master (ou main selon la configuration).
  • Appliquer les changements : git pull. Cette commande fusionne les changements distants dans votre copie locale, mettant ainsi à jour tous les fichiers du code source.

Cette méthode est fortement recommandée car elle gère les modifications de fichiers de manière intelligente et propre.

Les fichiers sources étant désormais à jour, il reste à installer les dépendances requises par cette nouvelle version.

Installation de la mise à jour Zigbee2MQTT

Installation de la mise à jour zigbee2mqtt

Mise à jour des dépendances

Une nouvelle version de Zigbee2MQTT peut s’appuyer sur de nouvelles bibliothèques ou des versions mises à jour de ses dépendances Node.js. Il est donc impératif de les mettre à jour. Depuis le répertoire /opt/zigbee2mqtt, exécutez la commande suivante :

npm ci

La commande npm ci (pour Clean Install) est souvent préférée à npm install. Elle supprime le dossier node_modules existant et réinstalle proprement toutes les dépendances en se basant sur le fichier package-lock.json. Cela garantit une installation reproductible et évite les problèmes liés à des dépendances obsolètes.

Gestion des permissions

Il est possible que les commandes précédentes aient été exécutées avec sudo, ce qui peut altérer les permissions des fichiers. Pour éviter tout problème de droits au redémarrage, il est sage de réattribuer la propriété de l’ensemble du répertoire à l’utilisateur qui exécute le service Zigbee2MQTT (souvent un utilisateur dédié comme pi ou zigbee). Remplacez user:group par le bon utilisateur et groupe :

sudo chown -R user:group /opt/zigbee2mqtt

Redémarrage du service

L’installation est terminée. Il est temps de relancer le service pour appliquer la mise à jour. Utilisez la commande systemctl pour démarrer le service :

sudo systemctl start zigbee2mqtt.service

Le service devrait maintenant démarrer avec la nouvelle version. La mise à jour est techniquement terminée, mais le travail n’est pas fini tant que son bon fonctionnement n’a pas été validé.

Vérifications post-mise à jour pour garantir la stabilité

Vérifications post-mise à jour pour garantir la stabilité

Consultation des journaux (logs)

La première chose à faire après le redémarrage est de consulter les journaux en temps réel. C’est là que vous verrez si le démarrage se passe bien ou si des erreurs apparaissent. Utilisez la commande suivante :

journalctl -u zigbee2mqtt.service -f

Portez une attention particulière aux premières lignes. Vous devriez y voir la nouvelle version de Zigbee2MQTT s’afficher, ainsi que des messages confirmant la connexion réussie au coordinateur Zigbee et au broker MQTT. Toute ligne contenant « ERROR » ou « WARN » doit être examinée avec attention.

Validation de l’interface web

Si vous avez activé l’interface web de Zigbee2MQTT, ouvrez-la dans votre navigateur. Le numéro de version est généralement affiché dans le coin supérieur droit ou dans la section « À propos ». C’est un moyen simple et visuel de confirmer que la mise à jour a bien été prise en compte. Profitez-en pour naviguer entre les différents onglets et vous assurer que tout se charge correctement.

Test des appareils Zigbee

La vérification ultime consiste à tester la communication avec vos appareils. Ne vous contentez pas de vérifier leur état. Interagissez avec eux :

  • Allumez et éteignez une ampoule connectée.
    • NOUS P3Z Ampoule intelligente ZigBee RGB E27, Compatible avec Alexa,Hue Bridge, Google Home, Home Assistant, 16 Millions de Couleurs, Contrôle Vocal et Par Application, 2700-6500K
    • NOUS P3Z Ampoule intelligente ZigBee RGB E27, Compatible avec Alexa,Hue Bridge, Google Home, Home Assistant, 16 Millions de Couleurs, Contrôle Vocal et Par Application, 2700-6500K
    • EGLO connect.z Ampoule LED E27 connectée, ST64, ZigBee, contrôlable par appli et commande vocale, dimmable, blanc chaud, 500 lumens, 5,5 watts, ambré, design vintage
  • Déclenchez un capteur de mouvement ou d’ouverture de porte.
  • Vérifiez la remontée des mesures d’un capteur de température.

Ces tests confirment que la communication bidirectionnelle est pleinement opérationnelle et que votre réseau maillé Zigbee est stable.

Plan de retour en arrière (rollback)

Dans le cas improbable où vous rencontreriez un problème majeur et insoluble (appareils qui ne répondent plus, erreurs critiques dans les logs), n’oubliez pas votre filet de sécurité. Il vous suffit d’arrêter le conteneur LXC depuis l’interface Proxmox, de sélectionner le snapshot créé au début du processus, et de cliquer sur « Rollback ». En quelques instants, votre installation reviendra à son état précédent, parfaitement fonctionnel.

En suivant rigoureusement cette procédure, la mise à jour de Zigbee2MQTT devient une opération de maintenance prévisible et sécurisée. La clé du succès réside dans la préparation, notamment la sauvegarde, et dans la vérification systématique après l’intervention. Une domotique fiable et à jour est ainsi à votre portée, vous permettant de profiter sereinement de toutes ses fonctionnalités.