Nextcloud ist die bekannteste selbstgehostete Cloud: Dateien synchronisieren wie mit Dropbox, Kalender und Kontakte wie bei Google oder iCloud, dazu Apps für Notizen, Aufgaben und vieles mehr. Diese Anleitung richtet eine schlanke, stabile Variante mit Docker Compose ein.

Du brauchst:

  • einen Server mit Docker, mindestens 2 GB RAM für Nextcloud
  • Caddy mit HTTPS und eine Adresse wie cloud.meinhomelab.duckdns.org
  • ca. 45 Minuten

Alternative: Das Nextcloud-Projekt bietet mit Nextcloud All-in-One (AIO) auch ein offizielles Komplettpaket an, das Updates und Backups mitbringt. Die Kombination mit einem vorhandenen Reverse Proxy ist dort aber etwas aufwendiger – deshalb hier der klassische Weg.

Schritt 1: Ordner und Compose-Datei

mkdir -p ~/apps/nextcloud && cd ~/apps/nextcloud
nano docker-compose.yml
services:
  db:
    image: mariadb:11
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    environment:
      MYSQL_ROOT_PASSWORD: "BITTE-AENDERN-1"
      MYSQL_PASSWORD: "BITTE-AENDERN-2"
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
    volumes:
      - ./db:/var/lib/mysql

  redis:
    image: redis:alpine
    restart: unless-stopped

  app:
    image: nextcloud:stable
    container_name: nextcloud-app
    restart: unless-stopped
    depends_on:
      - db
      - redis
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: "BITTE-AENDERN-2"
      REDIS_HOST: redis
      NEXTCLOUD_TRUSTED_DOMAINS: "cloud.meinhomelab.duckdns.org"
      OVERWRITEPROTOCOL: "https"
    volumes:
      - ./html:/var/www/html
    networks:
      - default
      - proxy

networks:
  proxy:
    external: true

Beide Passwörter ersetzen – MYSQL_PASSWORD steht zweimal und muss gleich sein. Die Domain an deine anpassen.

Schritt 2: Caddy konfigurieren

nano ~/apps/caddy/Caddyfile
cloud.meinhomelab.duckdns.org {
    redir /.well-known/carddav /remote.php/dav/ 301
    redir /.well-known/caldav /remote.php/dav/ 301
    header Strict-Transport-Security "max-age=31536000;"
    reverse_proxy nextcloud-app:80
}

Die beiden redir-Zeilen sorgen dafür, dass Kalender- und Kontakte-Apps Nextcloud automatisch finden.

Schritt 3: Starten und einrichten

cd ~/apps/nextcloud && docker compose up -d
cd ~/apps/caddy && docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile

Nach ein, zwei Minuten https://cloud.meinhomelab.duckdns.org öffnen:

  1. Admin-Benutzername und Passwort festlegen
  2. Die Datenbank ist dank der Einstellungen schon vorausgefüllt – Installieren
  3. Die vorgeschlagenen Apps kannst du installieren oder überspringen

Schritt 4: Reverse Proxy bekannt machen

Nextcloud muss wissen, dass Anfragen über Caddy kommen. Zuerst das Adressnetz des proxy-Netzwerks herausfinden:

docker network inspect proxy --format '{{ (index .IPAM.Config 0).Subnet }}'

Die Ausgabe (z. B. 172.18.0.0/16) dann eintragen:

docker exec -u www-data nextcloud-app php occ config:system:set trusted_proxies 0 --value="172.18.0.0/16"

Schritt 5: Hintergrundjobs per Cron

Nextcloud erledigt Aufräumarbeiten im Hintergrund. Zuverlässig klappt das per Cron auf dem Server:

crontab -e

Zeile ergänzen:

*/5 * * * * docker exec -u www-data nextcloud-app php -f /var/www/html/cron.php

Dann in Nextcloud unter Verwaltungseinstellungen → Grundeinstellungen → Hintergrund-Aufgaben auf Cron umstellen.

Schritt 6: Systemcheck

Unter Verwaltungseinstellungen → Übersicht prüft Nextcloud die Einrichtung und zeigt Warnungen an. Häufige Hinweise lassen sich mit occ beheben, z. B.:

docker exec -u www-data nextcloud-app php occ maintenance:repair --include-expensive
docker exec -u www-data nextcloud-app php occ db:add-missing-indices
docker exec -u www-data nextcloud-app php occ config:system:set default_phone_region --value="DE"

Nicht jede Warnung ist kritisch – wichtig ist, dass keine Sicherheitswarnungen übrig bleiben.

Schritt 7: Geräte verbinden

Gerät Was Wie
Laptop/PC Dateien Nextcloud Desktop-App, Server-Adresse eintragen, Ordner wählen
Handy Dateien, Fotos Nextcloud-App aus dem App Store / Google Play / F-Droid
Android Kalender, Kontakte DAVx⁵ installieren, mit Nextcloud-Adresse anmelden
iPhone Kalender, Kontakte Einstellungen → Kalender → Accounts → Account hinzufügen → Andere → CalDAV (bzw. CardDAV für Kontakte), Server: deine Nextcloud-Adresse

Tipp: Für Handys und Programme in Nextcloud unter Persönliche Einstellungen → Sicherheit eigene App-Passwörter erzeugen – dann musst du dein Hauptpasswort nirgends speichern.

Updates

cd ~/apps/nextcloud
docker compose pull && docker compose up -d

Wichtig: Nextcloud lässt sich nur eine Hauptversion nach der anderen aktualisieren. Regelmäßig updaten statt monatelang liegen lassen – und vorher ein Backup oder einen Snapshot anlegen.

Backup

Die Ordner html (Programm, Einstellungen, deine Dateien unter html/data) und db (Datenbank) enthalten alles. Am einfachsten sichert die Proxmox-Sicherung die komplette VM.