version: '3.7'

volumes:
  nextcloud-db:
    name: docker_nextcloud-db-15
  nextcloud-data:
    name: docker_nextcloud
  nextcloud:
    name: docker_nextcloud-conf
  onlyoffice-cache:
    name: docker_onlyoffice-cache
  onlyoffice-db:
    name: docker_onlyoffice-db

networks:
  nextcloud:
  proxy:
    external: true

services:
  nextcloud-app:
    image: nextcloud-cron:26.0.10
    build: .
    container_name: nextcloud-app
    restart: unless-stopped
    extra_hosts :
      office.oasis21.org : 172.16.7.10
    volumes:
      - nextcloud:/var/www/html
      - nextcloud-data:/var/www/html/data
    environment:
      - "TZ=Europe/Paris"
      - REDIS_HOST=redis
    env_file: ./secrets/librezo.secrets
    depends_on:
      - nextcloud-db
      - redis
    networks:
      - nextcloud
      - proxy
    labels:
      traefik.http.routers.nextcloud-web.entrypoints: websecure
      traefik.http.routers.nextcloud-web.rule: Host(`cloud.oasis21.org`)
      traefik.http.services.nextcloud-web.loadbalancer.server.port: 80
      traefik.enable: true
      # https://docs.nextcloud.com/server/16/admin_manual/configuration_server/reverse_proxy_configuration.html
      traefik.http.routers.nextcloud-web.middlewares: nextcloud-web@docker, allowFrameAndCORS@file
      traefik.http.middlewares.nextcloud-web.redirectregex.permanent: true
      traefik.http.middlewares.nextcloud-web.redirectregex.regex: "https://(.*)/.well-known/(card|cal)dav"
      traefik.http.middlewares.nextcloud-web.redirectregex.replacement: "https://$${1}/remote.php/dav/"

  redis:
    image: 'bitnami/redis:7.0.10'
    container_name: redis
    restart: unless-stopped
    environment:
      - "TZ=Europe/Paris"
      - ALLOW_EMPTY_PASSWORD=yes
    env_file: ./secrets/librezo.secrets
    networks:
      - nextcloud


  nextcloud-db:
    image: postgres:15-alpine
    container_name: nextcloud-db
    volumes:
      - nextcloud-db:/var/lib/postgresql/data
    networks:
      - nextcloud
    env_file: ./secrets/librezo.secrets
    environment:
      - "TZ=Europe/Paris"
    restart: unless-stopped

  onlyoffice:
    build: 
      context: .
      dockerfile: ./dockerfile-oo
    container_name: onlyoffice
    image: onlyoffice:7.5.1
    restart: unless-stopped
    extra_hosts :
      cloud.oasis21.org : 172.16.7.10
    environment:
      - JWT_ENABLED=true
      - JWT_SECRET=MvaG9zdHMgCnN1ZG8gbmFubyAvZXRjL2hvc3RzIApzY3AgVMOpbMOpY
      - FORCESAVE_ENABLE=true
      - FORCESAVE_INTERVAL=2m
      - FORCESAVE_STEP=5m
    volumes:
      - onlyoffice-cache:/var/lib/onlyoffice/documentserver/App_Data
      - onlyoffice-db:/var/lib/postgresql
    labels:
      traefik.http.routers.onlyoffice.entrypoints: websecure
      traefik.http.routers.onlyoffice.rule: Host(`office.oasis21.org`)
      traefik.http.services.onlyoffice.loadbalancer.server.port: 80
      traefik.enable: true
      traefik.http.routers.onlyoffice.middlewares: allowFrameAndCORS@file, onlyoffice-sslheaders
      traefik.http.middlewares.onlyoffice-sslheaders.headers.customrequestheaders.X-Forwarded-Proto: "https"
    networks: 
      - nextcloud
      - proxy
