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:28.0.2-apache@sha256:0d231d59967d997141be8016c41df5e05f03137abbf741a8f0be2c0a8af80cf6
    # 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:28.0.2-apache@sha256:0d231d59967d997141be8016c41df5e05f03137abbf741a8f0be2c0a8af80cf6
    # 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