version: "3.7"

services:
  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
    networks:
      default:
        ipv4_address: $APP_NEXTCLOUD_DB_IP

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

  web:
    image: nextcloud:22.1.1-apache@sha256:99d94124b2024c9f7f38dc12144a92bc0d68d110bcfd374169ebb7e8df0adf8e
    # 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
    ports:
      - ${APP_NEXTCLOUD_PORT}:80
    volumes:
      - ${APP_DATA_DIR}/data/nextcloud:/var/www/html
    environment:
      - MYSQL_HOST=${APP_NEXTCLOUD_DB_IP}
      - REDIS_HOST=${APP_NEXTCLOUD_REDIS_IP}
      - MYSQL_PASSWORD=moneyprintergobrrr
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - NEXTCLOUD_ADMIN_USER=umbrel
      - NEXTCLOUD_ADMIN_PASSWORD=${APP_PASSWORD}
      - NEXTCLOUD_TRUSTED_DOMAINS=${APP_DOMAIN}:${APP_NEXTCLOUD_PORT} ${APP_HIDDEN_SERVICE}
    depends_on:
      - db
      - redis
    networks:
      default:
        ipv4_address: $APP_NEXTCLOUD_IP

  cron:
    image: nextcloud:22.0.0-apache@sha256:55de721417c16ff110720217406778e16f1b63154d2e8d42fc7913c37dbe6d50
    # 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
    networks:
      default:
        ipv4_address: $APP_NEXTCLOUD_CRON_IP