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



Resumen

Permite que Home Assistant te notifique sobre nuevas actualizaciones de imágenes Docker para tus contenedores.

Ejemplo de página de actualización de Home AssistantEjemplo de notas de versión de Home Assistant

Lee las notas de la versión y, opcionalmente, haz clic en Actualizar para activar un pull de Docker (o, opcionalmente, un build) y una actualización.

Ejemplo de diálogo de actualización de Home Assistant

Descripción

Updates2MQTT verifica periódicamente si hay nuevas versiones de los componentes disponibles y publica la información de nuevas versiones en MQTT. Se admite el descubrimiento automático de HomeAssistant, de modo que todas las actualizaciones se pueden ver en el mismo lugar que los propios componentes y complementos de Home Assistant.

Actualmente solo se admiten contenedores Docker, ya sea mediante una verificación de registro de imágenes (usando las API de Docker v1 o la API OCI v2), o un repositorio git para el código fuente (consulta Compilaciones Locales), con manejo específico para Docker, Github Container Registry, Gitlab, Codeberg, Microsoft Container Registry, Quay y LinuxServer Registry, con comportamiento adaptativo para la mayoría de los demás. El diseño es modular, por lo que se pueden agregar otras fuentes de actualización, al menos para notificaciones. La siguiente prevista es apt para sistemas basados en Debian.

Los componentes también pueden actualizarse, ya sea automáticamente o activados a través de MQTT, por ejemplo, haciendo clic en el botón Instalar en el diálogo de actualización de HomeAssistant. Se pueden especificar iconos y notas de versión para una mejor experiencia en HA. Consulta Integración con Home Assistant para más detalles.

Para comenzar, lee las páginas de Instalación y Configuración.

Para una prueba rápida, intenta esto:

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

o sin Docker, usando uv

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

También incluye una herramienta básica de línea de comandos que realizará el análisis para un único contenedor en ejecución, o recuperará manifiestos, blobs JSON y listas de etiquetas desde registros remotos (comprobado que funciona con GitHub, GitLab, Codeberg, Quay, LSCR y Microsoft MCR).

Soporte de Versiones

Actualmente solo se admiten contenedores Docker, aunque se planean otros, probablemente con prioridad para apt.

Ecosistema Soporte Comentarios
Docker Scan, Fetch Fetch es solo docker pull. Soporte de reinicio solo para contenedores basados en imagen de docker-compose.

Latido (Heartbeat)

Un payload JSON de latido se publica opcionalmente de forma periódica en un topic MQTT configurable, cuyo valor predeterminado es healthcheck/{node_name}/updates2mqtt. Contiene la versión actual de Updates2MQTT, el nombre del nodo, una marca de tiempo y algunas estadísticas básicas.

Verificación de Salud (Healthcheck)

Se incluye un script healthcheck.sh en la imagen Docker y puede usarse como healthcheck de Docker si las variables de entorno del contenedor MQTT_HOST, MQTT_PORT, MQTT_USER y MQTT_PASS están configuradas. Usa el paquete Linux mosquitto-clients, que proporciona el comando mosquitto_sub para suscribirse a topics.

Tip

Verifica que el healthcheck funciona usando docker inspect --format "{{json .State.Health }}" updates2mqtt | jq (puedes omitir | jq si no tienes jsonquery instalado, pero es mucho más fácil de leer con él)

Otro enfoque es usar un servicio de reinicio directamente en Docker Compose para forzar un reinicio, en este caso una vez al día:

Ejemplo de Servicio 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

Contenedores Objetivo

Mientras que updates2mqtt descubrirá y monitorizará todos los contenedores que se ejecutan bajo el daemon de Docker, hay algunas opciones para ajustar su funcionamiento en esos contenedores.

Esto se hace agregando variables de entorno o etiquetas Docker a los contenedores, típicamente dentro de un archivo .env, o como opciones de environment dentro de docker-compose.yaml.

Actualizaciones Automáticas

Si los contenedores Docker deben actualizarse inmediatamente, sin ninguna confirmación o activador, por ejemplo desde el diálogo de actualización de HomeAssistant, establece la variable de entorno UPD2MQTT_UPDATE en el contenedor objetivo en Auto (el valor predeterminado es Passive). Si deseas que se actualice sin publicar en MQTT y sin ser visible para Home Assistant, usa Silent.

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

Las actualizaciones automáticas también pueden aplicarse a compilaciones locales, donde se ha definido un git_repo_path - si hay commits remotos disponibles para obtener, se ejecutarán git pull, docker compose build y docker compose up.

Proyectos Relacionados

Otras aplicaciones útiles para self-hosting con la ayuda de MQTT:

  • psmqtt - Reportar salud del sistema y métricas a través de MQTT

Encuentra más en awesome-mqtt

Para un gestor de actualizaciones más potente centrado en Docker, prueba What’s Up Docker

Desarrollo

Este componente se basa en varios paquetes de código abierto:

  • docker-py SDK de Python para acceso a las APIs de Docker
  • Eclipse Paho cliente MQTT
  • OmegaConf para configuración y validación
  • structlog para registro estructurado y rich para mejor reporte de excepciones
  • hishel para caché de metadatos
  • httpx para recuperar metadatos
  • Las herramientas de Astral uv y ruff para desarrollo y compilación
  • pytest y complementos de soporte para pruebas automatizadas
  • usingversion para registrar información de la versión actual

Rhizomatics Open Source para Home Assistant

HACS

  • AutoArm - Armar y desarmar automáticamente paneles de control de alarma de Home Assistant usando botones físicos, presencia, calendarios, sol y más
  • Remote Logger - Captura de eventos OpenTelemetry (OTLP) y Syslog para Home Assistant
  • Supernotify - Notificación unificada para mensajería multicanal fácil, incluida una poderosa integración de timbres y cámaras de seguridad.

Python / Docker

  • Anpr2MQTT - Integración con cámaras ANPR/ALPR de matrículas a través del sistema de archivos (NAS/FTP) a MQTT con análisis de imágenes opcional e integración con la DVLA del Reino Unido.