112 lines
3.3 KiB
YAML
112 lines
3.3 KiB
YAML
# nextcloud stack — rieger-getuned, caddy-ready, mit collabora + whiteboard
|
|
# läuft im LXC 110. rootfs/app auf NVMe, daten auf tank (/srv/nc_data = tank/nextcloud).
|
|
# caddy terminiert TLS und proxyt cloud.deinedomain.ch -> web:80
|
|
# office.deinedomain.ch -> collabora:9980
|
|
# whiteboard.deinedomain.ch -> whiteboard:3002
|
|
|
|
services:
|
|
db:
|
|
image: mariadb:11.4
|
|
restart: unless-stopped
|
|
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
|
|
volumes:
|
|
- db:/var/lib/mysql
|
|
- ./config/mariadb-tuning.cnf:/etc/mysql/conf.d/99-nextcloud.cnf:ro
|
|
environment:
|
|
- MARIADB_ROOT_PASSWORD=${DB_ROOT_PW}
|
|
- MARIADB_DATABASE=nextcloud
|
|
- MARIADB_USER=nextcloud
|
|
- MARIADB_PASSWORD=${DB_PW}
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 10s
|
|
retries: 5
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
restart: unless-stopped
|
|
command: redis-server --requirepass ${REDIS_PW}
|
|
volumes:
|
|
- redis:/data
|
|
|
|
app:
|
|
image: nextcloud:fpm
|
|
restart: unless-stopped
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
volumes:
|
|
- nextcloud:/var/www/html
|
|
- /srv/nc_data:/var/www/html/data # <- tank/nextcloud mount im LXC
|
|
- ./config/php-custom.ini:/usr/local/etc/php/conf.d/zz-nextcloud.ini:ro
|
|
environment:
|
|
- MYSQL_HOST=db
|
|
- MYSQL_DATABASE=nextcloud
|
|
- MYSQL_USER=nextcloud
|
|
- MYSQL_PASSWORD=${DB_PW}
|
|
- REDIS_HOST=redis
|
|
- REDIS_HOST_PASSWORD=${REDIS_PW}
|
|
- NEXTCLOUD_TRUSTED_DOMAINS=cloud.deinedomain.ch
|
|
- TRUSTED_PROXIES=10.0.0.100 # <- Caddy-IP
|
|
- OVERWRITEPROTOCOL=https
|
|
- OVERWRITECLIURL=https://cloud.deinedomain.ch
|
|
- PHP_MEMORY_LIMIT=1024M
|
|
- PHP_UPLOAD_LIMIT=16G
|
|
|
|
web:
|
|
image: nginx:alpine
|
|
restart: unless-stopped
|
|
depends_on: [app]
|
|
volumes:
|
|
- nextcloud:/var/www/html:ro
|
|
- /srv/nc_data:/var/www/html/data:ro
|
|
- ./config/nginx-nextcloud.conf:/etc/nginx/conf.d/default.conf:ro
|
|
ports:
|
|
- "8110:80" # <- Caddy proxyt hierauf
|
|
|
|
cron:
|
|
image: nextcloud:fpm
|
|
restart: unless-stopped
|
|
depends_on: [db, redis]
|
|
volumes:
|
|
- nextcloud:/var/www/html
|
|
- /srv/nc_data:/var/www/html/data
|
|
entrypoint: /cron.sh
|
|
|
|
collabora:
|
|
image: collabora/code:latest
|
|
restart: unless-stopped
|
|
cap_add: [MKNOD]
|
|
environment:
|
|
- aliasgroup1=https://cloud\.deinedomain\.ch:443
|
|
- server_name=office.deinedomain.ch
|
|
- username=admin
|
|
- password=${COLLABORA_PW}
|
|
- extra_params=--o:ssl.enable=false --o:ssl.termination=true
|
|
ports:
|
|
- "9980:9980" # <- Caddy proxyt office.deinedomain.ch hierauf
|
|
|
|
whiteboard:
|
|
image: ghcr.io/nextcloud-releases/whiteboard:stable
|
|
restart: unless-stopped
|
|
environment:
|
|
- NEXTCLOUD_URL=https://cloud.deinedomain.ch
|
|
- JWT_SECRET_KEY=${WHITEBOARD_JWT}
|
|
ports:
|
|
- "3002:3002" # <- Caddy proxyt whiteboard.deinedomain.ch hierauf
|
|
|
|
# optional, aber rieger-im-geiste: schnellere previews
|
|
imaginary:
|
|
image: nextcloud/aio-imaginary:latest
|
|
restart: unless-stopped
|
|
cap_add: [SYS_NICE]
|
|
environment:
|
|
- PORT=9000
|
|
|
|
volumes:
|
|
nextcloud:
|
|
db:
|
|
redis:
|