../../_images/kup6s-icon-deployment.svg

Plausible Analytics

Self-hosted Plausible Community Edition web analytics deployed at stats.cloud.kup.tirol. It serves the tracking snippets of roughly 25 customer and internal sites. The deployment was migrated from the legacy Docker Swarm host groot in July 2026 — see How the migration from groot worked.

Overview

Plausible CE consists of a single Elixir/Phoenix app backed by two databases. PostgreSQL stores users, sites, and settings. ClickHouse stores the analytics events.

Component

Implementation

App

ghcr.io/plausible/community-edition deployment, 1 replica, port 8000

PostgreSQL

CloudNativePG plausible-postgres (PG 18, 2 instances, longhorn)

ClickHouse

Single-replica StatefulSet plausible-clickhouse (longhorn PVC)

Ingress

Traefik, cert-manager TLS, host stats.cloud.kup.tirol

Access

Open the app at https://stats.cloud.kup.tirol. Registration is disabled (DISABLE_REGISTRATION=true); accounts are managed by inviting users from an existing account. The tracking snippet URL embedded in customer sites did not change during the migration.

Architecture

Concern

Implementation

Source

dp-infra/plausible/ (CDK8S, TypeScript), ArgoCD-managed

ArgoCD application

plausible-app-* (registered in argoapps/apps/infra/plausible.ts)

Database backups

barman-cloud plugin to backups-plausible-kup6s (fsn1), daily plus WAL

ClickHouse backups

Longhorn recurring backup group default (daily, retain 7, crash-consistent)

Secrets

ESO from application-secrets namespace (plausible-app-secrets, plausible-smtp-secrets)

Mail

Mailjet SMTP, sender stats@kleinundpartner.at

GeoIP

MaxMind GeoLite2-City, downloaded by the app at start

Warning

SECRET_KEY_BASE and TOTP_VAULT_KEY in plausible-app-secrets must never be rotated casually. Rotating them invalidates encrypted fields in PostgreSQL, including 2FA secrets.

The ClickHouse server config disables the heavy system log tables and puts a 30-day TTL on query_log. This mirrors the upstream Community Edition reference configuration and prevents the unbounded system-log growth that filled the disk on the legacy host. See Plausible configuration reference for details.

DNS

*.cloud.kup.tirol is a wildcard CNAME that still points to the legacy host groot. stats.cloud.kup.tirol is an explicit CNAME to lb.kup6s.net in the domaindiscount24 zone. The explicit record overrides the wildcard (RFC 4592).

Updating

Bump the pinned versions in dp-infra/plausible/config.yaml, run npm run build, commit, and push to main. ArgoCD syncs the change automatically. Read the upstream release notes before major version bumps; Plausible CE requires stepping through major versions one at a time.

Documentation