Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Monitoring 05.07.2026 · 8 min Lesezeit

Homer mit Docker installieren: Schlankes Homelab-Startseiten-Dashboard

Homer mit Docker Compose installieren: statisches Dashboard für alle selbst gehosteten Dienste, mit festem Image-Tag, gebundenem Port, config.yml, Updates und Betrieb hinter einem Reverse Proxy.

Geprüft am 30.09.2026 · für b4bz/homer 26.08.3

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Symbolbild zur Anleitung: Homer mit Docker installieren

Wer viele selbst gehostete Dienste betreibt, verliert schnell den Überblick über Adressen und Ports. Homer ist ein statisches Dashboard, das alle Dienste als Kacheln auf einer Seite zeigt. Es braucht keine Datenbank und kein Backend; die gesamte Konfiguration steht in einer Datei config.yml. Diese Anleitung zeigt Installation, Konfiguration, Updates und den Betrieb hinter einem Reverse Proxy.

Voraussetzungen

  1. Linux-Host, VM oder NAS mit Docker Engine und Docker Compose v2, siehe Docker und Docker Compose auf Linux installieren
  2. Rund 50 MB freier Arbeitsspeicher und ein freier Port (Standard: 8080)
  3. Optional: Reverse Proxy (Caddy, Traefik oder Nginx) für HTTPS
  4. Optional: curl und yamllint für die Prüfung auf der Kommandozeile

Schritt 1: Projektordner anlegen

Legen Sie einen Ordner für den Stack an, auf einem Linux-Server zum Beispiel /opt/homer/. Das Unterverzeichnis homer-assets wird als Bind-Mount eingehängt. Homer legt dort beim ersten Start eine Beispielkonfiguration ab, sofern der Container-Benutzer (UID 1000) schreiben darf.

mkdir -p /opt/homer/homer-assets
cd /opt/homer
chown -R 1000:1000 /opt/homer/homer-assets
chmod -R 755 /opt/homer/homer-assets

Verifizieren: stat -c "%u %g %a" /opt/homer/homer-assets gibt 1000 1000 755 aus.

Schritt 2: .env-Datei anlegen

Die .env-Datei hält die hostspezifischen Werte. HOMER_BIND legt fest, auf welcher Adresse des Hosts Homer erreichbar ist. Mit 127.0.0.1 erreicht nur ein Reverse Proxy auf demselben Host das Dashboard; für den direkten Zugriff im Heimnetz tragen Sie die LAN-Adresse des Hosts ein. Binden Sie Homer nicht an alle Schnittstellen, wenn der Host aus dem Internet erreichbar ist.

# /opt/homer/.env

# Adresse des Hosts, an die der Port gebunden wird
# 127.0.0.1 = nur Reverse Proxy auf diesem Host, sonst LAN-IP, z. B. 192.168.1.10
HOMER_BIND=127.0.0.1

# Externer Port
HOMER_PORT=8080

# 1: Beispielkonfiguration anlegen, falls keine config.yml existiert
INIT_ASSETS=1

Verifizieren: cat /opt/homer/.env zeigt die drei Variablen mit Ihren Werten.

Schritt 3: compose.yaml erstellen

Der Stack besteht aus einem einzigen Dienst. Der Image-Tag ist festgelegt, damit ein Update nur dann stattfindet, wenn Sie den Tag bewusst ändern.

# /opt/homer/compose.yaml

services:
  homer:
    image: b4bz/homer:v26.08.3
    container_name: homer
    restart: unless-stopped
    ports:
      - "${HOMER_BIND:-127.0.0.1}:${HOMER_PORT:-8080}:8080"
    volumes:
      - ./homer-assets:/www/assets
    environment:
      - INIT_ASSETS=${INIT_ASSETS:-1}
      # Nur bei Betrieb unter einem Unterverzeichnis (Schritt 7):
      # - SUBFOLDER=/homer
      # IPv6 im Container abschalten:
      # - IPV6_DISABLE=1
    user: "1000:1000"
ParameterWertHinweis
Imageb4bz/homer:v26.08.3Offizielles Image auf Docker Hub, Stand September 2026
Interner Port8080Änderbar per PORT, extern per HOMER_PORT
Volume./homer-assets:/www/assetsconfig.yml, Icons, eigene CSS-Dateien
INIT_ASSETS1Beispielkonfiguration nur, wenn keine config.yml vorhanden ist
user1000:1000Kein root; Verzeichnis muss für UID 1000 schreibbar sein
Architekturenamd64, arm64, arm/v7, arm/v6Läuft auch auf Raspberry Pi

Verifizieren: docker compose config gibt die aufgelöste Konfiguration ohne Fehler aus; unter ports steht Ihre HOMER_BIND-Adresse.

