version: '3.7'

services:
  umami:
    container_name: umami
    image: ghcr.io/umami-software/umami:postgresql-v1.40.0
    ports:
      - '${APP_PORT}:3000'
    environment:
      DATABASE_URL: postgresql://umami:${DB_PASSWORD}@umami-db:5432/umami
      DATABASE_TYPE: postgresql
      HASH_SALT: ${HASH_SALT}
    depends_on:
      - umami-db
    restart: always
    networks:
      - tipi_main_network
    labels:
      # Main
      traefik.enable: true
      traefik.http.middlewares.umami-web-redirect.redirectscheme.scheme: https
      traefik.http.services.umami.loadbalancer.server.port: 3000
      # Web
      traefik.http.routers.umami-insecure.rule: Host(`${APP_DOMAIN}`)
      traefik.http.routers.umami-insecure.entrypoints: web
      traefik.http.routers.umami-insecure.service: umami
      traefik.http.routers.umami-insecure.middlewares: umami-web-redirect
      # Websecure
      traefik.http.routers.umami.rule: Host(`${APP_DOMAIN}`)
      traefik.http.routers.umami.entrypoints: websecure
      traefik.http.routers.umami.service: umami
      traefik.http.routers.umami.tls.certresolver: myresolver
      # Local domain
      traefik.http.routers.umami-local-insecure.rule: Host(`umami.${LOCAL_DOMAIN}`)
      traefik.http.routers.umami-local-insecure.entrypoints: web
      traefik.http.routers.umami-local-insecure.service: umami
      traefik.http.routers.umami-local-insecure.middlewares: umami-web-redirect
      # Local domain secure
      traefik.http.routers.umami-local.rule: Host(`umami.${LOCAL_DOMAIN}`)
      traefik.http.routers.umami-local.entrypoints: websecure
      traefik.http.routers.umami-local.service: umami
      traefik.http.routers.umami-local.tls: true

  umami-db:
    container_name: umami-db
    image: postgres:12-alpine
    environment:
      POSTGRES_DB: umami
      POSTGRES_USER: umami
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - ${APP_DATA_DIR}/data/postgres:/var/lib/postgresql/data
    restart: always
    networks:
      - tipi_main_network