services: plausible_db: # Plausible v2.1.1 was tested against PostgreSQL versions 15 and 16 # https://github.com/plausible/analytics/blob/v2.1.1/.github/workflows/elixir.yml#L21-L32 image: postgres:16-alpine restart: always volumes: - db-data:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=postgres healthcheck: test: pg_isready start_interval: 2s start_period: 1m plausible_events_db: image: clickhouse/clickhouse-server:24.3.3.102-alpine restart: always volumes: - event-data:/var/lib/clickhouse - event-logs:/var/log/clickhouse-server - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro healthcheck: test: wget --no-verbose --tries=1 --spider http://127.0.0.1:8123/ping || exit 1 start_interval: 2s start_period: 1m ulimits: nofile: soft: 262144 hard: 262144 plausible: image: ghcr.io/plausible/community-edition:v2.1.2 restart: always command: sh -c "/entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run" healthcheck: test: wget --no-verbose --tries=1 --spider http://127.0.0.1:8000 || exit 1 start_interval: 2s start_period: 1m depends_on: - plausible_db - plausible_events_db ports: - 80:8000 - 443:8001 volumes: - plausible-data:/var/lib/plausible environment: - LOG_LEVEL=notice # replace with the URL where your dashboard would be accessible # ensure https:// scheme if you use https - BASE_URL=replace-me # use `openssl rand -base64 48` to generate a $SECRET_KEY_BASE - SECRET_KEY_BASE=replace-me - HTTP_PORT=8000 - HTTPS_PORT=8001 volumes: db-data: event-data: event-logs: plausible-data: