Fast jede Selfhosting-Anwendung – ob Passwort-Manager, Foto-Verwaltung oder Mediaserver – wird heute als Docker-Container angeboten. Ein Container enthält die Anwendung samt allem, was sie braucht. Du musst also nichts mühsam zusammenbauen, sondern beschreibst nur, welcher Container wie laufen soll.
Du brauchst:
- einen Debian-Server – in Proxmox am besten als VM
- einen Benutzer mit
sudo-Rechten und eine SSH-Verbindung - ca. 15 Minuten
Schritt 1: Offizielle Docker-Quelle einrichten
Debian bringt zwar ein eigenes Docker-Paket mit, das ist aber oft veraltet. Wir nutzen die offizielle Paketquelle von Docker. Die Befehle nacheinander ausführen:
sudo apt update
sudo apt install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
Dann die Paketquelle hinzufügen (ein einziger, langer Befehl):
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Schritt 2: Docker installieren
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Schritt 3: Testen
sudo docker run hello-world
Erscheint "Hello from Docker!", läuft alles.
Schritt 4: Docker ohne sudo nutzen (optional)
sudo usermod -aG docker $USER
Danach einmal ab- und wieder anmelden. Gut zu wissen: Mitglieder der Gruppe docker haben praktisch Admin-Rechte auf dem Server – nur vertrauenswürdige Benutzer hinzufügen.
Schritt 5: Docker Compose verstehen
Statt lange Befehle zu tippen, beschreibst du Container in einer Datei namens docker-compose.yml. Für jede Anwendung legst du einen eigenen Ordner an:
mkdir -p ~/apps/whoami && cd ~/apps/whoami
nano docker-compose.yml
Inhalt – ein winziger Test-Webserver:
services:
whoami:
image: traefik/whoami
restart: unless-stopped
ports:
- "8000:80"
Was bedeutet das?
| Zeile | Bedeutung |
|---|---|
image |
welches fertige Paket von Docker Hub geladen wird |
restart: unless-stopped |
startet nach Absturz oder Neustart automatisch wieder |
ports: "8000:80" |
Port 8000 des Servers zeigt auf Port 80 im Container |
Achtung, Einrückung: YAML-Dateien sind pingelig. Immer Leerzeichen verwenden (keine Tabs) und sauber untereinander einrücken.
Schritt 6: Die wichtigsten Compose-Befehle
Immer im Ordner mit der docker-compose.yml ausführen:
docker compose up -d # starten (im Hintergrund)
docker compose ps # läuft alles?
docker compose logs -f # Logs live ansehen (Strg+C beendet)
docker compose pull # neue Version herunterladen …
docker compose up -d # … und damit neu starten
docker compose down # stoppen und entfernen
Starte den Test mit docker compose up -d und öffne im Browser http://192.168.50.30:8000 (deine Server-IP) – der Container antwortet mit ein paar Infos über deine Anfrage.
Ordnung halten
- Eine Anwendung = ein Ordner unter
~/apps/, darindocker-compose.ymlund die Daten der Anwendung - Alte, ungenutzte Images gelegentlich aufräumen:
docker image prune - Daten liegen in den Ordnern, die du per
volumeseinbindest – die gehören ins Backup