Nextcloud mit Docker Compose: Storage, DB und Reverse Proxy richtig setzen

Nextcloud ist eine beliebte Open-Source-Lösung für private Cloud-Speicherung, die einfach in Container-Umgebungen betrieben werden kann. Mit Docker Compose lassen sich Nextcloud, Datenbank und Reverse Proxy sauber orchestrieren, inklusive persistenter Speicher, sicherer Passwörter und optimierter Netzwerke. Dieses Tutorial zeigt praxisnah, wie ein stabiler, updatefähiger Nextcloud-Stack aufgebaut wird.

Grundkomponenten eines Nextcloud-Stacks

Ein typischer Nextcloud-Stack besteht aus mehreren Services:

  • Nextcloud: Anwendung mit Webinterface und API, läuft auf PHP-FPM oder Apache
  • Datenbank: MySQL oder MariaDB für persistente Speicherung
  • Reverse Proxy: Nginx oder Traefik für SSL, Weiterleitung und Load Balancing
  • Volumes: Persistente Speicherung für Dateien, Datenbank und Konfigurationen

Volumes für Persistenz

Um Datenverlust zu verhindern, müssen Uploads, Datenbankinhalte und Konfigurationsdateien persistent gespeichert werden.

volumes:
  nextcloud_data:
  db_data:
  nginx_conf:
  • nextcloud_data für Benutzerdateien
  • db_data für Datenbankinhalte
  • nginx_conf für benutzerdefinierte Nginx-Konfiguration
  • Volumes bleiben bestehen, auch wenn Container neu erstellt oder aktualisiert werden

Netzwerke für interne Kommunikation

Separate Netzwerke erhöhen die Sicherheit, da nur autorisierte Services miteinander kommunizieren.

networks:
  nextcloud_frontend:
  nextcloud_backend:
  • nextcloud_frontend verbindet Nextcloud und Reverse Proxy
  • nextcloud_backend verbindet Nextcloud und Datenbank
  • Externe Zugriffe erfolgen nur über den Proxy

Beispiel: docker-compose.yml für Nextcloud

version: '3.8'

services:
nextcloud:
image: nextcloud:26-fpm
depends_on:
- db
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD_FILE: /run/secrets/db_password
volumes:
- nextcloud_data:/var/www/html
networks:
- nextcloud_frontend
- nextcloud_backend
secrets:
- db_password

db:
image: mariadb:11
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD_FILE: /run/secrets/db_password
volumes:
- db_data:/var/lib/mysql
networks:
- nextcloud_backend
secrets:
- db_root_password
- db_password

nginx:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- nginx_conf:/etc/nginx/conf.d
- nextcloud_data:/var/www/html:ro
networks:
- nextcloud_frontend
depends_on:
- nextcloud

secrets:
db_root_password:
file: ./db_root_password.txt
db_password:
file: ./db_password.txt

volumes:
nextcloud_data:
db_data:
nginx_conf:

networks:
nextcloud_frontend:
nextcloud_backend:

Erklärungen zur Compose-Datei

  • Nextcloud: Läuft als PHP-FPM Container, nutzt Secrets für Datenbankpasswörter, greift auf Nextcloud-Volume zu
  • Datenbank: MariaDB Container, persistente Speicherung im Volume db_data, Secrets für Passwörter
  • Nginx: Reverse Proxy, Ports 80 und 443 gemappt, liest Dateien aus Nextcloud-Volume nur lesend
  • Volumes: Persistente Speicherung der Anwendung, Datenbank und Konfiguration
  • Netzwerke: Frontend- und Backend-Trennung für Sicherheit und klare Service-Kommunikation
  • Secrets: Sensible Daten wie Passwörter werden nicht im Klartext gespeichert

Start und Verwaltung des Nextcloud-Stacks

Starten Sie den gesamten Stack mit einem Befehl:

docker-compose up -d

Zum Stoppen und Entfernen aller Container, Netzwerke und Volumes:

docker-compose down -v

Best Practices

  • Persistente Volumes für Nextcloud-Dateien und Datenbank verwenden
  • Secrets für sensible Daten einsetzen, keine Klartext-Passwörter
  • Separate Netzwerke für Frontend und Backend definieren
  • Nginx oder Traefik als Reverse Proxy einsetzen für SSL und Weiterleitungen
  • CI/CD-Pipelines für automatisierte Updates und Deployments einrichten
  • Regelmäßige Backups der Volumes und Secrets
  • Monitoring und Logging einrichten, um Zugriffe und Fehler zu überwachen
  • Versionierte Images verwenden für einfache Rollbacks

Praxisbeispiele

Nextcloud starten

docker-compose up -d

Logs überwachen

docker-compose logs -f nextcloud
docker-compose logs -f db
docker-compose logs -f nginx

Rollback auf vorherige Version

docker service update --image nextcloud:25-fpm nextcloud_service

Updatefähigkeit

Durch versionierte Docker Images kann Nextcloud unkompliziert aktualisiert werden. Persistente Volumes und Secrets bleiben unverändert, sodass Dateien, Konfigurationen und Datenbankinhalte erhalten bleiben.

docker-compose pull
docker-compose up -d

Zusammenfassung

Ein Nextcloud-Stack mit Docker Compose kann schnell, sauber und updatefähig betrieben werden. Persistente Volumes, Secrets für sensible Daten und getrennte Netzwerke sorgen für Sicherheit, Wartbarkeit und Stabilität. Best Practices wie Reverse Proxy, CI/CD-Integration, Backups und regelmäßige Updates gewährleisten einen zuverlässigen Betrieb in Entwicklungs-, Test- und Produktionsumgebungen.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles