# Die Nextcloud-Aufstellung, die in der goldenen Vorlage liegt. # # Landet als /opt/nextcloud/docker-compose.yml im Abbild. Sie ist bewusst # KUNDENUNABHÄNGIG: kein Kennwort, kein Name, keine Domain steht hier. Alles # Veränderliche kommt aus /opt/nextcloud/.env, die die Pipeline beim Klonen über # cloud-init schreibt. # # Ein Passwort in ein Abbild zu backen hieße, es auf jeden Host und in jede # Kundeninstanz zu kopieren — und es dort auch dann noch liegen zu haben, wenn # der Kunde längst ein anderes gesetzt hat. services: db: image: mariadb:11.4 restart: always # READ-COMMITTED und Zeilen-Binlog sind die Einstellungen, die Nextcloud # selbst verlangt; ohne sie meldet die Verwaltungsübersicht dauerhaft eine # Warnung und einzelne Sperren verhalten sich anders als dokumentiert. command: >- --transaction-isolation=READ-COMMITTED --binlog-format=ROW --log-bin=binlog volumes: - db:/var/lib/mysql environment: MYSQL_RANDOM_ROOT_PASSWORD: "yes" MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: ${MYSQL_PASSWORD:?MYSQL_PASSWORD fehlt in .env} healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 12 app: image: nextcloud:apache restart: always # FALLE 1 aus Block A, nicht verhandelbar: ohne diese Zeile schlagen ALLE # occ-Aufrufe fehl. Die Bereitschaftsprüfung der Pipeline ruft `occ status`, # und ein Abbild ohne diese Zeile besteht sie nie. user: www-data ports: - "80:80" depends_on: db: condition: service_healthy volumes: - nextcloud:/var/www/html environment: MYSQL_HOST: db MYSQL_DATABASE: nextcloud MYSQL_USER: nextcloud MYSQL_PASSWORD: ${MYSQL_PASSWORD:?MYSQL_PASSWORD fehlt in .env} # Sind diese beiden gesetzt, installiert sich Nextcloud beim ersten Start # selbst. Genau dafür sind sie da — der Kunde soll keine # Einrichtungsmaske sehen. NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER:?NEXTCLOUD_ADMIN_USER fehlt in .env} NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD:?NEXTCLOUD_ADMIN_PASSWORD fehlt in .env} NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_TRUSTED_DOMAINS:-} # TLS endet bei Traefik auf dem Host, nicht hier. Ohne diese drei baut # Nextcloud seine eigenen Adressen mit http:// — die Anmeldung dreht sich # dann im Kreis, und WebDAV-Zugänge zeigen auf eine Adresse, die es so # nicht gibt. OVERWRITEPROTOCOL: https OVERWRITEHOST: ${NEXTCLOUD_PRIMARY_DOMAIN:-} TRUSTED_PROXIES: ${TRUSTED_PROXIES:-172.16.0.0/12} volumes: db: nextcloud: