Homarr mit Docker installieren: Homelab-Dashboard mit Drag-and-Drop und 40+ Integrationen
Homarr bündelt selbst gehostete Dienste in einem Dashboard, das Sie per Drag-and-Drop im Browser konfigurieren, mit über 40 Integrationen und eigener Benutzerverwaltung. Die Anleitung zeigt die Installation mit Docker Compose auf einem Linux-Host, getestet mit Homarr v1.77.
Neue Version verfügbar: homarr 2.0.0. Diese Anleitung wird überarbeitet. Beschrieben ist homarr 1.77.2.
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

Homarr fasst selbst gehostete Dienste wie Sonarr, Radarr, Jellyfin oder Pi-hole auf einer Seite zusammen. Sie konfigurieren es per Drag-and-Drop im Browser statt in YAML-Dateien; über 40 Integrationen zeigen Live-Daten, etwa neue Episoden in Sonarr oder die Download-Warteschlange in qBittorrent. Dazu kommt eine Benutzerverwaltung mit OIDC und LDAP. Diese Anleitung zeigt die Installation mit Docker Compose auf einem Linux-Host oder NAS.
Voraussetzungen
- Docker Engine >= 20.x und Docker Compose Plugin v2 auf dem Host, siehe Docker und Docker Compose auf Linux installieren.
- Linux-Host, VM oder NAS mit Docker (x86_64 oder arm64, auch Raspberry Pi).
- 1 CPU-Kern und mindestens 512 MB freier RAM (im Test belegte Homarr nach dem Start rund 190 MB), dazu etwa 500 MB Speicherplatz für Image und Anwendungsdaten.
- Internetzugang beim ersten Start, damit Docker das Image von
ghcr.ioladen kann. opensslauf dem Host (auf gängigen Linux-Distributionen vorinstalliert).- Zugriff vom Browser auf Port 7575 des Hosts.
- Optional: ein Reverse Proxy für HTTPS (Nginx Proxy Manager, Traefik oder Caddy), da Homarr selbst kein TLS anbietet.
Schritt 1: Projektordner anlegen
Legen Sie einen eigenen Ordner an, etwa /opt/homarr oder ~/homarr.
mkdir -p /opt/homarr
cd /opt/homarrDen Unterordner für die Anwendungsdaten legt Docker beim ersten Start selbst an.
Verifizieren: ls -la /opt/homarr zeigt den leeren Ordner ohne Fehler. Wenn Sie Homarr später mit PUID/PGID (z. B. 1000) betreiben möchten, setzen Sie jetzt die Rechte: mkdir -p /opt/homarr/homarr/appdata && chown -R 1000:1000 /opt/homarr/homarr/appdata.
Schritt 2: SECRET_ENCRYPTION_KEY generieren und .env anlegen
Homarr verschlüsselt mit dem SECRET_ENCRYPTION_KEY alle Zugangsdaten der Integrationen in der SQLite-Datenbank. Erzeugen Sie den Schlüssel einmalig:
openssl rand -hex 32Das Ergebnis ist ein 64-stelliger Hex-String. Speichern Sie ihn sofort in einem Passwortmanager und legen Sie die .env an:
# /opt/homarr/.env
# PFLICHT: 64-stelliger Hex-String (openssl rand -hex 32)
# WARNUNG: Diesen Wert NIEMALS nachträglich ändern!
# Alle gespeicherten Integrations-Zugangsdaten werden mit diesem Schlüssel
# verschlüsselt. Ein Wechsel macht diese Daten unlesbar.
SECRET_ENCRYPTION_KEY=hier_Ihren_generierten_Hex_String_eintragenSchützen Sie die Datei vor dem Zugriff anderer Benutzer:
chmod 600 /opt/homarr/.envVerifizieren: grep SECRET_ENCRYPTION_KEY /opt/homarr/.env | awk -F= '{print length($2)}' liefert 64. Ein kürzerer Wert führt dazu, dass Homarr nicht startet.
Schritt 3: compose.yaml anlegen
Das Image kommt aus der GitHub Container Registry (ghcr.io/homarr-labs/homarr). Ältere Anleitungen nennen noch ghcr.io/ajnart/homarr oder linuxserver/homarr; beide gehören zur Version 0.x vor dem Neuaufbau zu 1.0 und werden nicht mehr gepflegt.
# /opt/homarr/compose.yaml
services:
homarr:
container_name: homarr
image: ghcr.io/homarr-labs/homarr:latest
restart: unless-stopped
ports:
- "7575:7575"
volumes:
# Pflicht: persistente Anwendungsdaten (SQLite-DB, Konfiguration, Logs)
- ./homarr/appdata:/appdata
# Optional: Docker-Socket für die Container-Integration (Starten/Stoppen,
# Logs, Statistik-Widget). Gewährt volle Kontrolle über Docker!
# Sicherere Alternative: Tecnativa/docker-socket-proxy vorschalten.
# - /var/run/docker.sock:/var/run/docker.sock
environment:
# Pflicht: aus der .env-Datei lesen
- SECRET_ENCRYPTION_KEY=${SECRET_ENCRYPTION_KEY}
# Optional: Betrieb ohne root (Rechte auf appdata vorher setzen!)
# - PUID=1000
# - PGID=1000
# Optional: Log-Level (debug, info, warn, error), Standard: info
# - LOG_LEVEL=info
# Optional: DNS-Caching bei Netzwerkproblemen abschalten
# - ENABLE_DNS_CACHING=false
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:7575"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s- Docker-Socket: Die Zeile ist bewusst auskommentiert. Ohne Socket läuft Homarr als Dashboard ohne Container-Steuerung. Mit Socket erhält der Container faktisch Root-Zugriff auf den Docker-Daemon. Aktivieren Sie ihn nur, wenn Sie die Container-Integration brauchen (Schritt 6).
- SQLite läuft intern: Ein eigener Datenbank-Container ist nicht nötig. Die Datenbank liegt unter
./homarr/appdata/db/db.sqlite. - Redis läuft intern: Ein externer Redis ist nur bei mehreren Instanzen oder Kubernetes nötig.
Verifizieren: docker compose -f /opt/homarr/compose.yaml config gibt die aufgelöste Konfiguration ohne Fehler aus. Unter environment steht der Wert von SECRET_ENCRYPTION_KEY aus der .env.
Schritt 4: Container starten
Starten Sie Homarr im Projektordner im Hintergrund:
cd /opt/homarr
docker compose up -dDocker lädt das Image von ghcr.io (im Test rund 130 MB) und startet den Container. Beim ersten Start legt Homarr die SQLite-Datenbank an und startet den internen Redis; das dauert etwa 20 bis 30 Sekunden.
# Container-Status und Health-Check
docker compose ps
# Live-Logs verfolgen (Strg+C zum Beenden)
docker compose logs -f homarrErwartete Ausgabe von docker compose ps nach dem Start:
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
homarr ghcr.io/homarr-labs/homarr:latest ... homarr 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:7575->7575/tcpIn den Logs erscheinen unter anderem Ready to accept connections (interner Redis) und WebSocket Server listening. Zeilen mit error dürfen nicht auftauchen.
Verifizieren: curl -sI http://localhost:7575 liefert beim ersten Start HTTP/1.1 307 Temporary Redirect mit location: /init (Einrichtungsassistent), docker compose ps zeigt nach etwa einer Minute (healthy). Zeigen die Logs SECRET_ENCRYPTION_KEY is required, liegt die .env nicht neben der compose.yaml oder der Schlüssel hat nicht genau 64 Hex-Zeichen.
Schritt 5: Ersteinrichtung im Browser
Öffnen Sie http://<HOST-IP>:7575. Beim ersten Aufruf leitet Homarr auf den Einrichtungsassistenten unter /init weiter:
- Administratorkonto anlegen: Benutzername und Passwort für den ersten Administrator festlegen. Dieses Konto hat vollen Zugriff auf alle Einstellungen.
- Dashboard-Name: erscheint im Browser-Tab und als Seitentitel.
- Erste App hinzufügen (optional): direkt im Assistenten oder später über „Apps“ im Einstellungsmenü.
Über das Stift-Symbol oben rechts aktivieren Sie den Bearbeitungsmodus und platzieren Widgets per Drag-and-Drop. Integrationen zu Sonarr, Radarr, Jellyfin und Co. richten Sie unter Einstellungen → Integrationen mit URL und API-Schlüssel der jeweiligen App ein.
Verifizieren: Sie melden sich mit dem neuen Administratorkonto an und sehen das Dashboard. Unter Einstellungen → Über Homarr steht die Version (Stand September 2026: v1.77.2).
Schritt 6: Docker-Socket-Integration einrichten (optional)
Für die Container-Integration entfernen Sie in der compose.yaml das Kommentarzeichen vor - /var/run/docker.sock:/var/run/docker.sock und führen docker compose up -d erneut aus. Danach zeigt das Container-Widget laufende Container mit CPU- und RAM-Verbrauch; Administratoren können Container aus dem Dashboard starten und stoppen.
In sensibleren Umgebungen schalten Sie einen Socket Proxy dazwischen. Die Anleitung Docker Compose absichern: Secrets, Healthchecks, Non-Root und Read-Only erklärt, wie Sie das Risiko durch Socket-Mounts begrenzen.
Verifizieren: docker compose exec homarr ls -l /var/run/docker.sock zeigt den Socket im Container. In Homarr erscheint unter Einstellungen → Integrationen „Docker“ mit grünem Status. Gelb oder Rot deutet auf fehlende Rechte am Socket hin (siehe Troubleshooting).
Schritt 7: HTTPS mit Reverse Proxy einrichten (empfohlen)
Homarr liefert kein HTTPS. Für Zugriff aus dem Internet oder Anmeldung per OIDC ist HTTPS Pflicht. Ein Reverse Proxy terminiert TLS und leitet an Port 7575 weiter:
| Proxy | Stärke | Anleitung |
|---|---|---|
| Nginx Proxy Manager | Einsteigerfreundliche Web-UI, Let's Encrypt per Klick | NPM auf Synology einrichten |
| Traefik | Docker-native, Labels-basiert, automatisches HTTPS | Traefik als Docker-Reverse-Proxy |
| Caddy | Minimale Konfiguration, automatisches HTTPS | Caddy als Reverse Proxy |
Bei OIDC-Anmeldung (z. B. Authentik oder Keycloak) muss der Proxy die Header X-Forwarded-For und X-Forwarded-Proto setzen, damit Homarr die Weiterleitungen korrekt auf HTTPS berechnet.
Verifizieren: curl -I https://homarr.ihre-domain.de liefert HTTP/2 200 oder eine Weiterleitung auf die Anmeldeseite. Der Browser akzeptiert das Zertifikat.
Schritt 8: Update und Backup
Homarr wird aktiv gepflegt (Stand September 2026: v1.77.2, Apache-2.0-Lizenz). Ein Update läuft über Docker Compose:
cd /opt/homarr
docker compose pull
docker compose up -d
# Alte Homarr-Images anzeigen und gezielt per ID entfernen
# (docker image prune würde alle ungenutzten Images löschen, nicht nur Homarr)
docker image ls ghcr.io/homarr-labs/homarrAutomatische Updates sind mit Watchtower möglich; der SECRET_ENCRYPTION_KEY bleibt dabei unverändert.
Zum Backup gehören:
- Die Datei
/opt/homarr/.envmit demSECRET_ENCRYPTION_KEY. Ohne sie sind gesicherte Zugangsdaten wertlos. - Den Ordner
/opt/homarr/homarr/appdata/mit SQLite-Datenbank, Konfiguration, Logs und Icon-Cache.
Zur Wiederherstellung legen Sie beides in denselben Pfaden ab und starten mit docker compose up -d.
Verifizieren: Nach dem Update zeigt docker compose ps den Container als (healthy), unter Einstellungen → Über Homarr steht die neue Version, und Dashboards sowie Integrationen sind unverändert vorhanden.
Troubleshooting / Typische Fehler
- Logs zeigen „SECRET_ENCRYPTION_KEY is required“: Die Variable fehlt oder ist leer. Im Test lief der Container dann zwar weiter, Homarr war aber nicht nutzbar; die Meldung schlägt einen zufälligen Schlüssel vor. Prüfen Sie mit
ls -la /opt/homarr/.env, ob die Datei neben dercompose.yamlliegt, und ob der Wert genau 64 Hex-Zeichen ohne Leerzeichen hat. - Zugangsdaten der Integrationen nach Neuaufbau verloren: Der
SECRET_ENCRYPTION_KEYwurde neu erzeugt. Stellen Sie die gesicherte.envwieder her. - Konfiguration nach Neustart verschwunden: Das Volume
./homarr/appdata:/appdataist nicht korrekt eingebunden. Der relative Pfad bezieht sich auf den Ordner dercompose.yaml, also/opt/homarr/homarr/appdata. Prüfen Sie mitdocker compose exec homarr ls /appdata; erwartet werden die Ordnerdb,redisundtrusted-certificates. - Docker-Socket meldet „permission denied“: Der Container-Prozess (PUID/PGID) darf nicht auf
/var/run/docker.sockzugreifen. Entweder entfernen Sie PUID/PGID (Container läuft als root, Standard), passen die Rechte am Socket gemäß Homarr-Dokumentation an oder schalten einen Socket Proxy vor. - Rechtefehler beim Start mit PUID=1000: Das Host-Verzeichnis gehört root. Führen Sie vor dem Start
chown -R 1000:1000 /opt/homarr/homarr/appdataaus. - Integrationen liefern keine Daten: Homarr erreicht andere Container nicht über deren Namen, wenn sie in einem anderen Docker-Netzwerk liegen. Binden Sie die Container in ein gemeinsames Netzwerk ein oder verwenden Sie die Host-IP.
docker network inspectzeigt die Zuordnung. - „Internal Server Error“ bei einzelnen Integrationen: Das standardmäßig aktive DNS-Caching verursacht in manchen Netzen Probleme (GitHub-Issue #4006). Setzen Sie
ENABLE_DNS_CACHING=falseund starten Sie den Container neu. - Umstieg von ajnart/homarr oder linuxserver/homarr: Version 1.0 war ein vollständiger Neuaufbau, alte Konfigurationen sind nicht kompatibel. Betreiben Sie beide parallel auf verschiedenen Ports, bis die Konfiguration neu angelegt ist.
Häufige Fragen
Brauche ich eine externe Datenbank (PostgreSQL) oder Redis?
Für eine einzelne Instanz nicht. SQLite liegt unter /appdata/db/db.sqlite, Redis läuft im Container. MySQL, PostgreSQL und externer Redis sind für Hochverfügbarkeit oder Kubernetes gedacht.
Wie setze ich den SECRET_ENCRYPTION_KEY sicher?
Erzeugen Sie ihn einmalig mit openssl rand -hex 32, tragen Sie ihn in die .env ein und referenzieren Sie ihn in der compose.yaml mit ${SECRET_ENCRYPTION_KEY}. Alternativ liest Homarr mit dem Suffix _FILE den Wert aus einer Datei, etwa einem Docker Secret. Sichern Sie den Schlüssel im Passwortmanager.
Ist HTTPS möglich, und wie richte ich es ein?
Ja, über einen vorgelagerten Reverse Proxy (Schritt 7); Homarr selbst bleibt auf HTTP.
Kann Homarr meine laufenden Docker-Container anzeigen und steuern?
Ja, wenn der Docker-Socket eingebunden ist (Schritt 6). Das Container-Widget steht nur Administratoren zur Verfügung. Wegen des weitreichenden Zugriffs ist ein Socket Proxy die sicherere Wahl.
Wie aktualisiere ich Homarr auf die neueste Version?
Mit docker compose pull und docker compose up -d im Projektordner (Schritt 8). Das appdata-Verzeichnis bleibt erhalten. Für den Produktivbetrieb empfiehlt sich ein fester Versions-Tag statt latest, damit Updates nur bewusst erfolgen.
Wie unterscheidet sich Homarr von Homepage oder Glance?
Homepage und Glance konfigurieren Sie über YAML-Dateien, Homarr im Browser; Homarr bringt mehr Integrationen und eine Benutzerverwaltung mit und braucht etwas mehr Ressourcen. Wer YAML bevorzugt oder möglichst schlank bleiben will, greift zu Homepage oder Glance.
Was passiert bei einer vollständigen Deinstallation?
Führen Sie docker compose down aus, löschen Sie den Projektordner mit rm -rf /opt/homarr und entfernen Sie das Image mit docker image rm ghcr.io/homarr-labs/homarr:latest.
Fazit
Homarr läuft als einzelner Container ohne externe Datenbank und wird vollständig im Browser konfiguriert. Entscheidend für den Betrieb ist der SECRET_ENCRYPTION_KEY: Sichern Sie die .env genauso sorgfältig wie das appdata-Verzeichnis. Den Docker-Socket binden Sie nur ein, wenn Sie die Container-Steuerung wirklich brauchen. Images prüfen Sie regelmäßig auf Schwachstellen, etwa mit Trivy.
Weiterführende Anleitungen und Quellen
- Docker und Docker Compose auf Linux installieren (Ubuntu/Debian): Grundlage für alle Docker-Projekte
- Docker Compose absichern: Secrets, Healthchecks, Non-Root und Read-Only: Socket Proxy und weitere Maßnahmen
- Traefik als Docker-Reverse-Proxy mit automatischem HTTPS
- Watchtower mit Docker: Container automatisch aktualisieren
- Docker-Images auf Schwachstellen scannen mit Trivy
- Beszel Server Monitoring mit Docker einrichten: Ergänzung für Server-Monitoring
Offizielle Quellen: Homarr Dokumentation: Docker-Installation | Homarr Dokumentation: Umgebungsvariablen | GitHub: homarr-labs/homarr


