version: "3.7"

services:
  app_proxy:
    environment:
      APP_HOST: vikunja_proxy_1
      APP_PORT: 80
      # vikunja has its own auth, so we don't need to use transparent umbrel auth here
      PROXY_AUTH_ADD: "false"

  db:
    image: mariadb:10.11.6@sha256:20a8bd91d972c97cffded88f2ba0ab533c8988b2dc08090c57d50caf7114ed20
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: supersecret
      MYSQL_USER: vikunja
      MYSQL_PASSWORD: secret
      MYSQL_DATABASE: vikunja
    volumes:
      - ${APP_DATA_DIR}/data/db:/var/lib/mysql
    restart: on-failure

  api:
    image: vikunja/api:0.22.1@sha256:c9415431e6235229302bb8f9ee6660b74c24859d1e8adbc4a3e25bd418604b57
    environment:
      VIKUNJA_DATABASE_HOST: vikunja_db_1
      VIKUNJA_DATABASE_PASSWORD: secret
      VIKUNJA_DATABASE_TYPE: mysql
      VIKUNJA_DATABASE_USER: vikunja
      VIKUNJA_DATABASE_DATABASE: vikunja
      VIKUNJA_SERVICE_JWTSECRET: ${APP_SEED}
      VIKUNJA_SERVICE_FRONTENDURL: http://${DEVICE_DOMAIN_NAME}/
    volumes: 
      - ${APP_DATA_DIR}/data/files:/app/vikunja/files
    depends_on:
      - db
    restart: on-failure

  frontend:
    image: vikunja/frontend:0.22.1@sha256:f0223d441997fe29c377d0b476dc4bb2fc091b44b9c24d76b1b88c213df520c5
    restart: on-failure

  proxy:
    image: nginx:1.25.3@sha256:4c0fdaa8b6341bfdeca5f18f7837462c80cff90527ee35ef185571e1c327beac
    volumes:
      - ${APP_DATA_DIR}/data/proxy/nginx.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on:
      - api
      - frontend
    restart: on-failure