Wer heute Services im eigenen Heimnetzwerk betreiben möchte – sei es ein Dokumentenmanagement-System, ein eigener Git-Server oder eine Analytics-Plattform –, kommt an Containerisierung nicht mehr vorbei. Die Zeiten, in denen man für jeden Dienst eine eigene virtuelle Maschine (VM) aufgesetzt oder das Host-System mit unzähligen Abhängigkeiten zugemüllt hat, sind vorbei.
Docker und Docker Compose eignen sich dafür hervorragend im Homelab. In diesem Guide richten wir Docker auf einem Linux-System (Debian/Ubuntu) sauber, sicher und nach aktuellen Best Practices ein.
Warum Docker Compose statt nackter Docker-Befehle?
Man kann Container über ellenlange docker run-Befehle in der CLI starten. Das Problem: Wer merkt sich nach sechs Monaten noch die genauen Environment-Variablen, Port-Freigaben und Volume-Mounts?
Docker Compose löst dieses Problem. Hier wird die gesamte Konfiguration in einer einzigen, übersichtlichen Textdatei (docker-compose.yml) im YAML-Format deklariert. Ein einfacher Befehl genügt, und der gesamte Stack läuft – reproduzierbar und updatesicher.
Schritt 1: Das System vorbereiten
Bevor wir Docker installieren, bringen wir das System auf den neuesten Stand und installieren ein paar notwendige Werkzeuge, um Repositories über HTTPS zu nutzen.
sudo apt update && sudo apt upgrade -y
sudo apt install -y ca-certificates curl gnupg lsb-releaseSchritt 2: Das offizielle Docker-Repository hinzufügen
Wir nutzen nicht die (oft veralteten) Pakete aus den Standard-Linux-Repositories, sondern binden die offizielle Quelle von Docker ein. So erhalten wir immer die neuesten Sicherheitsupdates.
Zuerst fügen wir den offiziellen GPG-Schlüssel von Docker hinzu:
sudo folder -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg(Hinweis: Falls du Ubuntu nutzt, ersetze im Pfad debian durch ubuntu).
Jetzt richten wir das Repository ein:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.dot/docker.list > /dev/nullSchritt 3: Docker Engine und Compose installieren
Nachdem die Paketquellen aktualisiert wurden, installieren wir die Docker Engine sowie das moderne docker-compose-plugin (welches das alte, separate docker-compose ersetzt).
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginUm zu überprüfen, ob alles erfolgreich war, rufen wir die Versionen ab:
docker --version
docker compose versionSchritt 4: Docker ohne Root-Rechte ausführen (Optional aber empfohlen)
Standardmäßig benötigt der docker-Befehl Root-Rechte (sudo). Um deinen User der Docker-Gruppe hinzuzufügen und die Bedienung im Alltag komfortabler zu machen, führst du folgende Befehle aus:
sudo usermod -aG docker $USERWichtig: Damit diese Änderung greift, musst du dich einmal von der SSH-Sitzung abmelden und neu einloggen.
Der erste Test: Ein Docker-Compose-Beitrag
Um zu sehen, wie einfach das Management jetzt ist, erstellen wir einen Test-Ordner und starten einen minimalistischen Webserver (Nginx) via Compose.
Ordner anlegen und hineinwechseln
mkdir -p ~/homelab/test-webserver && cd $_Die Konfigurationsdatei anlegen
nano docker-compose.ymlFolgenden Inhalt einfügen
services:
webserver:
image: nginx:latest
container_name: test_nginx
ports:
- "8080:80"
restart: unless-stoppedSpeichere die Datei (in Nano: Strg+O, Enter, Strg+X).
Jetzt starten wir den Container im Hintergrund (detached mode):
docker compose up -dErgebnis: Wenn du nun im Browser die IP-Adresse deines Servers mit dem Port 8080 aufrufst (z. B. [http://192.168.178.50:8080](http://192.168.178.50:8080)), siehst du die „Welcome to nginx!“-Seite. Dein Docker-Setup läuft perfekt.
Fazit & Ausblick
Mit diesem Setup hast du das Fundament für dein Homelab gelegt. Egal ob Reverse Proxy (wie Traefik oder Nginx Proxy Manager), Datenbanken oder komplexe Applikations-Stacks: Alles lässt sich ab jetzt nach genau diesem Prinzip in wenigen Sekunden ausrollen.
Im nächsten Artikel schauen wir uns an, wie wir diese Container-Landschaft mit einem Dashboard übersichtlich visualisieren.