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

Homer mit Docker installieren: Schlankes Homelab-Startseiten-Dashboard

Homer ist das ressourcensparendste Homelab-Dashboard: ca. 7 MB Image, kein Backend, keine Datenbank – nur eine einzige YAML-Datei, die alle Docker-Dienste als klickbare Kacheln präsentiert. Diese Anleitung zeigt dir, wie du Homer in unter 10 Minuten per docker compose auf jedem Linux-Host startest.

Homer mit Docker installieren: Schlankes Homelab Startseiten Dashboard für Self Hosting mit Docker Container, zentraler Übersicht aller Dienste, Server, Anwendungen und Links sowie anpassbarer Weboberfläche für das persönliche Homelab.

Wer einen Homelab-Server oder ein NAS mit dutzenden selbst gehosteten Diensten betreibt, verliert schnell den Überblick über URLs und Ports. Homer löst genau dieses Problem: Das vollständig statische Dashboard zeigt alle Dienste als konfigurierbare Kacheln auf einer einzigen Webseite – ohne Datenbank, ohne Backend-Logik, ohne Ressourcenverschwendung. Die gesamte Konfiguration steckt in einer einzigen config.yml-Datei, Änderungen werden live nachgeladen. Mit über 11.000 GitHub-Stars und mehr als zehn Millionen Docker-Pulls ist Homer das meistgenutzte Startseiten-Dashboard im Homelab-Bereich.

Voraussetzungen

  1. Linux-Host, VM oder NAS mit laufender Docker Engine 20.10+ und Docker Compose v2 – eine Installationsanleitung findest du unter Docker und Docker Compose auf Linux installieren
  2. Mindestens 50 MB freier RAM (Homer ist extrem genügsam) und ein freier Port auf dem Host (Standard: 8080)
  3. Schreibzugriff auf ein Host-Verzeichnis für den Bind-Mount (./homer-assets)
  4. Optional: Reverse Proxy (Nginx, Traefik oder Caddy) für HTTPS – empfohlen, wenn Homer öffentlich erreichbar sein soll
  5. Optional: curl und yamllint für die Verifikation auf der Kommandozeile

Schritt 1: Projektordner anlegen

Lege einen dedizierten Ordner für den Homer-Stack an. Alle Dateien – compose.yaml, .env und das Asset-Verzeichnis – leben darin. Auf einem Linux-Server empfiehlt sich /opt/homer/, auf einem NAS-Homeverzeichnis zum Beispiel ~/homer/.

mkdir -p /opt/homer/homer-assets
cd /opt/homer

Das Unterverzeichnis homer-assets wird später als Bind-Mount in den Container eingehängt. Homer schreibt beim ersten Start eine Beispielkonfiguration dorthin – daher muss der Ordner bereits vor dem ersten docker compose up existieren.

Setze anschließend die Berechtigungen, damit der Container-Nutzer (UID 1000) schreiben darf:

chown -R 1000:1000 /opt/homer/homer-assets
chmod -R 755 /opt/homer/homer-assets

Verifizieren: ls -la /opt/homer/ zeigt das Unterverzeichnis homer-assets mit Besitzer 1000:1000. stat -c "%U %G %a" /opt/homer/homer-assets gibt 1000 1000 755 zurück (oder den numerischen UID-Wert, wenn kein Nutzer mit UID 1000 auf dem Host existiert).

Schritt 2: .env-Datei anlegen

Die .env-Datei hält alle umgebungsspezifischen Werte außerhalb der compose.yaml. So lässt sich die Konfiguration leicht auf andere Hosts übertragen, ohne die Compose-Datei anzufassen.

# /opt/homer/.env

# Externer Port, unter dem Homer erreichbar ist (Standard: 8080)
HOMER_PORT=8080

# Auf 1: Homer legt beim ersten Start automatisch eine Beispielkonfiguration an.
# Auf 0 setzen, sobald du deine eigene config.yml hast.
INIT_ASSETS=1

# Optional: Unterverzeichnispfad, wenn Homer hinter einem Reverse Proxy
# unter /homer o.ae. erreichbar sein soll. Leer lassen für Root-Betrieb.
# SUBFOLDER=/homer

Verifizieren: cat /opt/homer/.env zeigt die drei Variablen. docker compose config (im nächsten Schritt) löst die Variablen korrekt auf – kein variable is not set-Fehler.

Schritt 3: compose.yaml erstellen

Erstelle die Compose-Datei im Projektordner. Homer benötigt weder eine Datenbank noch weitere Dienste – der Stack besteht aus einem einzigen Service.

# /opt/homer/compose.yaml

