apps/apps/nextcloud/docker-compose.json
2025-07-01 19:34:27 +00:00

83 lines
2.9 KiB
JSON

{
"$schema": "../dynamic-compose-schema.json",
"services": [
{
"name": "nextcloud",
"image": "nextcloud:31.0.6-appache",
"isMain": true,
"internalPort": 80,
"environment": {
"POSTGRES_HOST": "db-nextcloud",
"REDIS_HOST": "redis-nextcloud",
"POSTGRES_PASSWORD": "tipi",
"POSTGRES_USER": "tipi",
"POSTGRES_DB": "nextcloud",
"NEXTCLOUD_ADMIN_USER": "${NEXTCLOUD_ADMIN_USER}",
"NEXTCLOUD_ADMIN_PASSWORD": "${NEXTCLOUD_ADMIN_PASSWORD}",
"NEXTCLOUD_TRUSTED_DOMAINS": "${APP_DOMAIN}",
"TRUSTED_PROXIES": "172.16.0.0/12",
"OVERWRITEPROTOCOL": "${APP_PROTOCOL:-http}"
},
"dependsOn": ["db-nextcloud", "redis-nextcloud"],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/nextcloud",
"containerPath": "/var/www/html"
}
],
"extraLabels": {
"traefik.http.middlewares.nextcloud.headers.browserXSSFilter": "true",
"traefik.http.middlewares.nextcloud.headers.contentTypeNosniff": "true",
"traefik.http.middlewares.nextcloud.headers.stsIncludeSubdomains": "true",
"traefik.http.middlewares.nextcloud.headers.stsPreload": "true",
"traefik.http.middlewares.nextcloud.headers.stsSeconds": "155520011",
"traefik.http.middlewares.nextcloud_redirect.redirectregex.permanent": "true",
"traefik.http.middlewares.nextcloud_redirect.redirectregex.regex": "https://(.*)/.well-known/(card|cal)dav",
"traefik.http.middlewares.nextcloud_redirect.redirectregex.replacement": "https://$${1}/remote.php/dav/",
"traefik.http.routers.nextcloud.middlewares": "nextcloud,nextcloud_redirect,nextcloud-https",
"traefik.http.middlewares.nextcloud.headers.customRequestHeaders.X-Forwarded-Proto": "https",
"traefik.http.middlewares.nextcloud-https.redirectscheme.scheme": "https",
"traefik.http.routers.nextcloud-http.middlewares": "nextcloud-https@docker"
}
},
{
"name": "db-nextcloud",
"image": "postgres:14.2",
"environment": {
"POSTGRES_PASSWORD": "tipi",
"POSTGRES_USER": "tipi",
"POSTGRES_DB": "nextcloud"
},
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/db",
"containerPath": "/var/lib/postgresql/data"
}
]
},
{
"name": "redis-nextcloud",
"image": "redis:6.2.6",
"user": "1000:1000",
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/redis",
"containerPath": "/data"
}
]
},
{
"name": "cron",
"image": "nextcloud:31.0.6-appache",
"dependsOn": ["db-nextcloud", "redis-nextcloud"],
"volumes": [
{
"hostPath": "${APP_DATA_DIR}/data/nextcloud",
"containerPath": "/var/www/html"
}
],
"entrypoint": "/cron.sh"
}
]
}