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



Podsumowanie

Pozwól Home Assistant informować Cię o nowych aktualizacjach obrazów Docker dla Twoich kontenerów.

Przykładowa strona aktualizacji Home AssistantPrzykładowe informacje o wydaniu Home Assistant

Przeczytaj informacje o wydaniu i opcjonalnie kliknij Aktualizuj, aby uruchomić Docker pull (lub opcjonalnie build) i aktualizację.

Przykładowe okno dialogowe aktualizacji Home Assistant

Opis

Updates2MQTT okresowo sprawdza dostępność nowych wersji komponentów i publikuje informacje o nowych wersjach do MQTT. Obsługiwane jest automatyczne wykrywanie przez HomeAssistant, dzięki czemu wszystkie aktualizacje można zobaczyć w tym samym miejscu co własne komponenty i dodatki Home Assistant.

Obecnie obsługiwane są tylko kontenery Docker, poprzez sprawdzenie rejestru obrazów (przy użyciu API Docker v1 lub API OCI v2) lub repozytorium git dla źródeł (patrz Lokalne Kompilacje), ze specyficzną obsługą dla Docker, Github Container Registry, Gitlab, Codeberg, Microsoft Container Registry, Quay i LinuxServer Registry, z adaptacyjnym zachowaniem dla większości pozostałych. Projekt jest modularny, więc można dodawać inne źródła aktualizacji, przynajmniej do powiadamiania. Następnym planowanym jest apt dla systemów opartych na Debianie.

Komponenty mogą być również aktualizowane, automatycznie lub wyzwalane przez MQTT, na przykład przez naciśnięcie przycisku Instaluj w oknie dialogowym aktualizacji HomeAssistant. Ikony i informacje o wydaniu można określić dla lepszego doświadczenia HA. Szczegóły w Integracja z Home Assistant.

Aby rozpocząć, przeczytaj strony Instalacja i Konfiguracja.

Dla szybkiego przetestowania spróbuj:

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

lub bez Dockera, używając uv

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

Zawiera też podstawowe narzędzie wiersza poleceń, które przeprowadzi analizę dla pojedynczego działającego kontenera lub pobierze manifesty, bloby JSON i listy tagów ze zdalnych rejestrów (działa z GitHub, GitLab, Codeberg, Quay, LSCR i Microsoft MCR).

Wsparcie Wydań

Obecnie obsługiwane są tylko kontenery Docker, choć planowane są inne, prawdopodobnie z priorytetem dla apt.

Ekosystem Wsparcie Komentarze
Docker Scan, Fetch Fetch to tylko docker pull. Wsparcie restartu tylko dla kontenerów docker-compose opartych na obrazie.

Heartbeat

Ładunek JSON heartbeat jest opcjonalnie publikowany okresowo do konfigurowalnego tematu MQTT, domyślnie healthcheck/{node_name}/updates2mqtt. Zawiera bieżącą wersję Updates2MQTT, nazwę węzła, znacznik czasu i podstawowe statystyki.

Sprawdzenie Zdrowia (Healthcheck)

Skrypt healthcheck.sh jest dołączony do obrazu Docker i może być użyty jako Docker healthcheck, jeśli zmienne środowiskowe kontenera MQTT_HOST, MQTT_PORT, MQTT_USER i MQTT_PASS są ustawione. Używa pakietu Linux mosquitto-clients, który zapewnia polecenie mosquitto_sub do subskrybowania tematów.

Tip

Sprawdź, czy healthcheck działa, używając docker inspect --format "{{json .State.Health }}" updates2mqtt | jq (możesz pominąć | jq, jeśli nie masz zainstalowanego jsonquery, ale jest znacznie łatwiejszy do odczytania)

Innym podejściem jest bezpośrednie użycie usługi restarter w Docker Compose, aby wymusić restart, w tym przypadku raz dziennie:

Przykładowa Usługa 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

Kontenery Docelowe

Chociaż updates2mqtt wykrywa i monitoruje wszystkie kontenery działające w ramach demona Docker, istnieją opcje dostosowania jego działania dla tych kontenerów.

Odbywa się to poprzez dodanie zmiennych środowiskowych lub etykiet Docker do kontenerów, zazwyczaj w pliku .env lub jako opcje environment w docker-compose.yaml.

Automatyczne Aktualizacje

Jeśli kontenery Docker powinny być natychmiast aktualizowane bez żadnego potwierdzenia lub wyzwalacza, np. z okna dialogowego aktualizacji HomeAssistant, ustaw zmienną środowiskową UPD2MQTT_UPDATE w kontenerze docelowym na Auto (domyślnie Passive). Jeśli chcesz aktualizować bez publikowania do MQTT i widoczności dla Home Assistant, użyj Silent.

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

Automatyczne aktualizacje mogą dotyczyć również lokalnych kompilacji, gdzie zdefiniowano git_repo_path - jeśli dostępne są zdalne commity do pobrania, zostaną wykonane git pull, docker compose build i docker compose up.

Powiązane Projekty

Inne przydatne aplikacje do self-hostingu z pomocą MQTT:

  • psmqtt - Raportuj stan systemu i metryki przez MQTT

Znajdź więcej na awesome-mqtt

Dla bardziej zaawansowanego menedżera aktualizacji skupionego na Dockerze, wypróbuj What’s Up Docker

Rozwój

Ten komponent opiera się na kilku pakietach open source:

  • docker-py SDK Python do dostępu do API Docker
  • Eclipse Paho klient MQTT
  • OmegaConf do konfiguracji i walidacji
  • structlog do strukturalnego logowania i rich do lepszego raportowania wyjątków
  • hishel do buforowania metadanych
  • httpx do pobierania metadanych
  • Narzędzia Astral uv i ruff do rozwoju i budowania
  • pytest i pomocnicze wtyczki do automatycznego testowania
  • usingversion do logowania informacji o bieżącej wersji

Rhizomatics Open Source dla Home Assistant

HACS

  • AutoArm - Automatyczne uzbrajanie i rozbrajanie paneli sterowania alarmem Home Assistant za pomocą fizycznych przycisków, obecności, kalendarzy, słońca i innych
  • Remote Logger - Przechwytywanie zdarzeń OpenTelemetry (OTLP) i Syslog dla Home Assistant
  • Supernotify - Ujednolicone powiadamianie dla łatwego przesyłania wiadomości wielokanałowych, w tym zaawansowanej integracji dzwonków i kamer bezpieczeństwa.

Python / Docker

  • Anpr2MQTT - Integracja z kamerami ANPR/ALPR do tablic rejestracyjnych przez system plików (NAS/FTP) do MQTT z opcjonalną analizą obrazu i integracją z UK DVLA.