services:
  homer:
    image: b4bz/homer:latest
    # Für reproduzierbare Deployments alternativ den gepinnten Tag verwenden:
    # image: b4bz/homer:v26.4.2
    container_name: homer
    restart: unless-stopped
    ports:
      - "${HOMER_PORT:-8080}:8080"
    volumes:
      - ./homer-assets:/www/assets
    environment:
      - INIT_ASSETS=${INIT_ASSETS:-1}
      # Bei Reverse-Proxy-Betrieb unter Unterverzeichnis auskommentieren:
      # - SUBFOLDER=/homer
      # Internen Port aendern (nur bei Konflikt nötig):
      # - PORT=8080
      # IPv6 im Container deaktivieren:
      # - IPV6_DISABLE=0
    user: "1000:1000"

# Kein volumes-Block nötig: Bind-Mount, kein named Volume
# Keine Datenbank oder weiterer Dienst erforderlich

Die wichtigsten Parameter im Überblick:

ParameterWertHinweis
Imageb4bz/homer:latestOffizielles Image auf Docker Hub; aktueller stabiler Tag: v26.4.2
Interner Port8080Änderbar per PORT-Env; externer Port via HOMER_PORT in .env
Pflicht-Volume./homer-assets:/www/assetsEnthält config.yml, Icons und optionale CSS-Dateien
INIT_ASSETS1 (Standard)Legt Beispielkonfiguration an, wenn noch keine config.yml vorhanden
user1000:1000Non-Root; Host-Verzeichnis muss für UID 1000 schreibbar sein
Image-Größeca. 7 MBEines der kleinsten Homelab-Dashboard-Images überhaupt
Architekturenamd64, arm/v6, arm/v7 (+1)Läuft auch auf Raspberry Pi; arm64 sehr wahrscheinlich unterstützt

Verifizieren: docker compose config im Ordner /opt/homer/ gibt die aufgelöste Konfiguration ohne Fehler aus. Alle Variablen aus .env erscheinen mit ihren Werten.

Schritt 4: Container starten

Starte Homer im Hintergrund:

cd /opt/homer
docker compose up -d

Docker lädt das Image herunter (ca. 7 MB), erstellt den Container und startet ihn. Mit INIT_ASSETS=1 legt Homer beim ersten Start automatisch eine Beispielkonfiguration unter homer-assets/config.yml sowie Icons unter homer-assets/icons/ an.

Verifizieren:

# Containerstatus prüfen – STATUS sollte "Up" zeigen
docker compose ps

# Logs auf Fehler prüfen
docker compose logs homer

# HTTP-Antwort prüfen
curl -I http://localhost:8080

Erwartete Ausgabe von docker compose ps:

NAME    IMAGE              COMMAND   SERVICE  STATUS   PORTS
homer   b4bz/homer:latest  ...       homer    Up       0.0.0.0:8080->8080/tcp

Erwartete Ausgabe von curl -I http://localhost:8080:

HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8

Die Logs sollten keine Fehlermeldungen zu fehlendem Volume, Port-Konflikten oder Berechtigungsfehlern zeigen. Nach dem ersten Start findest du außerdem die automatisch angelegte homer-assets/config.yml: ls -la /opt/homer/homer-assets/.

Schritt 5: Dashboard im Browser öffnen und konfigurieren

Öffne http://<Host-IP>:8080 im Browser. Du siehst die von Homer automatisch generierte Beispielstartseite mit Demo-Kacheln. Jetzt kannst du die Konfiguration an deine Dienste anpassen.

Öffne /opt/homer/homer-assets/config.yml in einem Texteditor. Die Datei ist gut kommentiert; hier ein Minimalbeispiel für einen typischen Homelab-Stack:

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

title: "Mein Homelab"
subtitle: "Dashboard"
# theme: default  # Alternativen: dark, light, auto
# columns: auto   # 1, 2, 3, 4, 6, 12 oder auto

header: true
footer: false

connectivityCheck: true

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"
        tag: "docker"
        url: "http://192.168.1.10:9000"
        target: "_blank"
        # Service-Status-Check per HTTP-HEAD-Request:
        type: "Ping"

Homer unterstützt für Icons entweder lokale Bilddateien (unter homer-assets/icons/ ablegen) oder Font-Awesome-Icons direkt in der YAML (icon: "fas fa-...") – ohne eine einzige Bilddatei. Fertige Icon-Pakete bieten Community-Projekte wie homer-community-themes auf GitHub.

Nachdem du die Datei gespeichert hast, wird die Änderung sofort im Browser übernommen – ohne Container-Neustart. Homer überwacht die Datei und lädt sie automatisch neu (Hot-Reload).

