#
#   Copyright © 2021,2022 IsardVDI S.L.
#   Copyright © 2023 Evilham <contact@evilham.com>
#
#   This file is part of DD
#
#   DD is free software: you can redistribute it and/or modify
#   it under the terms of the GNU Affero General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or (at your
#   option) any later version.
#
#   DD is distributed in the hope that it will be useful, but WITHOUT ANY
#   WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
#   FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
#   details.
#
#   You should have received a copy of the GNU Affero General Public License
#   along with DD. If not, see <https://www.gnu.org/licenses/>.
#
# SPDX-License-Identifier: AGPL-3.0-or-later
version: '3.7'
services:
  dd-apps-nextcloud-app:
    build:
      context: ${BUILD_APPS_ROOT_PATH}/docker/nextcloud
      dockerfile: Dockerfile
      args:
        # Update dd.conf.sample when bumping this version in main
        - IMG=${NEXTCLOUD_IMG_OVERRIDE-nextcloud:25.0.5-fpm-alpine}
    container_name: dd-apps-nextcloud-app
    image: registry.dd-work.space/dd/apps-nextcloud:${DD_BUILD:-latest}
    restart: unless-stopped
    depends_on:
      - dd-apps-postgresql
    volumes:
      - /etc/localtime:/etc/localtime:ro
      # According to the documentation: https://hub.docker.com/_/nextcloud
      # We need the full dir for upgrades, only version.php should matter though?
      - ${SRC_FOLDER}/nextcloud:/var/www/html
      # Making these dirs explicit so we can segregate them easier in the future
      #- ${SRC_FOLDER}/nextcloud/custom_apps:/var/www/html/custom_apps
      #- ${SRC_FOLDER}/nextcloud/config:/var/www/html/config
      - ${DATA_FOLDER}/nextcloud:/var/www/html/data:rw
      - ${BUILD_APPS_ROOT_PATH}/docker/nextcloud/src/themes/dd:/var/www/html/themes/dd:ro
      # We need this to configure the custom logos and background
      - ${CUSTOM_PATH}/custom/img:/custom/img:ro
      # SAML certificates
      - ${DATA_FOLDER}/saml/nextcloud:/saml:ro
      # NC mail client update queue
      - ${DATA_FOLDER}/nc-mail-queue:/nc-mail-queue:rw
    environment:
      # DD-specific settings
      - DOMAIN=${DOMAIN}
      # General Nextcloud settings
      - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}
      - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
      - POSTGRES_DB=nextcloud
      - POSTGRES_USER=${NEXTCLOUD_POSTGRES_USER}
      - POSTGRES_PASSWORD=${NEXTCLOUD_POSTGRES_PASSWORD}
      - POSTGRES_HOST=dd-apps-postgresql
      - REDIS_HOST=dd-apps-redis
      - NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.${DOMAIN}
      # SMTP settings
      - SMTP_HOST=${SMTP_HOST}
      - SMTP_PORT=${SMTP_PORT}
      - SMTP_SECURE=${SMTP_PROTOCOL}
      - SMTP_NAME=${SMTP_USER}
      - SMTP_PASSWORD=${SMTP_PASSWORD}
      - MAIL_FROM_ADDRESS=${SMTP_LOCAL_PART}
      - MAIL_DOMAIN=${SMTP_DOMAIN}
      # PHP-specific settings
      - PHP_UPLOAD_LIMIT=${NEXTCLOUD_UPLOAD_LIMIT-512M}
      - PHP_MEMORY_LIMIT=${NEXTCLOUD_MEMORY_LIMIT-512M}
      # Proxy-specific settings
      - OVERWRITEPROTOCOL=https
      # BBB settings
      - BBB_HOST=${BBB_HOST:-}
      - BBB_API_SECRET=${BBB_API_SECRET:-}
      # Operator preferences
      - EXTRA_PLUGINS_ENABLE=${NEXTCLOUD_PLUGINS_ENABLE:-}
      - EXTRA_PLUGINS_DISABLE=${NEXTCLOUD_PLUGINS_DISABLE:-}
      - FORCED_LANGUAGE=${FORCED_LANGUAGE:-ca}
    networks:
      - dd_net

  dd-apps-nextcloud-nginx:
    image: ${NGINX_ALPINE_IMG-nginx:1.22.1-alpine}
    container_name: dd-apps-nextcloud-nginx
    restart: unless-stopped
    links:
      - dd-apps-nextcloud-app
    volumes:
      # Customised nginx config
      - ${BUILD_APPS_ROOT_PATH}/docker/nextcloud/nginx.conf:/etc/nginx/nginx.conf:ro
      # By mounting these, nginx can serve static files when possible
      - ${SRC_FOLDER}/nextcloud:/var/www/html:ro
      - ${BUILD_APPS_ROOT_PATH}/docker/nextcloud/src/themes/dd:/var/www/html/themes/dd:ro
    # This image does not require access to any environment variables
    environment: []
    healthcheck:
        test: |
          curl -L --max-redirs 1 \
            --proxy-basic 'http://localhost:8080' \
            -sw '%{redirect_url}' \
            'https://nextcloud.${DOMAIN}/login' | grep -q 'https://sso.${DOMAIN}'
        interval: 30s
        timeout: 10s
        retries: 5
    networks:
      - dd_net
