version: "3.3"
services:
  #mail:
  #  image: bytemark/smtp
  #  restart: always
  #  container_name: plausible-smtp

  plausible_db:
    # supported versions are 12, 13, and 14
    image: postgres:14-alpine
    container_name: plausible-db
    restart: always   
    volumes:
      - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/plausible/database/:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=${PSQL_PASS:-password}
    #networks:
    #  - proxy

  plausible_events_db:
    container_name: plausible-events-db
    image: clickhouse/clickhouse-server:24.3.3.102-alpine
    restart: always
    environment:
      - CLICKHOUSE_UID=1000
      - CLICKHOUSE_GID=1000
    volumes:
      - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/plausible/event-data:/var/lib/clickhouse
      - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/plausible/clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
      - ${DOCKER_VOLUME_STORAGE:-/mnt/docker-volumes}/plausible/clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    #networks:
    #  - proxy

  plausible:
    container_name: plausible
    image: ghcr.io/plausible/community-edition:v2.1.1
    restart: always
    command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
    depends_on:
      - plausible_db
      - plausible_events_db
    #  - mail
    ports:
      - 8000:8000 # WEB UI
    env_file:
      - .env
    #networks:
    #  - proxy
    #labels:
    #  - traefik.enable=true
    #  - traefik.http.routers.plausible.rule=Host(`plausible.example.com`)
    #  - traefik.http.services.plausible.loadbalancer.server.port=8000
    #  - traefik.docker.network=proxy
    #  # Part for local lan services only
    #  # - traefik.http.routers.plausible.middlewares=local-ipwhitelist@file

#networks:
#  proxy:
#    external: true