version: "3.7"

services:
  app_proxy:
    environment:
      APP_HOST: nextcloud_web_1
      APP_PORT: 80
      PROXY_AUTH_ADD: "false"
  
  db:
    image: mariadb:10.5.12@sha256:dfcba5641bdbfd7cbf5b07eeed707e6a3672f46823695a0d3aba2e49bbd9b1dd
    user: "1000:1000"
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: on-failure
    volumes:
      - ${APP_DATA_DIR}/data/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=moneyprintergobrrr
      - MYSQL_PASSWORD=moneyprintergobrrr
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  redis:
    image: redis:6.2.2-buster@sha256:e10f55f92478715698a2cef97c2bbdc48df2a05081edd884938903aa60df6396
    user: "1000:1000"
    restart: on-failure
    volumes:
      - "${APP_DATA_DIR}/data/redis:/data"

  web:
    image: nextcloud:25.0.1-apache@sha256:a200319b132c01ec3486e0dcaf052092b560ec30ac9b78115607696dd201f704
    # Currently needs to be run as root, if we run as uid 1000 this fails
    # https://github.com/nextcloud/docker/blob/05026b029d37fc5cd488d4a4a2a79480e39841ba/21.0/apache/entrypoint.sh#L53-L77
    # user: "1000:1000"
    restart: on-failure
    volumes:
      - ${APP_DATA_DIR}/data/nextcloud:/var/www/html
    environment:
      - MYSQL_HOST=nextcloud_db_1
      - REDIS_HOST=nextcloud_redis_1
      - MYSQL_PASSWORD=moneyprintergobrrr
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - TRUSTED_PROXIES="${NETWORK_IP}/16"
      - NEXTCLOUD_ADMIN_USER=umbrel
      - NEXTCLOUD_ADMIN_PASSWORD=${APP_PASSWORD}
      - NEXTCLOUD_TRUSTED_DOMAINS=${APP_DOMAIN}:${APP_NEXTCLOUD_PORT} ${APP_HIDDEN_SERVICE} ${DEVICE_HOSTNAME}:${APP_NEXTCLOUD_PORT} ${APP_NEXTCLOUD_LOCAL_IPS}
      - PHP_UPLOAD_LIMIT=1024G
    depends_on:
      - db
      - redis

  cron:
    image: nextcloud:25.0.1-apache@sha256:a200319b132c01ec3486e0dcaf052092b560ec30ac9b78115607696dd201f704
    # Currently needs to be run as root, if we run as uid 1000 this fails
    # https://github.com/nextcloud/docker/blob/05026b029d37fc5cd488d4a4a2a79480e39841ba/21.0/apache/entrypoint.sh#L53-L77
    # user: "1000:1000"
    restart: on-failure
    volumes:
      - ${APP_DATA_DIR}/data/nextcloud:/var/www/html
    entrypoint: /cron.sh
    depends_on:
      - db
      - redis
