Docker auf dem Heimserver — Einsteiger-Guide 2026
Docker hat die Art, wie wir Software betreiben, revolutioniert. Statt komplexe Abhängigkeiten manuell zu installieren, packen wir alles in Container, die überall gleich laufen. Auf dem Heimserver bedeutet das: Nextcloud, Plex, Pi-Hole, Home Assistant — alles mit einem Befehl installiert und aktualisiert.
Was ist Docker?
Docker ist eine Container-Plattform. Ein Container ist ein eigenständiges, leichtgewichtiges Paket, das eine Software samt aller Abhängigkeiten enthält. Container teilen sich den Kernel des Host-Systems, sind aber voneinander isoliert.
Vorteile gegenüber klassischer Installation:
Installation
Linux (Ubuntu/Debian)
``bashSystem aktualisieren
sudo apt update && sudo apt upgrade -y
Docker installieren (offizielles Skript)
curl -fsSL https://get.docker.com | sh
Benutzer zur docker-Gruppe hinzufügen
sudo usermod -aG docker $USER
Abmelden und wieder anmelden, dann testen:
docker --version
docker run hello-world
`
Docker Compose installieren
`bash
Docker Compose Plugin ist in neueren Versionen enthalten
docker compose versionFalls nicht:
sudo apt install docker-compose-plugin
`Die wichtigsten Docker-Befehle
| Befehl | Funktion |
|--------|----------|
|
docker run image | Startet einen Container |
| docker ps | Zeigt laufende Container |
| docker ps -a | Zeigt alle Container (auch gestoppte) |
| docker images | Listet heruntergeladene Images auf |
| docker stop name | Stoppt einen Container |
| docker start name | Startet einen gestoppten Container |
| docker rm name | Entfernt einen Container |
| docker logs name | Zeigt Logs eines Containers |
| docker exec -it name bash | Öffnet eine Shell im Container |
| docker compose up -d | Startet alle Services aus docker-compose.yml |
| docker compose down | Stoppt und entfernt alle Services |Erster Container: Pi-Hole
Pi-Hole ist ein Netzwerkweiter-DNS-Sinkhole — es blockiert Werbung auf Netzwerkebene.
`bash
docker run -d \
--name pihole \
-p 53:53/tcp \
-p 53:53/udp \
-p 80:80 \
-e TZ="Europe/Berlin" \
-v pihole_data:/etc/pihole \
-v dnsmasq_data:/etc/dnsmasq.d \
--restart=unless-stopped \
pihole/pihole:latest
`Danach erreichen Sie Pi-Hole unter
http://server-ip/admin. Standard-Passwort beim ersten Start in den Logs mit docker logs pihole | grep password.Docker Compose: Der bessere Weg
Für mehrere Container ist Docker Compose die richtige Wahl. Sie definieren alle Services in einer
docker-compose.yml:`yaml
version: "3.9"services:
pihole:
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80"
environment:
TZ: "Europe/Berlin"
volumes:
- pihole_data:/etc/pihole
- dnsmasq_data:/etc/dnsmasq.d
restart: unless-stopped
nextcloud:
image: nextcloud:latest
ports:
- "8080:80"
volumes:
- nextcloud_data:/var/www/html
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: sicheres_passwort
depends_on:
- db
restart: unless-stopped
db:
image: mariadb:10
environment:
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: sicheres_passwort
MYSQL_ROOT_PASSWORD: root_passwort
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
volumes:
pihole_data:
dnsmasq_data:
nextcloud_data:
db_data:
`Starten mit:
`bash
docker compose up -d
`Empfohlene Container für den Heimserver
Media Management
Jellyfin — Media Server (kostenlos)
Plex — Media Server (Premium verfügbar)
Sonarr/Radarr — Serien/Film-Verwaltung Smart Home
Home Assistant — Smart Home Zentrale
Mosquitto — MQTT Broker
Zigbee2MQTT — Zigbee-Coordinator ohne Cloud Netzwerk
Pi-Hole — DNS-basierter Adblocker
AdGuard Home — Alternative zu Pi-Hole
WireGuard — VPN-Server
Nginx Proxy Manager — Reverse Proxy mit UI Productivity
Nextcloud — Cloud-Storage und mehr
Bitwarden Vaultwarden — Passwort-Manager
Paperless-ngx — Dokumentenverwaltung Monitoring
Uptime Kuma — Uptime-Monitoring
Grafana + Prometheus — Metriken und Dashboards
Portainer — Docker-Verwaltung mit UI Daten persistent machen: Volumes
Container sind vergänglich — wenn Sie einen Container löschen, sind die Daten weg. Volumes lösen dieses Problem:
`yaml
volumes:
# Named Volume (von Docker verwaltet)
- nextcloud_data:/var/www/html
# Bind Mount (Verzeichnis auf dem Host)
- /mnt/ssd-fast/docker/nextcloud:/var/www/html
`Best Practice: Verwenden Sie Bind Mounts für wichtige Daten, die Sie auch außerhalb von Docker sehen wollen (z.B. für Backups).
Backup-Strategie
`bash
Alle Volumes sichern
docker run --rm -v $(docker volume ls -q):/volumes -v /backup:/backup alpine \
tar czf /backup/docker-volumes-$(date +%Y%m%d).tar.gz /volumesBestimmten Container sichern
docker run --rm -v nextcloud_data:/data -v /backup:/backup alpine \
tar czf /backup/nextcloud-$(date +%Y%m%d).tar.gz /data
`Automatisieren mit einem Cronjob:
`bash
0 2 * * * docker run --rm -v nextcloud_data:/data -v /backup:/backup alpine tar czf /backup/nextcloud-$(date +\%Y\%m\%d).tar.gz /data
`FAQ
Wie viel RAM braucht Docker?
Docker selbst braucht minimal Ressourcen (~100 MB). Jeder Container benötigt seinen eigenen RAM. Ein Heimserver mit 16 GB RAM kann problemlos 15-20 Container betreiben.Brauche ich Docker Compose?
Für mehr als einen Container: ja. Es macht das Management wesentlich einfacher und reproduzierbar.Wo speichert Docker seine Daten?
Images: /var/lib/docker/
Named Volumes: /var/lib/docker/volumes/
Konfiguration: /etc/docker/`Ist Docker sicher?
Container sind isoliert, aber teilen sich den Kernel. Für mehr Sicherheit: Docker Bench Security prüfen oder Podman (rootless) verwenden.
Fazit
Docker ist die beste Möglichkeit, einen Heimserver zu betreiben. Die Lernkurve ist flach — nach einer Stunde haben Sie Ihren ersten Container laufen. Mit Docker Compose verwalten Sie komplexe Setups mit einer Datei. Die riesige Auswahl an vorgefertigten Containern macht Self-Hosting 2026 so einfach wie nie zuvor.