Verifizieren: Lade die Seite im Browser neu (F5). Deine konfigurierten Dienste erscheinen als Kacheln. Wenn du type: "Ping" gesetzt hast, zeigt Homer nach wenigen Sekunden einen farbigen Status-Punkt neben dem Dienst an (grün = erreichbar, rot = nicht erreichbar). Prüfe bei leerem Dashboard oder fehlenden Kacheln die YAML-Syntax – ein Online-YAML-Linter oder yamllint homer-assets/config.yml zeigt Einrückungsfehler.

Schritt 6: Updates und Backup

Homer aktualisierst du mit den Standard-Compose-Befehlen:

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

Docker lädt das neue Image, tauscht den Container aus und startet ihn mit denselben Volumes und Umgebungsvariablen. Deine config.yml und alle Icons im Bind-Mount bleiben dabei vollständig erhalten – das ist der entscheidende Vorteil des Bind-Mount-Ansatzes gegenüber benannten Volumes.

Für einen automatisierten Update-Workflow empfiehlt sich Watchtower für automatische Container-Updates oder die Alternative Diun/WUD aus der Anleitung Docker-Container automatisch aktualisieren nach dem Watchtower-Aus.

Backup: Da Homer vollständig datenbanklos ist, genügt es, das Verzeichnis /opt/homer/homer-assets/ zu sichern. Eine tägliche Kopie der config.yml reicht aus, um den gesamten Zustand wiederherzustellen.

Verifizieren: Nach dem Update zeigt docker compose ps den Container mit aktuellem Status Up. Mit docker inspect homer | grep Image kannst du den neuen Image-Digest ablesen.

Schritt 7: Reverse Proxy und HTTPS (optional)

Für den Zugriff über eine eigene Domain oder aus dem Internet empfiehlt sich ein Reverse Proxy mit TLS. Bei Root-Betrieb (Homer unter /) ist keine besondere Konfiguration an Homer nötig – du zeigst den Proxy einfach auf localhost:8080.

