You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add Plausible Analytics CE (v3.2.0), a privacy-friendly web analytics alternative to Google Analytics with PostgreSQL + ClickHouse backend.
Architecture
Service
Image
cpu_shares
plausible
ghcr.io/plausible/community-edition:v3.2.0
70
plausible-db
postgres:16.6-alpine
50
plausible-events-db
clickhouse/clickhouse-server:24.12-alpine
50
Internal network: plausible-network (bridge, DB isolation)
External network: pcs (Caddy reverse proxy)
Secret generation
Cryptographic secrets (SECRET_KEY_BASE, TOTP_VAULT_KEY) are auto-generated on first start via the command block. Secrets are persisted in /DATA/AppData/$AppID/secrets/ so they survive container restarts. The $$() escaping prevents Docker Compose from interpreting shell command substitution as variable interpolation.
Database healthchecks
Both PostgreSQL and ClickHouse have healthchecks, and the Plausible service uses depends_on with condition: service_healthy. Without this, Plausible's db createdb && db migrate commands race the database startup and fail with connection errors.
Network isolation
Both database services are only on plausible-network — not on pcs. Only the Plausible web UI service is on both networks.
Registration
DISABLE_REGISTRATION: invite_only is set so only the admin can invite new users. The first user to register becomes the admin via the app's onboarding flow.
Submission Checklist
Tech Checklist
Proper file permissions — user: 0:0 on all services, volumes mapped to /DATA/AppData/$AppID/
Migration path — Plausible runs db migrate on every start
Pre-install/post-install commands — N/A
Security Checklist
Default authentication — first user becomes admin via app onboarding, invite-only registration
No hardcoded credentials — uses $APP_DEFAULT_PASSWORD for PostgreSQL
Specific version tags — plausible:v3.2.0, postgres:16.6-alpine, clickhouse-server:24.12-alpine
Functionality Checklist
Works immediately after installation
Data mapped to /DATA/AppData/$AppID/ — db/, event-data/, event-logs/, secrets/
No manual configuration required — secrets auto-generated, DB auto-created
Data persistence — databases and secrets persist across reinstall
cpu_shares set on all services — plausible: 70, plausible-db: 50, plausible-events-db: 50
✅ pre-install-cmd writes only to AppData (no user dirs; Style-A shell, no images to pin)
➖ user: field set on all services (running as 0:0) — see note
→ Tier 2 must verify (human)
Works immediately after installation (no manual config; sensible defaults)
Fresh installation tested
Uninstall / reinstall preserves data (Postgres + ClickHouse volumes)
Authentication gate works — Plausible's built-in onboarding with DISABLE_REGISTRATION: invite_only (first user becomes admin)
Notes for reviewers
New app → stays on the human flow (advisory AI pass only). All three services run as user: "0:0" but the PR ships no rationale.md; CONTRIBUTING states a rationale is required when "The app runs as user: 0:0". Volumes map exclusively to /DATA/AppData/$AppID/, so root is acceptable per the Permission Strategy — but the missing rationale.md should be confirmed/requested. Auth relies on Plausible's own invite-only onboarding (an acceptable alternative per the Security checklist); verify it's actually gated at runtime.
Next step
→ Tier 2 functional review, then tech + security review (reason: new app submission).
Generated by AI pre-check. Checklist read live from CONTRIBUTING.md on main. Labels are the machine-readable verdict; this comment is the human-readable explanation. Humans own the merge.
Only the minimum memory value was set in the resource section.
I used limits to set the maximum memory value.
postgresql : 512M
clickhouse : 1G
Plausible : 1G
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add Plausible Analytics CE (v3.2.0), a privacy-friendly web analytics alternative to Google Analytics with PostgreSQL + ClickHouse backend.
Architecture
plausible-network(bridge, DB isolation)pcs(Caddy reverse proxy)Secret generation
Cryptographic secrets (
SECRET_KEY_BASE,TOTP_VAULT_KEY) are auto-generated on first start via the command block. Secrets are persisted in/DATA/AppData/$AppID/secrets/so they survive container restarts. The$$()escaping prevents Docker Compose from interpreting shell command substitution as variable interpolation.Database healthchecks
Both PostgreSQL and ClickHouse have healthchecks, and the Plausible service uses
depends_onwithcondition: service_healthy. Without this, Plausible'sdb createdb && db migratecommands race the database startup and fail with connection errors.Network isolation
Both database services are only on
plausible-network— not onpcs. Only the Plausible web UI service is on both networks.Registration
DISABLE_REGISTRATION: invite_onlyis set so only the admin can invite new users. The first user to register becomes the admin via the app's onboarding flow.Submission Checklist
Tech Checklist
user: 0:0on all services, volumes mapped to/DATA/AppData/$AppID/db migrateon every startSecurity Checklist
$APP_DEFAULT_PASSWORDfor PostgreSQLplausible:v3.2.0,postgres:16.6-alpine,clickhouse-server:24.12-alpineFunctionality Checklist
/DATA/AppData/$AppID/—db/,event-data/,event-logs/,secrets/Documentation Checklist
Yundera/AppStore@main