This page available in English, Deutsch, Español, Français, हिन्दी, Italiano, 日本語, Nederlands, Polski, Português, 中文(简体)

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


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

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:
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.
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.