Skip to content

updates2mqtt

updates2mqtt

Rhizomatics Open Source

PyPI - Version Ruff Coverage Tests pre-commit.ci status Publish Python 🐍 distribution 📦 to PyPI and TestPyPI Github Deploy CodeQL Dependabot Updates



Résumé

Laissez Home Assistant vous informer des nouvelles mises à jour des images Docker pour vos conteneurs.

Exemple de page de mise à jour Home AssistantExemple de notes de version Home Assistant

Lisez les notes de version et cliquez éventuellement sur Mettre à jour pour déclencher un pull Docker (ou optionnellement un build) et une mise à jour.

Exemple de dialogue de mise à jour Home Assistant

Description

Updates2MQTT vérifie périodiquement la disponibilité de nouvelles versions des composants et publie les informations de nouvelles versions sur MQTT. La découverte automatique de HomeAssistant est prise en charge, de sorte que toutes les mises à jour peuvent être vues au même endroit que les propres composants et add-ins de Home Assistant.

Seuls les conteneurs Docker sont actuellement pris en charge, soit via une vérification du registre d’images (en utilisant les API Docker v1 ou l’API OCI v2), soit un dépôt git pour la source (voir Compilations Locales), avec une gestion spécifique pour Docker, Github Container Registry, Gitlab, Codeberg, Microsoft Container Registry, Quay et LinuxServer Registry, avec un comportement adaptatif pour la plupart des autres. La conception est modulaire, de sorte que d’autres sources de mise à jour peuvent être ajoutées, au moins pour les notifications. La prochaine prévue est apt pour les systèmes basés sur Debian.

Les composants peuvent également être mis à jour, soit automatiquement soit déclenchés via MQTT, par exemple en cliquant sur le bouton Installer dans le dialogue de mise à jour de HomeAssistant. Des icônes et des notes de version peuvent être spécifiées pour une meilleure expérience HA. Voir Intégration Home Assistant pour plus de détails.

Pour commencer, lisez les pages Installation et Configuration.

Pour un essai rapide, essayez ceci :

docker run -v /var/run/docker.sock:/var/run/docker.sock -e MQTT_USER=user1 -e MQTT_PASS=user1 -e MQTT_HOST=192.168.1.5 ghcr.io/rhizomatics/updates2mqtt:latest

ou sans Docker, en utilisant uv

export MQTT_HOST=192.168.1.1;export MQTT_USER=user1;export MQTT_PASS=user1;uv run --with updates2mqtt python -m updates2mqtt

Il est également livré avec un outil en ligne de commande basique qui effectuera l’analyse pour un seul conteneur en cours d’exécution, ou récupérera des manifestes, des blobs JSON et des listes de tags depuis des registres distants (fonctionnement vérifié avec GitHub, GitLab, Codeberg, Quay, LSCR et Microsoft MCR).

Support des Versions

Seuls les conteneurs Docker sont pris en charge pour l’instant, bien que d’autres soient prévus, probablement avec une priorité pour apt.

Écosystème Support Commentaires
Docker Scan, Fetch Fetch est uniquement docker pull. Support de redémarrage uniquement pour les conteneurs basés sur image docker-compose.

Battement de Cœur (Heartbeat)

Un payload JSON de battement de cœur est optionnellement publié périodiquement sur un topic MQTT configurable, par défaut healthcheck/{node_name}/updates2mqtt. Il contient la version actuelle d’Updates2MQTT, le nom du nœud, un horodatage et quelques statistiques de base.

Vérification de Santé (Healthcheck)

Un script healthcheck.sh est inclus dans l’image Docker et peut être utilisé comme healthcheck Docker si les variables d’environnement du conteneur MQTT_HOST, MQTT_PORT, MQTT_USER et MQTT_PASS sont définies. Il utilise le paquet Linux mosquitto-clients qui fournit la commande mosquitto_sub pour s’abonner aux topics.

Tip

Vérifiez que le healthcheck fonctionne en utilisant docker inspect --format "{{json .State.Health }}" updates2mqtt | jq (vous pouvez omettre | jq si vous n’avez pas jsonquery installé, mais c’est beaucoup plus facile à lire avec)

Une autre approche consiste à utiliser un service de redémarrage directement dans Docker Compose pour forcer un redémarrage, dans ce cas une fois par jour :

Exemple de Service Compose
restarter:
    image: docker:cli
    volumes: ["/var/run/docker.sock:/var/run/docker.sock"]
    command: ["/bin/sh", "-c", "while true; do sleep 86400; docker restart updates2mqtt; done"]
    restart: unless-stopped
    environment:
      - UPD2MQTT_UPDATE=AUTO

Conteneurs Cibles

Bien que updates2mqtt découvre et surveille tous les conteneurs s’exécutant sous le daemon Docker, il existe des options pour ajuster son fonctionnement sur ces conteneurs.

Cela se fait en ajoutant des variables d’environnement ou des labels Docker aux conteneurs, typiquement dans un fichier .env ou en tant qu’options environment dans docker-compose.yaml.

Mises à Jour Automatiques

Si les conteneurs Docker doivent être immédiatement mis à jour, sans confirmation ni déclencheur, par exemple depuis le dialogue de mise à jour de HomeAssistant, définissez la variable d’environnement UPD2MQTT_UPDATE dans le conteneur cible sur Auto (la valeur par défaut est Passive). Si vous souhaitez une mise à jour sans publication sur MQTT et sans visibilité pour Home Assistant, utilisez Silent.

Extrait Compose Exemple
restarter:
    image: docker:cli
    command: ["/bin/sh", "-c", "while true; do sleep 86400; docker restart mailserver; done"]
    environment:
      - UPD2MQTT_UPDATE=AUTO

Les mises à jour automatiques peuvent également s’appliquer aux compilations locales, où un git_repo_path a été défini - si des commits distants sont disponibles à récupérer, alors git pull, docker compose build et docker compose up seront exécutés.

Projets Connexes

D’autres applications utiles pour l’auto-hébergement avec l’aide de MQTT :

  • psmqtt - Rapporter l’état de santé et les métriques du système via MQTT

Trouvez-en plus sur awesome-mqtt

Pour un gestionnaire de mises à jour plus puissant axé sur Docker, essayez What’s Up Docker

Développement

Ce composant repose sur plusieurs packages open source :

  • docker-py SDK Python pour l’accès aux APIs Docker
  • Eclipse Paho client MQTT
  • OmegaConf pour la configuration et la validation
  • structlog pour la journalisation structurée et rich pour un meilleur rapport d’exceptions
  • hishel pour la mise en cache des métadonnées
  • httpx pour récupérer les métadonnées
  • Les outils Astral uv et ruff pour le développement et la compilation
  • pytest et les add-ins de support pour les tests automatisés
  • usingversion pour journaliser les informations de version actuelle

Rhizomatics Open Source pour Home Assistant

HACS

  • AutoArm - Armer et désarmer automatiquement les panneaux de contrôle d’alarme Home Assistant en utilisant des boutons physiques, la présence, les calendriers, le soleil et plus encore
  • Remote Logger - Capture d’événements OpenTelemetry (OTLP) et Syslog pour Home Assistant
  • Supernotify - Notification unifiée pour une messagerie multi-canal facile, incluant une intégration puissante de sonnettes et de caméras de sécurité.

Python / Docker

  • Anpr2MQTT - Intégration avec les caméras ANPR/ALPR de plaques d’immatriculation via le système de fichiers (NAS/FTP) vers MQTT avec analyse d’images optionnelle et intégration DVLA britannique.