Die Nextcloud docker-compose.yml
Nun kann es endlich mit Netxcloud losgehen
Dieses Template wird immer mal aktualisiert und ist ausschließlich für eine Neuinstallation gedacht!
Der Updateprozess wird später erklärt!
Anlegen des Programmordners
Ich habe folgende Programmstruktur bei mir angelegt: /home/dockeruser/docker/nextcloud
Dort werden alle benötigten Dateien zum Betrieb der Nextcloud abgelegt.
Alle nachfolgenden Schritte in dieser Anleitung beziehen sich immer auf diese Struktur!
Folgende Kommandos fügt Ihr nun als dockeruser aus:
mkdir ~/docker && mkdir ~/docker/nextcloud && cd ~/docker/nextcloud
Nun solltest ich im folgenden Verzeichnis sein:
/home/dockeruser/docker/nextcloud#
Erstellen der Datei docker-compose.yml
Mit folgendem Kommando öffnet Ihr den Editor für die docker-compose.yml:
nano docker-compose.yml
Nun wird folgender Code dort hinein kopiert.
services:
db:
image: postgres:16
container_name: nextcloud-db
restart: unless-stopped
environment:
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: EIN_SICHERES_PASSWORT_FESTLEGEN
volumes:
- /home/dockeruser/docker/nextcloud/db:/var/lib/postgresql/data
redis:
image: redis:7-alpine
container_name: nextcloud-redis
restart: unless-stopped
command: ["redis-server", "--appendonly", "yes"]
volumes:
- /home/dockeruser/docker/nextcloud/redis:/data
app:
image: nextcloud:31-fpm
container_name: nextcloud-app
restart: unless-stopped
depends_on:
- db
- redis
environment:
POSTGRES_HOST: db
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: EIN_SICHERES_PASSWORT_FESTLEGEN
REDIS_HOST: redis
volumes:
- /home/dockeruser/docker/nextcloud/nextcloud:/var/www/html
- /home/dockeruser/docker/nextcloud/config:/var/www/html/config
web:
image: nginx:alpine
container_name: nextcloud-web
restart: unless-stopped
depends_on:
- app
ports:
- "8088:80"
volumes:
- /home/dockeruser/docker/nextcloud/nextcloud:/var/www/html:ro
- /home/dockeruser/docker/nextcloud/config:/var/www/html/config:ro
- /home/dockeruser/docker/nextcloud/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
collabora:
image: collabora/code:latest
container_name: collabora
restart: unless-stopped
environment:
- domain=office\\.mein\\.dyndns\\.local
- username=EINEN_BENUTZERNAMEN_FESTLEGEN
- password=EIN_SICHERES_PASSWORT_FESTLEGEN
- extra_params=--o:ssl.enable=false --o:ssl.termination=true
ports:
- "9980:9980"
cron:
image: nextcloud:31-fpm
container_name: nextcloud-cron
restart: unless-stopped
depends_on:
- db
- redis
volumes:
- /home/dockeruser/docker/nextcloud/nextcloud:/var/www/html
- /home/dockeruser/docker/nextcloud/config:/var/www/html/config
entrypoint: /cron.sh
WICHTIG: Handelt hier vorsichtig und mit wirklich starken Passwörtern!
Im nano ändert Ihr vor den Speichern den Inhalt der Variablen folgender Zeilen 9, 32, 56, 58, 59!
Der Reverse-Proxy (traefik)
Um die Seite im Internet bereit zu stellen benutzen wir einen Reverse-Proxy der den Netxtcloud-Dienst ausschließlich über TLS-Verschlüsselung anbietet (https). Im Heimsetzerk ist die Nextcloud über http erreichbar, wird aber darüber nicht genutzt.
Ich betreibe einen Traefik Dienst im Docker der als ein HTTP-Reverse-Proxy und Load Balancer dient, der die Bereitstellung von Microservices erleichtert. Dieser läuft auf einer anderen Maschine, da ich dort viele Microservices laufen lasse (unter anderen dieses Wiki) und ich will die Nextcloud-Instanz nicht auch dort noch laufen lassen, aus Performanz gründen.
Zeile 56 dient zur Definition FQDNS für Collabora. Die \\. müssen drin bleiben!