--- services: nginx: container_name: nginx-nextcloud image: nginx:latest volumes: - ${NEXTCLOUD_DIR}:/var/www/html - ${DATA_DIR}:/data - ./nginx.conf:/etc/nginx/nginx.conf:ro labels: - "traefik.enable=true" - "traefik.docker.network=traefik" - "traefik.http.routers.nginx-http.rule=Host(${DOMAIN})" - "traefik.http.routers.nginx-http.entrypoints=web" - "traefik.http.routers.nginx-http.middlewares=nextcloud-https-redirect@docker,nc-header@docker,nextcloud_redirectregex@docker${TRAEFIK_CUSTOM_MIDDLEWARES}" - "traefik.http.routers.nginx-https.rule=Host(${DOMAIN})" - "traefik.http.routers.nginx-https.tls=true" - "traefik.http.routers.nginx-https.tls.certresolver=myresolver" - "traefik.http.routers.nginx-https.entrypoints=websecure" - "traefik.http.routers.nginx-https.middlewares=nc-header@docker,nextcloud_redirectregex@docker${TRAEFIK_CUSTOM_MIDDLEWARES}" - "traefik.http.middlewares.nc-header.headers.stsSeconds=15552001" # MIDDLEWARES - "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" # HTTP->HTTPS redirect - "traefik.http.middlewares.nextcloud-https-redirect.redirectscheme.scheme=https" - "traefik.http.middlewares.nextcloud-https-redirect.redirectscheme.permanent=true" # Traefik service - "traefik.http.routers.nginx-https.service=nextcloud-service" - "traefik.http.services.nextcloud-service.loadbalancer.server.port=80" networks: - nextcloud - traefik depends_on: - php-fpm-nextcloud - redis-nextcloud - mariadb-nextcloud php-fpm-nextcloud: container_name: php-fpm-nextcloud build: ./php-fpm volumes: - ${NEXTCLOUD_DIR}:/var/www/html - ${DATA_DIR}:/data networks: - nextcloud mariadb-nextcloud: container_name: mariadb-nextcloud image: mariadb command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW restart: always volumes: - ./mariadb:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASS} - MYSQL_PASSWORD=${MARIADB_PASS} - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud networks: - nextcloud redis-nextcloud: container_name: redis-nextcloud image: redis:latest restart: unless-stopped networks: - nextcloud networks: nextcloud: driver: bridge traefik: external: true