Der perfekte Start ins Homelab: Docker & Docker Compose richtig aufsetzen

Verfasst von

in

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-release

Schritt 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/null

Schritt 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-plugin

Um zu überprüfen, ob alles erfolgreich war, rufen wir die Versionen ab:

docker --version
docker compose version

Schritt 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 $USER

Wichtig: 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.yml

Folgenden Inhalt einfügen

services:
  webserver:
    image: nginx:latest
    container_name: test_nginx
    ports:
      - "8080:80"
    restart: unless-stopped

Speichere die Datei (in Nano: Strg+O, Enter, Strg+X).

Jetzt starten wir den Container im Hintergrund (detached mode):

docker compose up -d

Ergebnis: 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.