feat(infra): add Nextcloud stack with MariaDB and Redis, Traefik labels

This commit is contained in:
2025-09-15 19:38:57 +02:00
parent b186c22bf2
commit 062b30e379
3 changed files with 97 additions and 0 deletions

View File

@@ -0,0 +1,70 @@
services:
nextcloud:
image: nextcloud:28-apache
container_name: ${INFRASTRUCTURE_LABEL:-stack}-nextcloud
restart: unless-stopped
depends_on:
- db
- redis
environment:
- NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN}
- OVERWRITEHOST=${NEXTCLOUD_DOMAIN}
- OVERWRITEPROTOCOL=https
- OVERWRITECLIURL=https://${NEXTCLOUD_DOMAIN}
- REDIS_HOST=redis
- MYSQL_HOST=db
- MYSQL_DATABASE=${NEXTCLOUD_DB_NAME:-nextcloud}
- MYSQL_USER=${NEXTCLOUD_DB_USER:-nextcloud}
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
- PHP_MEMORY_LIMIT=${NEXTCLOUD_PHP_MEMORY_LIMIT:-512M}
- PHP_UPLOAD_LIMIT=${NEXTCLOUD_PHP_UPLOAD_LIMIT:-1024M}
volumes:
- nextcloud_data:/var/www/html
networks:
- nextcloud
- proxy
labels:
- traefik.enable=true
- traefik.http.routers.nextcloud.rule=Host(`${NEXTCLOUD_DOMAIN}`)
- traefik.http.routers.nextcloud.entrypoints=websecure
- traefik.http.routers.nextcloud.tls=true
- traefik.http.routers.nextcloud.tls.certresolver=letsencrypt
- traefik.http.services.nextcloud.loadbalancer.server.port=80
- traefik.http.routers.nextcloud.middlewares=security-headers@file
- traefik.docker.network=${TRAEFIK_NETWORK:-proxy}
db:
image: mariadb:11
container_name: ${INFRASTRUCTURE_LABEL:-stack}-nextcloud-db
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${NEXTCLOUD_DB_ROOT_PASSWORD}
- MYSQL_DATABASE=${NEXTCLOUD_DB_NAME:-nextcloud}
- MYSQL_USER=${NEXTCLOUD_DB_USER:-nextcloud}
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
volumes:
- db_data:/var/lib/mysql
networks:
- nextcloud
redis:
image: redis:7-alpine
container_name: ${INFRASTRUCTURE_LABEL:-stack}-nextcloud-redis
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- redis_data:/data
networks:
- nextcloud
volumes:
nextcloud_data:
db_data:
redis_data:
networks:
proxy:
external: true
nextcloud:
name: ${INFRASTRUCTURE_LABEL:-stack}-nextcloud