Bei Betrieb unter einem Unterverzeichnis (z. B. https://example.com/homer) musst du in der .env die Variable setzen:

SUBFOLDER=/homer

Danach Container neu starten: docker compose up -d. Ohne diese Variable werden CSS/JS-Assets mit falschen Pfaden geladen (404-Fehler in der Browser-Konsole).

Eine vollständige Reverse-Proxy-Anleitung findest du unter Caddy als Reverse Proxy einrichten: automatisches HTTPS oder Traefik als Docker-Reverse-Proxy.

Verifizieren: curl -I https://homer.example.com liefert HTTP/2 200. Im Browser erscheint das Schloss-Symbol. Alle Kacheln und Icons laden ohne Fehler in der Browser-Konsole (F12 → Network-Tab).

Troubleshooting / Typische Fehler

  1. Container startet, Dashboard bleibt leer: Wahrscheinlich fehlt die config.yml oder sie enthält einen YAML-Syntaxfehler. Prüfe mit docker compose logs homer und validiere die Datei mit yamllint /opt/homer/homer-assets/config.yml. Einrückungsfehler (Tabs statt Leerzeichen) sind die häufigste Ursache.
  2. Error: EACCES: permission denied in den Logs: Das Verzeichnis homer-assets ist für UID 1000 nicht schreibbar. Beheben mit chown -R 1000:1000 /opt/homer/homer-assets auf dem Host, dann docker compose restart homer.
  3. address already in use beim Start: Port 8080 ist auf dem Host bereits belegt. In der .env den Wert von HOMER_PORT auf einen freien Port ändern (z. B. 8081), dann docker compose up -d.
  4. Service-Status-Checks schlagen fehl (Mixed Content): Wenn Homer per HTTPS ausgeliefert wird, aber Dienste nur per HTTP erreichbar sind, blockiert der Browser die Status-Requests. Lösung: Entweder alle Dienste per HTTPS bereitstellen oder in der config.yml connectivityCheck: false setzen.
  5. CSS und JS laden nicht (404 hinter Reverse Proxy): SUBFOLDER-Variable ist nicht gesetzt, obwohl Homer unter einem Unterverzeichnis läuft. In der .env SUBFOLDER=/homer eintragen und Container neu starten.
  6. Kacheln laden nach Config-Änderung nicht neu: Homer lädt config.yml automatisch, aber PWA-Caching im Browser kann die alte Version zeigen. Harter Reload mit Ctrl+Shift+R (Windows/Linux) oder Cmd+Shift+R (macOS) erzwingt das Neuladen.
  7. Homer öffnet sich per file:// nicht korrekt: Homer ist auf einen HTTP-Server angewiesen. Immer den Container nutzen und per http://localhost:PORT aufrufen – niemals index.html direkt im Browser öffnen.

Häufige Fragen

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

Nein. Homer überwacht die config.yml aktiv und lädt die Konfiguration automatisch neu, sobald du die Datei speicherst (Hot-Reload). Du musst weder den Container neu starten noch die Seite manuell aktualisieren – die Änderungen erscheinen innerhalb weniger Sekunden im Browser.

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

Öffne homer-assets/config.yml und ergänze unter services entweder eine neue Gruppe oder ein neues Item mit den Feldern name, url und optional logo, subtitle und tag. Nach dem Speichern erscheint die Kachel sofort im Browser. Für Icons kannst du Font-Awesome-Klassen (icon: "fas fa-server") verwenden, ohne eine Bilddatei ablegen zu müssen.

Wie aktiviere ich den Service-Status-Check?

Füge im Item das Feld type: "Ping" hinzu (für einfache HTTP-Erreichbarkeitsprüfung) oder nutze spezialisierte Typen wie PiHole oder AdGuardHome für echte Statistik-Cards. Homer sendet dann periodisch einen HTTP-HEAD-Request an die url des Eintrags und zeigt einen farbigen Punkt an: grün bedeutet erreichbar, rot nicht erreichbar. Stelle sicher, dass connectivityCheck: true in der Konfiguration gesetzt ist.

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

Docker Hub listet offiziell linux/amd64, linux/arm/v6 und linux/arm/v7. arm64 (Raspberry Pi 4/5, Apple Silicon) erscheint auf Docker Hub als „+1 more" und wird in der Praxis von sehr vielen Nutzern erfolgreich eingesetzt – ist jedoch nicht explizit in der offiziellen Dokumentation aufgeführt. Ein kurzer Testlauf mit docker compose up -d und anschließendem docker compose ps klärt das im Zweifelsfall sofort.

Kann Homer hinter Nginx, Traefik oder Caddy betrieben werden?

Ja, problemlos. Bei Betrieb unter einer eigenen Domain (homer.example.com) ist keine besondere Homer-Konfiguration nötig – der Proxy leitet einfach auf http://homer:8080 weiter. Bei Betrieb unter einem Unterverzeichnis (example.com/homer) muss die Umgebungsvariable SUBFOLDER=/homer in der .env gesetzt werden, damit Homer alle internen Asset-Pfade korrekt auflöst.

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

Drei schnelle Wege: (1) Font-Awesome-Icons direkt in der YAML nutzen (icon: "fas fa-cloud") – keine Bilddatei nötig. (2) Das Community-Projekt homer-community-themes auf GitHub bietet vorgefertigte Asset-Pakete mit hunderten Service-Logos. (3) Für gängige Self-Hosted-Dienste liefern die offiziellen Projektlogos eine hohe Qualität – einfach als PNG unter homer-assets/icons/ ablegen und in der YAML mit logo: "assets/icons/mein-dienst.png" referenzieren.

Fazit

Homer zeigt, dass ein Homelab-Dashboard keine Komplexität braucht: Ein ca. 7 MB großer Container, eine einzige YAML-Datei und du hast eine übersichtliche, schnell ladende Startseite für alle selbst gehosteten Dienste. Der Hot-Reload der Konfiguration, die Multi-Arch-Unterstützung und die Ressourcenfreiheit machen Homer zur ersten Wahl für Einsteiger und für alle, die auf ihrem Server jeden Megabyte RAM schonen wollen. Wer mehr Funktionen benötigt – Widgets, Wetter, Kalender-Integration – sollte sich Homepage als erweitertes Dashboard ansehen; für ein rein statusorientiertes Monitoring-Dashboard bietet sich Gatus an. Homer selbst bleibt unschlagbar, wenn Einfachheit und Geschwindigkeit zählen.

Weiterführende Anleitungen und Quellen

  1. Docker und Docker Compose auf Linux installieren – die Self-Hosting-Grundlage
  2. Watchtower: Docker-Container automatisch aktualisieren
  3. Docker-Container automatisch aktualisieren nach dem Watchtower-Aus: Diun, WUD und Renovate
  4. Traefik als Docker-Reverse-Proxy mit automatischem HTTPS einrichten
  5. Caddy als Reverse Proxy einrichten: Anfänger-Anleitung mit automatischem HTTPS
  6. Homepage auf dem Synology NAS installieren: Dashboard für alle Self-Hosting-Dienste
  7. 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. OpenSSL: Neun Schwachstellen im Sicherheitsrelease vom 9. Juni 2026, darunter Hi
  2. Automatische Sicherheitsupdates unter Debian/Ubuntu mit unattended-upgrades rich
  3. netcup Local Block Storage bestellen, einrichten und unter Linux einbinden