software

Docker auf dem Heimserver — Einsteiger-Guide 2026

Docker auf dem Heimserver einrichten: Vom ersten Container bis zum automatisierten Setup mit Docker Compose. Praxisnaher Guide für Anfänger 2026.

von Ultrion Redaktion2026-08-075 Min Lesezeit
Werbung (AdSense — In-Article)


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:

  • Keine Abhängigkeits-Konflikte

  • Saubere Deinstallation (Container löschen = fertig)

  • Einfache Updates (neues Image pullen)

  • Portabilität (läuft überall gleich)

  • Isoliert (Sicherheit)
  • Installation

    Linux (Ubuntu/Debian)

    ``bash

    System 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 version

    Falls 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 /volumes

    Bestimmten 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.

    Werbung (AdSense — In-Article Bottom)

    Verwandte Artikel