Geltungsbereich: Allgemeine Vorlage – passe die Platzhalter in
<>an und entferne irrelevante Abschnitte.
Sichere, nachvollziehbare Updates (Minor & Major), regelmäßige Wartung, schnelle Wiederherstellung.
Annahmen
- Orchestrierung via Docker / Docker Compose (oder Portainer Stacks).
- Reverse Proxy (Traefik, Caddy, Nginx Proxy) übernimmt TLS/HTTP.
- Datenbank: MariaDB oder PostgreSQL.
- Cache: Redis empfohlen.
- Hintergrundjobs per Cron-Container oder System-Cron/Webcron.
Dies ist keine Installationsanleitung; ein lauffähiger Stack wird vorausgesetzt.
Services (typisch):
nextcloud (Web/App)db (MariaDB/PostgreSQL)redis (optional, empfohlen)cron (falls separat)proxy / loadbalancer (extern)Wichtige Volumes (Platzhalter anpassen):
<NC_DATA_VOLUME> (z. B. /var/lib/docker/volumes/nextcloud_data/_data)<NC_CONFIG_VOLUME> (z. B. ./nextcloud/config)<NC_HTML_VOLUME> (z. B. ./nextcloud/html)<DB_VOLUME>Pflicht
Vor jedem Major-Update, sowie regelmäßig automatisiert. Backups extern/offsite/immutable ablegen.
data/ (Nextcloud-Datenverzeichnis)config/ (inkl. config.php)theming/, apps/ (falls außerhalb des Containers)Maintenance-Mode ein/aus
# ein
docker exec -u www-data <NC_CONTAINER> php occ maintenance:mode --on
# aus
docker exec -u www-data <NC_CONTAINER> php occ maintenance:mode --off
MariaDB Dump
docker exec <DB_CONTAINER> sh -c "mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE --single-transaction --quick --lock-tables=false" \
> "/backup/nextcloud_db_$(date +%F_%H%M).sql"
PostgreSQL Dump
docker exec <DB_CONTAINER> sh -c "pg_dump -U $POSTGRES_USER $POSTGRES_DB" \
> "/backup/nextcloud_db_$(date +%F_%H%M).sql"
Daten/Config archivieren
tar -C <NC_DATA_PARENT> -czf "/backup/nc_data_$(date +%F_%H%M).tgz" <DATA_DIR_NAME>
tar -C <NC_CONFIG_PARENT> -czf "/backup/nc_config_$(date +%F_%H%M).tgz" <CONFIG_DIR_NAME>
occ maintenance:mode --off → Funktion testen.30.0.x → 30.0.y): per Watchtower oder manuell.30 → 31): immer manuell mit kontrollierten Schritten.nextcloud:30-fpm, nextcloud:31-apache, …), nicht latest.Checkliste vor Start
- Release Notes (Core & Apps) gelesen
- PHP/DB/Redis-Kompatibilität geprüft (Image-Tags)
- Freier Speicher ≥ 20–30 % (Daten & DB)
- Frische Backups vorhanden & geprüft
- Hintergrundjobs stabil (Cron/Webcron)
- Watchtower ggf. pausiert (bei manuellem Fenster)
Technische Vorchecks
docker exec -u www-data <NC_CONTAINER> php occ status
docker exec -u www-data <NC_CONTAINER> php occ app:list --enabled
docker exec -u www-data <NC_CONTAINER> php occ integrity:check-core
# Wartungsfenster starten
docker exec -u www-data <NC_CONTAINER> php occ maintenance:mode --on
# Neue Images ziehen
docker compose pull
# Recreate/Restart
docker compose up -d --no-deps <NC_SERVICE> <CRON_SERVICE>
# DB-Migration (falls nötig)
docker exec -u www-data <NC_CONTAINER> php occ upgrade
# Health-Checks
docker exec -u www-data <NC_CONTAINER> php occ status
docker exec -u www-data <NC_CONTAINER> php occ integrity:check-core
# Maintenance beenden
docker exec -u www-data <NC_CONTAINER> php occ maintenance:mode --off
[!IMPORTANT] Immer erst Staging testen. In Produktion nur mit frischen Backups!
Ablauf
nextcloud:<ALT>-<VARIANT> auf nextcloud:<NEU>-<VARIANT> ändern.docker compose pull && docker compose up -d ausführen.docker exec -u www-data <NC_CONTAINER> php occ upgrade
docker exec -u www-data <NC_CONTAINER> php occ db:add-missing-indices
docker exec -u www-data <NC_CONTAINER> php occ db:convert-filecache-bigint
Rollback (Kurzform)
pull + up -d → vollständiges Restore (DB + Daten + Config).Checkliste
status.php über Proxy-URL erreichbar (HTTP 200)occ status fehlerfreiocc integrity:check-core OKocc app:list --show-disabled)Schnelltests
curl -sS https://<FQDN>/.well-known/caldav -I
curl -sS https://<FQDN>/status.php
docker logs --tail=200 <NC_CONTAINER>
Täglich/2‑täglich
Wöchentlich
occ app:update --all)Monatlich
Vierteljährlich
status.php).trusted_proxies & overwrite.cli.url in config.php.filelocking.enabled), APCu lokal..well-known-Weiterleitungen (CalDAV/CardDAV).memcache.locking, memcache.distributed bei Cluster; memcache.local = APCu).files:scan vermeiden.Schnellmaßnahmen
# Sofort read-only
docker exec -u www-data <NC_CONTAINER> php occ maintenance:mode --on
# Logs
docker logs <NC_CONTAINER>
Rollback komplett (Kurzleitfaden)
occ maintenance:mode --off| Datum | Aktion | Version | Bemerkung |
|---|---|---|---|
| YYYY-MM-DD | Minor/Major/Config | x.y.z | … |
php occ status
php occ upgrade
php occ maintenance:mode --on|--off
php occ integrity:check-core
php occ app:update --all
php occ db:add-missing-indices
php occ db:convert-filecache-bigint
php occ background:status
php occ maintenance:data-fingerprint
Status: in Arbeit