homeserver/docker-compose/nextcloud/docker-compose.yml.j2

126 lines
3.8 KiB
Django/Jinja

version: '3.3'
services:
######## Datenbank ########
nextcloud-db:
image: mariadb:10
container_name: nextcloud-db
command: --transaction-isolation=READ-COMMITTED --log-bin=ROW --innodb_read_only_compressed=OFF
restart: unless-stopped
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_INITDB_SKIP_TZINFO=1
networks:
- intern
labels:
- com.centurylinklabs.watchtower.enable=true
######## Redis ########
nextcloud-redis:
image: redis:7-alpine
container_name: nextcloud-redis
hostname: nextcloud-redis
networks:
- intern
restart: unless-stopped
command: redis-server --requirepass ${REDIS_HOST_PASSWORD}
labels:
- com.centurylinklabs.watchtower.enable=true
######## cron ########
cron:
container_name: nextcloud-cron
image: rcdailey/nextcloud-cronjob:latest
restart: unless-stopped
network_mode: none
depends_on:
- nextcloud-app
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
environment:
- NEXTCLOUD_CONTAINER_NAME=nextcloud-app
- NEXTCLOUD_CRON_MINUTE_INTERVAL=1
labels:
- com.centurylinklabs.watchtower.enable=true
######## Nextcloud ########
nextcloud-app:
image: nextcloud:${NC_MAJOR_VERSION}
container_name: nextcloud-app
restart: unless-stopped
depends_on:
- nextcloud-db
- nextcloud-redis
environment:
REDIS_HOST: nextcloud-redis
REDIS_HOST_PASSWORD: ${REDIS_HOST_PASSWORD}
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_HOST: nextcloud-db
NEXTCLOUD_TRUSTED_DOMAINS: "nextcloud.mgrote.net"
SMTP_HOST: smtp.strato.de
SMTP_SECURE: tls
SMTP_PORT: 587
SMTP_AUTHTYPE: LOGIN
SMTP_NAME: info@mgrote.net
SMTP_PASSWORD: ${SMTP_PASSWORD}
MAIL_FROM_ADDRESS: info@mgrote.net
PHP_MEMORY_LIMIT: 1024M
PHP_UPLOAD_LIMIT: 10G
APACHE_DISABLE_REWRITE_IP: 1
TRUSTED_PROXIES: "192.168.2.43" # docker10.grote.lan/traefik
volumes:
- app:/var/www/html
- data:/var/www/html/data
networks:
- intern
# ports:
# - 80:80
networks:
- intern
- traefik
labels:
- com.centurylinklabs.watchtower.enable=true
- com.centurylinklabs.watchtower.depends-on=nextcloud-redis,nextcloud-db
- traefik.http.routers.nextcloud.rule=Host(`nextcloud.mgrote.net`)
- traefik.enable=true
- traefik.http.routers.nextcloud.tls=true
- traefik.http.routers.nextcloud.tls.certresolver=resolver_letsencrypt
- traefik.http.routers.nextcloud.entrypoints=entry_https
- traefik.http.services.nextcloud.loadbalancer.server.port=80
- traefik.http.middlewares.nextcloud-webdav.replacepathregex.regex="^/.well-known/ca(l|rd)dav"
- traefik.http.middlewares.nextcloud-webdav.replacepathregex.replacement="/remote.php/dav/"
- traefik.http.middlewares.nextcloud-hsts.headers.stsincludesubdomains=false
- traefik.http.middlewares.nextcloud-hsts.headers.stspreload=true
- traefik.http.middlewares.nextcloud-hsts.headers.stsseconds=15552001
- traefik.http.middlewares.nextcloud-hsts.headers.isdevelopment=false
- traefik.http.routers.nextcloud.middlewares=nextcloud-hsts@docker,nextcloud-webdav@docker
######## Networks ########
networks:
intern:
driver: bridge
traefik:
external: true
######## Volumes ########
volumes:
db:
app:
data:
######## Doku ########
# Telefonregion
# docker exec --user www-data nextcloud-app php occ config:system:set default_phone_region --value="DE"