version: '3.3' services: nextcloud-db: image: arm64v8/mariadb:10.6 container_name: nextcloud-db restart: always security_opt: - seccomp:unconfined - apparmor:unconfined command: mysqld --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120 volumes: - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro - ${STORAGE_BASE_PATH}/database_var:/var/lib/mysql - ${STORAGE_BASE_PATH}/database_config:/config environment: - PUID=1000 - PGID=1000 - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_PASSWORD=${MYSQL_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USER} nextcloud-app: image: nextcloud container_name: nextcloud-app restart: always ports: - 8888:80 volumes: - ${STORAGE_BASE_PATH}/app:/var/www/html - ${PAPERLESS_STORAGE_BASE_PATH}/consume:/var/www/paperless_consume - ${PAPERLESS_STORAGE_BASE_PATH}/media/documents/archive:/media/paperless_archive - /media/USB1/docker/photoprism/originals:/var/www/photoprism_archive links: - nextcloud-db labels: - "traefik.enable=true" - "traefik.http.routers.nextcloud.entrypoints=websecure" - "traefik.http.routers.nextcloud.rule=Host(`${HOST_URL}`)" - "traefik.http.routers.nextcloud.tls=true" - "traefik.http.routers.nextcloud.tls.certresolver=default" - "traefik.http.routers.nextcloud.middlewares=nextcloud-dav,secHeaders@file" - "traefik.http.services.nextcloud.loadbalancer.server.port=80" - "traefik.http.middlewares.nextcloud-dav.replacepathregex.regex=^/.well-known/ca(l|rd)dav" - "traefik.http.middlewares.nextcloud-dav.replacepathregex.replacement=/remote.php/dav/" environment: - TRUSTED_PROXIES=127.0.0.1,localhost,${HOST_URL} networks: - traefik_proxy - default networks: traefik_proxy: external: name: traefik_proxy default: driver: bridge