Schritt 4: Container starten

cd /opt/homer
docker compose up -d

Docker lädt das Image, startet den Container und Homer legt mit INIT_ASSETS=1 die Datei homer-assets/config.yml und den Ordner homer-assets/icons/ an.

Verifizieren:

docker compose ps
docker compose logs homer
curl -I http://127.0.0.1:8080   # bzw. http://HOMER_BIND:8080
ls -la /opt/homer/homer-assets/

docker compose ps zeigt den Status Up und nach kurzer Zeit (healthy), die Portspalte beginnt mit Ihrer HOMER_BIND-Adresse, nicht mit 0.0.0.0. curl -I liefert HTTP/1.1 200 OK. Das Log endet mit Starting webserver; Assets directory not writable weist auf falsche Berechtigungen hin.

Schritt 5: Dashboard im Browser öffnen und konfigurieren

Öffnen Sie http://<HOMER_BIND>:8080 im Browser (bei 127.0.0.1 erst nach Schritt 7 über den Reverse Proxy). Sie sehen die Beispielseite mit Demo-Kacheln. Passen Sie anschließend /opt/homer/homer-assets/config.yml an, zum Beispiel so:

# /opt/homer/homer-assets/config.yml

title: "Mein Homelab"
subtitle: "Dashboard"
# theme: default   # weitere Themes siehe Homer-Dokumentation
# columns: "3"     # "auto" oder 1, 2, 3, 4, 6, 12

header: true
footer: false

services:
  - name: "Medien"
    icon: "fas fa-film"
    items:
      - name: "Jellyfin"
        logo: "assets/icons/jellyfin.png"
        subtitle: "Media-Server"
        tag: "medien"
        url: "http://192.168.1.10:8096"
        target: "_blank"

  - name: "Verwaltung"
    icon: "fas fa-cogs"
    items:
      - name: "Portainer"
        logo: "assets/icons/portainer.png"
        subtitle: "Docker-Management"
        url: "http://192.168.1.10:9000"
        target: "_blank"
        # Erreichbarkeit per HEAD-Request prüfen:
        type: "Ping"

Als Icons dienen lokale Bilddateien unter homer-assets/icons/ oder Font-Awesome-Klassen wie icon: "fas fa-server". Homer liest die config.yml beim Laden der Seite; nach dem Speichern genügt ein Neuladen im Browser, ein Container-Neustart ist nicht nötig.

Wichtig: Die config.yml ist unter /assets/config.yml für jeden abrufbar, der das Dashboard erreicht. Tragen Sie dort keine API-Schlüssel oder Passwörter ein, solange Homer nicht hinter einer Anmeldung liegt.

Verifizieren: Nach dem Neuladen (bei hartnäckigem Cache Strg+Umschalt+R) erscheinen Ihre Kacheln. Bei type: "Ping" zeigt Homer neben dem Dienst die Antwortzeit bzw. den Status an. Bleibt die Seite leer, prüfen Sie die Datei mit yamllint homer-assets/config.yml.

Schritt 6: Updates und Backup

Für ein Update tragen Sie den neuen Tag aus den Homer-Releases in compose.yaml ein und führen aus:

cd /opt/homer
docker compose pull
docker compose up -d

Die config.yml und die Icons liegen im Bind-Mount und bleiben erhalten. Über neue Versionen informiert Sie Diun oder WUD, siehe Docker-Container automatisch aktualisieren nach dem Watchtower-Aus.

Backup: Homer speichert keine weiteren Daten. Sichern Sie das Verzeichnis /opt/homer/ mit compose.yaml, .env und homer-assets/.

Verifizieren: docker compose images zeigt den neuen Tag, docker compose ps den Status Up.

Schritt 7: Reverse Proxy und HTTPS (optional)

Für eine eigene Domain mit TLS leiten Sie den Reverse Proxy auf 127.0.0.1:8080 weiter; an Homer ist nichts zu ändern. Läuft Homer unter einem Unterverzeichnis wie https://example.com/homer, entfernen Sie in compose.yaml das Kommentarzeichen vor - SUBFOLDER=/homer und starten neu mit docker compose up -d. Ohne diese Variable lädt der Browser CSS und JavaScript von falschen Pfaden.

Anleitungen: Caddy als Reverse Proxy einrichten und Traefik als Docker-Reverse-Proxy.

Verifizieren: curl -I https://homer.example.com liefert Status 200, der Browser zeigt eine gültige Verbindung und die Konsole (F12) keine 404-Fehler.

