Files
docker/nextcloud/docker-compose.yml
T
2025-07-20 13:25:51 +10:00

145 lines
4.9 KiB
YAML

version: "3"
services:
webapp:
image: nextcloud
deploy:
# resources:
# limits:
# cpus: '0.3'
# memory: 200m
restart_policy:
condition: on-failure
max_attempts: 5
# read_only: true
# tmpfs:
# - /tmp
# - /var
# - /run
restart: always
hostname: nextcloud.lan.ddnsgeek.com
volumes:
- ./data:/var/www/html/data:rw
- ./config:/var/www/html/config:rw
depends_on:
- database
- redis
# ports:
# - 8083:80
# - 4433:443
environment:
- MYSQL_PASSWORD=R1m@dmin
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=nextcloud_db:3306
- NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.lan.ddnsgeek.com
- OVERWRITEPROTOCOL=https
- OVERWRITECLIURL=https://nextcloud.lan.ddnsgeek.com
- SMTP_HOST=smtp-mail.outlook.com
- SMTP_SECURE=tls
- SMTP_PORT=587
- SMTP_AUTHTYPE=login
- MAIL_FROM_ADDRESS=wayne.bennett@live.com
- MAIL_DOMAIN=live.com
- SMTP_NAME=wayne.bennett
- SMTP_PASSWORD=uscdbrjunqmkgglf
- REDIS_HOST=redis
# - REDIS_HOST_PASSWORD=R1m@dmin
networks:
- traefik_default
labels:
- "traefik.http.routers.nextcloud.rule=Host(`nextcloud.lan.ddnsgeek.com`)"
- "traefik.enable=true"
- "traefik.http.routers.nextcloud.entrypoints=websecure"
- "traefik.http.routers.nextcloud.tls.certresolver=myresolver"
- "io.portainer.accesscontrol.public"
- "traefik.http.routers.nextcloud.middlewares=error-pages-middleware, nextcloud-dav, secHeaders@file, nextcloud-webfinger"
- "traefik.http.middlewares.nextcloud-dav.replacepathregex.regex=^/.well-known/ca(l|rd)dav"
- "traefik.http.middlewares.nextcloud-dav.replacepathregex.replacement=/remote.php/dav/"
- "traefik.http.middlewares.nextcloud-nodeinfo.replacepathregex.regex=^/.well-known/nodeinfo"
- "traefik.http.middlewares.nextcloud-nodeinfo.replacepathregex.replacement=/nextcloud/index.php/.well-known/nodeinfo/"
- "traefik.http.middlewares.nextcloud-webfinger.redirectregex.permanent=true"
- "traefik.http.middlewares.nextcloud-webfinger.redirectregex.regex=https://(.*)/.well-known/webfinger"
- "traefik.http.middlewares.nextcloud-webfinger.redirectregex.replacement=https://$${1}/nextcloud/index.php/.well-known/webfinger"
# - "traefik.http.middlewares.nextcloudHeader.headers.stsSeconds=15552000"
# - "traefik.http.middlewares.nextcloudHeader.headers.stsIncludeSubdomains=true"
# - "traefik.http.middlewares.nextcloudHeader.headers.stsPreload=true"
# - "traefik.http.middlewares.nextcloudHeader.headers.forceSTSHeader=true"
# - "traefik.http.routers.nextcloud.middlewares=error-pages-middleware, secHeaders@file, nextcloud_redirectregex, nextcloud-webfinger"
# - "traefik.http.middlewares.nextcloud_redirectregex.redirectregex.permanent=true"
# - "traefik.http.middlewares.nextcloud_redirectregex.redirectregex.regex='https://(.*)/.well-known/(?:card|cal)dav'"
# - "traefik.http.middlewares.nextcloud_redirectregex.redirectregex.replacement='https://$${1}/remote.php/dav'"
database:
image: mariadb:11.4
# image: mariadb
# read_only: true
# tmpfs:
# - /tmp
# - /var
# - /run
# - /docker-entrypoint-initdb.d
restart: always
hostname: nextcloud_db
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
deploy:
# resources:
# limits:
# cpus: '0.3'
# memory: 300m
restart_policy:
condition: on-failure
max_attempts: 5
volumes:
- ./database:/var/lib/mysql:rw
environment:
- MYSQL_ROOT_PASSWORD=R1m@dmin
- MYSQL_PASSWORD=R1m@dmin
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MARIADB_AUTO_UPGRADE=1
- NEXTCLOUD_ADMIN_USER=admin
- NEXTCLOUD_ADMIN_PASSWORD=R1m@dmin
networks:
- traefik_default
healthcheck:
test: "/usr/bin/mysql --user=nextcloud --password=R1m@dmin --execute \"SHOW DATABASES;\""
labels:
- "io.portainer.accesscontrol.public"
redis:
image: "redis"
# read_only: true
# tmpfs:
# - /tmp
# - /var
# - /run
deploy:
# resources:
# limits:
# cpus: '0.3'
# memory: 150m
restart_policy:
condition: on-failure
max_attempts: 5
command: redis-server --save 60 1 --loglevel warning
environment:
- REDIS_OVERCOMMIT_MEMORY=1
- REDIS_ARGS="--requirepass R1m@dmin --user redis on >password ~* allcommands --user default off nopass nocommands"
hostname: redis
# user: "linode"
volumes:
- ./data/redis:/data:rw
# - ./config.yaml:/opt/doods/config.yaml
restart: unless-stopped
networks:
- traefik_default
labels:
- "io.portainer.accesscontrol.public"
networks:
traefik_default:
external: true