services: plausible_db: image: postgres:16-alpine restart: always volumes: - db-data:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=postgres 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 ulimits: nofile: soft: 262144 hard: 262144 plausible: image: ghcr.io/plausible/community-edition:v2.1.2 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 ports: # Note that setting ports opens firewall for external access. # When using a reverse proxy, set to "127.0.0.1:${HTTP_PORT}:${HTTP_PORT}" to restrict access to localhost only. - ${HTTP_PORT}:${HTTP_PORT} - ${HTTPS_PORT}:${HTTPS_PORT} volumes: - plausible-data:/var/lib/plausible environment: BASE_URL: ${BASE_URL} SECRET_KEY_BASE: ${SECRET_KEY_BASE} HTTP_PORT: ${HTTP_PORT} # Setting HTTPS port enables automatic issuance of TLS certificates from Let's Encrypt. # Remove this if using a reverse proxy. HTTPS_PORT: ${HTTPS_PORT} DATABASE_URL: postgres://postgres:postgres@plausible_db:5432/plausible_db CLICKHOUSE_DATABASE_URL: http://plausible_events_db:8123/plausible_events_db DISABLE_REGISTRATION: true volumes: db-data: event-data: event-logs: plausible-data: