[services]

[services.nextcloud-web]
image = "nginx:alpine"
container_name = "nextcloud-web"
restart = "unless-stopped"
networks = ["nextcloud", "proxy"]
volumes = [
  "./nginx.conf:/etc/nginx/nginx.conf",
  "/docker/nextcloud:/var/www/html:z",
]
depends_on = ["nextcloud"]
labels = [
  "traefik.enable=true",
  "traefik.http.routers.nextcloud-redirect.entrypoints=http",
  "traefik.http.routers.nextcloud-redirect.rule=Host(`cloud.korhonen.cc`)",
  "traefik.http.routers.nextcloud-redirect.middlewares=http2https@file",
  "traefik.http.routers.nextcloud.entrypoints=https",
  "traefik.http.routers.nextcloud.rule=Host(`cloud.korhonen.cc`)",
  "traefik.http.routers.nextcloud.service=nextcloud",
  "traefik.http.routers.nextcloud.middlewares=secHeaders@file,nextcloud-redirect-dav@file,nextcloud-redirect-extra@file,compress@file",
  "traefik.docker.network=proxy",
  "traefik.http.services.nextcloud.loadbalancer.server.port=80",
]

[services.nextcloud]
image = "nextcloud:fpm-alpine"
container_name = "nextcloud"
restart = "unless-stopped"
user = "82:82"
networks = ["nextcloud", "postgres", "proxy"]
volumes = [
  "/docker/nextcloud:/var/www/html:z",
  "/mnt/Storage/Nextcloud:/var/www/html/data",
  "/etc/localtime:/etc/localtime:ro",
]
environment = [
  "TZ=Europe/Helsinki",
  "REDIS_HOST=redis",
  "REDIS_HOST_PASSWORD=123",
  "TRUSTED_PROXIES=traefik",
  "NEXTCLOUD_TRUSTED_DOMAINS=cloud.korhonen.cc",
  "OVERWRITEHOST=cloud.korhonen.cc",
  "OVERWRITEPROTOCOL=https",
]
depends_on = ["redis"]

[services.redis]
image = "redis:alpine"
container_name = "redis-nextcloud"
networks = ["nextcloud"]
restart = "unless-stopped"
command = "redis-server --requirepass 123"

[services.coturn]
image = "instrumentisto/coturn"
container_name = "coturn"
restart = "unless-stopped"
env_file = ".env"
ports = ["3478:3478/tcp", "3478:3478/udp"]
networks = ["nextcloud"]
command = [
  "-n",
  "--log-file=stdout",
  "--min-port=49160",
  "--max-port=49200",
  "--realm=cloud.korhonen.cc",
  "--use-auth-secret",
  "--static-auth-secret=${STATIC_AUTH_SECRET}",
]

[services.collabora]
image = "collabora/code"
container_name = "collabora"
restart = "unless-stopped"
env_file = ".env"
environment = [
  "username=${COLLABORA_USERNAME}",
  "password=${COLLABORA_PASSWORD}",
  "domain=cloud.korhonen.cc",
  'extra_params=--o:ssl.enable=false --o:ssl.termination=true',
]
networks = ["proxy"]
labels = [
  "traefik.enable=true",
  "traefik.http.routers.collabora-redirect.entrypoints=http",
  "traefik.http.routers.collabora-redirect.rule=Host(`collabora.korhonen.cc`)",
  "traefik.http.routers.collabora-redirect.middlewares=http2https@file",
  "traefik.http.routers.collabora.entrypoints=https",
  "traefik.http.routers.collabora.rule=Host(`collabora.korhonen.cc`)",
  "traefik.http.routers.collabora.service=collabora",
  "traefik.http.routers.collabora.middlewares=secHeaders@file,compress@file",
  "traefik.docker.network=proxy",
  "traefik.http.services.collabora.loadbalancer.server.port=9980",
]

[networks.nextcloud]
external = false

[networks.postgres]
external = true

[networks.proxy]
external = true
