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



Lascia che Home Assistant ti informi dei nuovi aggiornamenti alle immagini Docker per i tuoi container.

Esempio di pagina di aggiornamento Home AssistantEsempio di note di rilascio Home Assistant

Leggi le note di rilascio e, facoltativamente, fai clic su Aggiorna per avviare un Docker pull (o facoltativamente build) e un aggiornamento.

Esempio di dialogo di aggiornamento Home Assistant

Descrizione

Updates2MQTT verifica periodicamente la disponibilità di nuove versioni dei componenti e pubblica le informazioni sulle nuove versioni tramite MQTT. Il rilevamento automatico di HomeAssistant è supportato, in modo che tutti gli aggiornamenti possano essere visualizzati nello stesso posto dei componenti e dei componenti aggiuntivi di Home Assistant.

Attualmente sono supportati solo i container Docker, tramite una verifica del registro delle immagini (usando le API Docker v1 o l’API OCI v2) o un repository git per il sorgente (vedi Build Locali), con gestione specifica per Docker, Github Container Registry, Gitlab, Codeberg, Microsoft Container Registry, Quay e LinuxServer Registry, con comportamento adattivo per la maggior parte degli altri. Il design è modulare, quindi è possibile aggiungere altre sorgenti di aggiornamento, almeno per le notifiche. La prossima prevista è apt per i sistemi basati su Debian.

I componenti possono anche essere aggiornati, automaticamente o attivati tramite MQTT, ad esempio premendo il pulsante Installa nel dialogo di aggiornamento di HomeAssistant. Icone e note di rilascio possono essere specificate per una migliore esperienza HA. Consulta Integrazione con Home Assistant per i dettagli.

Per iniziare, leggi le pagine Installazione e Configurazione.

Per una prova rapida, esegui:

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 senza 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

Include anche uno strumento base da riga di comando che eseguirà l’analisi per un singolo container in esecuzione, o recupererà manifest, blob JSON e liste di tag da registri remoti (verificato funzionante con GitHub, GitLab, Codeberg, Quay, LSCR e Microsoft MCR).

Supporto alle Versioni

Attualmente sono supportati solo i container Docker, anche se altri sono pianificati, probabilmente con priorità per apt.

Ecosistema Supporto Note
Docker Scan, Fetch Fetch è solo docker pull. Supporto al riavvio solo per container basati su immagine docker-compose.

Heartbeat

Un payload JSON di heartbeat viene facoltativamente pubblicato periodicamente su un topic MQTT configurabile, con valore predefinito healthcheck/{node_name}/updates2mqtt. Contiene la versione corrente di Updates2MQTT, il nome del nodo, un timestamp e alcune statistiche di base.

Healthcheck

Nell’immagine Docker è incluso uno script healthcheck.sh, utilizzabile come healthcheck Docker se le variabili d’ambiente del container MQTT_HOST, MQTT_PORT, MQTT_USER e MQTT_PASS sono impostate. Usa il pacchetto Linux mosquitto-clients che fornisce il comando mosquitto_sub per iscriversi ai topic.

Tip

Verifica che l’healthcheck funzioni usando docker inspect --format "{{json .State.Health }}" updates2mqtt | jq (puoi omettere | jq se non hai jsonquery installato, ma è molto più facile da leggere con esso)

Un altro approccio è utilizzare un servizio di riavvio direttamente in Docker Compose per forzare un riavvio, in questo caso una volta al giorno:

Esempio di Servizio 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

Container Target

Mentre updates2mqtt scoprirà e monitorerà tutti i container in esecuzione sotto il daemon Docker, esistono alcune opzioni per ottimizzarne il funzionamento su quei container.

Ciò avviene aggiungendo variabili d’ambiente o label Docker ai container, tipicamente all’interno di un file .env, o come opzioni environment all’interno di docker-compose.yaml.

Aggiornamenti Automatici

Se i container Docker devono essere aggiornati immediatamente, senza alcuna conferma o attivatore, ad esempio dal dialogo di aggiornamento di HomeAssistant, imposta la variabile d’ambiente UPD2MQTT_UPDATE nel container di destinazione su Auto (il valore predefinito è Passive). Se vuoi che si aggiorni senza pubblicare su MQTT ed essere visibile a Home Assistant, usa Silent.

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

Gli aggiornamenti automatici possono applicarsi anche alle build locali, dove è stato definito un git_repo_path - se sono disponibili commit remoti da scaricare, verranno eseguiti git pull, docker compose build e docker compose up.

Progetti Correlati

Altre app utili per il self-hosting con l’aiuto di MQTT:

  • psmqtt - Segnala salute del sistema e metriche tramite MQTT

Trova altri su awesome-mqtt

Per un gestore di aggiornamenti più potente incentrato su Docker, prova What’s Up Docker

Sviluppo

Questo componente si basa su diversi pacchetti open source:

  • docker-py SDK Python per l’accesso alle API Docker
  • Eclipse Paho client MQTT
  • OmegaConf per configurazione e validazione
  • structlog per la registrazione strutturata e rich per una migliore segnalazione delle eccezioni
  • hishel per la memorizzazione nella cache dei metadati
  • httpx per il recupero dei metadati
  • Gli strumenti Astral uv e ruff per lo sviluppo e la compilazione
  • pytest e add-in di supporto per i test automatizzati
  • usingversion per registrare le informazioni sulla versione corrente

Rhizomatics Open Source per Home Assistant

HACS

  • AutoArm - Inserimento e disinserimento automatico dei pannelli di controllo allarme di Home Assistant utilizzando pulsanti fisici, presenza, calendari, sole e altro ancora
  • Remote Logger - Acquisizione di eventi OpenTelemetry (OTLP) e Syslog per Home Assistant
  • Supernotify - Notifica unificata per una messaggistica multicanale semplice, con potente integrazione di campanelli e telecamere di sicurezza.

Python / Docker

  • Anpr2MQTT - Integrazione con telecamere ANPR/ALPR per targhe tramite file system (NAS/FTP) a MQTT con analisi delle immagini opzionale e integrazione DVLA del Regno Unito.