Troubleshooting / Typische Fehler

  1. Dashboard bleibt leer: config.yml fehlt oder enthält einen YAML-Fehler, meist Tabs statt Leerzeichen. Prüfen Sie mit docker compose logs homer und yamllint /opt/homer/homer-assets/config.yml.
  2. Assets directory not writable im Log: homer-assets ist für UID 1000 nicht schreibbar. Beheben mit chown -R 1000:1000 /opt/homer/homer-assets, dann docker compose restart homer.
  3. address already in use beim Start: Port 8080 ist belegt. Setzen Sie HOMER_PORT in der .env auf einen freien Port und starten Sie mit docker compose up -d.
  4. Dashboard im Heimnetz nicht erreichbar: HOMER_BIND steht auf 127.0.0.1. Tragen Sie die LAN-Adresse des Hosts ein und starten Sie neu.
  5. Ping-Status zeigt „offline“, obwohl der Dienst läuft: Der Browser blockiert die Anfrage, etwa bei HTTPS-Dashboard und HTTP-Dienst (Mixed Content) oder fehlenden CORS-Headern. Stellen Sie die Dienste per HTTPS unter derselben Domain bereit oder entfernen Sie type: "Ping".
  6. CSS und JavaScript fehlen hinter dem Reverse Proxy: SUBFOLDER ist nicht gesetzt, obwohl Homer unter einem Unterverzeichnis läuft (Schritt 7).
  7. Änderungen erscheinen nicht: Der Browser zeigt die zwischengespeicherte Version (PWA-Cache). Laden Sie mit Strg+Umschalt+R bzw. Cmd+Umschalt+R neu.

Häufige Fragen

Muss ich den Container nach jeder Änderung an config.yml neu starten?

Nein. Homer liest die Datei beim Laden der Seite. Nach dem Speichern genügt ein Neuladen im Browser.

Wie füge ich einen neuen Dienst zur Startseite hinzu?

Ergänzen Sie in config.yml unter services eine Gruppe oder unter items einen Eintrag mit name und url, optional logo oder icon, subtitle und tag.

Wie aktiviere ich den Service-Status-Check?

Setzen Sie im Eintrag type: "Ping". Homer sendet dann aus dem Browser einen HEAD-Request an die url und zeigt Status und Antwortzeit an; mit method: "get" und successCodes passen Sie die Prüfung an. Für Dienste wie Pi-hole oder AdGuard Home gibt es eigene Kartentypen mit Statistiken. Die Option connectivityCheck ist davon unabhängig: Sie prüft, ob das Dashboard selbst noch erreichbar ist, etwa bei einer VPN-Verbindung.

Unterstützt Homer arm64 / Raspberry Pi 4 und 5?

Ja. Das Image steht auf Docker Hub für linux/amd64, linux/arm64, linux/arm/v7 und linux/arm/v6 bereit.

Kann Homer hinter Nginx, Traefik oder Caddy betrieben werden?

Ja. Unter einer eigenen Subdomain ist keine Anpassung nötig. Unter einem Unterverzeichnis setzen Sie SUBFOLDER in compose.yaml (Schritt 7).

Wo finde ich fertige Logos und Icons für meine Dienste?

Nutzen Sie Font-Awesome-Klassen direkt in der YAML oder legen Sie PNG- bzw. SVG-Logos der Projekte unter homer-assets/icons/ ab und verweisen mit logo: "assets/icons/dienst.png" darauf. Das Projekt dashboard-icons sammelt Logos gängiger Self-Hosting-Dienste.

Fazit

Homer liefert mit einem Container von rund 7 MB und einer YAML-Datei eine schnelle Startseite für alle selbst gehosteten Dienste. Binden Sie den Port gezielt an eine Adresse, legen Sie den Image-Tag fest und halten Sie Zugangsdaten aus der config.yml heraus. Brauchen Sie Widgets und Integrationen, bietet Homepage mehr Funktionen; für reine Statusüberwachung eignet sich Gatus.

Weiterführende Anleitungen und Quellen

  1. Docker und Docker Compose auf Linux installieren – die Self-Hosting-Grundlage
  2. Docker-Container automatisch aktualisieren nach dem Watchtower-Aus: Diun, WUD und Renovate
  3. Traefik als Docker-Reverse-Proxy mit automatischem HTTPS einrichten
  4. Caddy als Reverse Proxy einrichten: Anfänger-Anleitung mit automatischem HTTPS
  5. Homepage auf dem Synology NAS installieren: Dashboard für alle Self-Hosting-Dienste
  6. Gatus mit Docker installieren: entwicklerorientiertes Status-Dashboard

Offizielle Quellen: Homer GitHub Repository (bastienwirtz/homer) · b4bz/homer auf Docker Hub · Homer Konfigurationsdokumentation

Passende Anleitungen auf S-EDV

  1. Automatische Sicherheitsupdates unter Debian/Ubuntu mit unattended-upgrades rich
  2. netcup Local Block Storage bestellen, einrichten und unter Linux einbinden