FHEM Forum

FHEM - Hardware => Server - Linux => Thema gestartet von: Sidey am 24 Oktober 2026, 12:50:05

Titel: fhem-docker: Wie alt ist dein Image wirklich?
Beitrag von: Sidey am 24 Oktober 2026, 12:50:05
Hallo zusammen,

ich pflege das Container Image für FHEM (https://github.com/fhem/fhem-docker). Zwei Dinge möchte ich euch mitgeben.

1. Bitte prüft einmal, wie alt euer Image ist

Wer vor längerer Zeit einmal fhem/fhem:latest (oder ghcr.io/fhem/fhem-docker:latest) gezogen hat, bekommt beim Neustart des Containers kein neues Image. Docker zieht nur bei einem expliziten docker pull bzw. docker compose pull nach. Ein "latest" ist also nur ein Name, der irgendwann einmal auf irgendetwas gezeigt hat. Das hat mehrere Folgen:


So prüft ihr das Erstellungsdatum:

# Erstellungsdatum des Images, mit dem ein Container tatsächlich läuft
# (<container> = Name aus "docker ps", beim Compose-Beispiel z. B. home-fhem-1)
docker image inspect --format '{{.RepoTags}} {{.Created}}' $(docker inspect --format '{{.Image}}' <container>)

# Übersicht aller lokalen Images mit Alter
docker images --format 'table {{.Repository}}\t{{.Tag}}\t{{.CreatedSince}}' | grep -i fhem

Ist das Datum mehr als ein paar Monate alt, lauft ihr mit einem veralteten Debian und Perl, einer nicht mehr unterstützten Node.js-Version und ohne Sicherheitsupdates. Im Zweifel steht dort sogar noch 2023 oder früher.

Empfehlung: einen konkreten Release-Tag verwenden, z. B.

image: ghcr.io/fhem/fhem-minimal-docker:5.5.0-bookworm

(bzw. 5.5.0-threaded-bookworm). Auch der Tag 5-bookworm ist beweglich: Er zeigt auf den jeweils neuesten 5.x-Stand, aber nur wer aktiv docker compose pull ausführt, bekommt diesen auch. Das Problem ist also dasselbe wie bei "latest", nur ohne den Sprung in eine neue Generation. Mit einem festen Release-Tag ist jederzeit klar, was läuft, und ein Update ist eine bewusste Änderung im Compose-File. Wer das nicht von Hand verfolgen will, lässt Renovate/Dependabot im eigenen Compose-Repository Update-Vorschläge als Pull Request erzeugen.

2. Was seit Herbst 2024 passiert ist – und warum sich ein Update lohnt

Seit dem Start von Version 5 (November 2024 Beta, Januar 2025 final) gab es mehr als 400 Commits und Releases bis v5.5.0 (Oktober 2026). Die wichtigsten Punkte:

Basis und Laufzeit

Sicherheit und Wartung

Perl-Module

Betrieb im Alltag

Image schlanker und klarer

Sidecar-Container (nur kurz)

Statt alles in ein Image zu packen, gibt es jetzt separate Images, die im Compose-Beispiel schon verdrahtet sind:
Sie hängen zusammen mit FHEM in einem internen Backend-Netz ohne direkten Zugang von außen (Ausnahme: der alexa-cookie-service veröffentlicht Port 58090) und lassen sich unabhängig updaten.

Das Compose-Beispiel für das eigene Setup nutzen

Das docker-compose.yml im Repository wird mit dem Image gepflegt (Healthcheck, internes Backend-Netz, Sidecars als Profile). Es ist dafür gedacht, direkt benutzt zu werden – das Repository muss man dafür nicht klonen, die eine Datei genügt:

mkdir -p /docker/home && cd /docker/home
curl -fsSL -O https://github.com/fhem/fhem-docker/raw/dev/docker-compose.yml
docker compose up -d

Wichtig: Die Datei verwendet den beweglichen Tag 5-bookworm. Wer, wie oben empfohlen, einen festen Tag möchte, setzt ihn in der compose.override.yml:

services:
  fhem:
    image: ghcr.io/fhem/fhem-minimal-docker:5.5.0-bookworm

Das Verzeichnis heißt später als Projektname in den Containernamen, bei mehreren Stacks also sinnvoll benennen. FHEM legt seine Daten unter ./fhem/ ab. Ein bestehendes FHEM-Verzeichnis kann dort einfach eingehängt werden.


Updaten
Das FHEM-Verzeichnis im Volume wird dabei nicht angefasst; aktualisiert wird nur die Laufumgebung.

Links:

Rückmeldungen und Erfahrungen nach dem Update sind willkommen.

Grüße
Sidey
Titel: Aw: fhem-docker: Wie alt ist dein Image wirklich?
Beitrag von: CoolTux am 24 Oktober 2026, 13:35:05
Sag mal mein Lieber, warst Du in meiner Kubernetes/Docker Schulung  ;D
Das ist mit das erste was ich meinen Teilnehmern beibringe. Niemals never sollt Ihr latest als Tag nehmen sondern immer eindeutige Versionen.

Und das zweite ist, arbeitet immer mit Ressourcen Begrenzungen.


Grüße