Privacy-freundliche, self-hosted Webanalyse für den Digital Garden, erreichbar unter analytics.nettailor.net.
- Quelle: github.com/plausible/analytics
- Live-Instanz: analytics.nettailor.net
Zweck
Aktuell einzige getrackte Domain: garden.nettailor.net. Andere Hetzner-Dienste bewusst nicht getrackt.
Stack
Plausible CE v3.2.1 (Postgres + ClickHouse). Ursprünglich via Portainer Web Editor deployed, seit Juli 2026 als Komodo-Stack im Files-on-Host-Modus – läuft in-place aus dem Original-Ordner (run_directory), wodurch die relativen ClickHouse-Config-Pfade und die .env gültig bleiben (siehe Lessons Learned unten).
Auth-Konzept
Wie Stirling PDF komplett über Authentik Forward Auth via NPM – aber mit zwei Pfad-Ausnahmen ohne auth_request, da Plausibles Tracking-Script öffentlich erreichbar bleiben muss, unabhängig vom Login:
location /js/– liefertscript.jsauslocation = /api/event– nimmt Tracking-Events entgegen
Nur location / (Dashboard/Login) hängt hinter Authentik.
Quartz-Integration
Kein manuelles Snippet – analytics: { provider: "plausible", host: "https://analytics.nettailor.net" } in quartz.config.ts des Digital-Garden-Repos, injiziert das Tracking-Script automatisch in jede gebaute Seite.
Opt-out
Button auf der DSGVO-Seite (content/dsgvo.md) togglet localStorage.plausible_ignore – wird von Plausibles Script selbst respektiert (offizielles, eingebautes Verhalten), kein zusätzlicher Code nötig.
Sicherheitshinweis
Plausible CE hatte mit v3.2.1 einen CVE-Fix (RCE über offenen /storybook-Endpoint) – Image-Tag im Blick behalten, GitHub-Releases beobachten.
🔧 Lessons Learned: ClickHouse-Config-Dateien und bare Env-Vars als Stolperfallen
Datum: Juli 2026
Beim ursprünglichen Deploy über Portainer Web Editor (ohne Git-Stack) traten zwei nicht offensichtliche Fallen auf. Der spätere Umzug auf Komodo Files-on-Host entschärft die erste (Punkt 1) automatisch, weil Komodo das Compose im Original-Ordner ausführt und die relativen Pfade damit wieder stimmen:
- Relative Pfade in
compose.yml: Die offiziellen ClickHouse-Config-Mounts (./clickhouse/*.xml) sind relativ zum Repo-Root. Im Web Editor existiert dieser Ordner nicht automatisch. Docker legt bei fehlendem Host-Pfad automatisch ein leeres Verzeichnis statt der erwarteten Datei an – der Bind-Mount schlägt dann fehl (Verzeichnis statt Datei). Lösung: Dateien vorab in ein festes Verzeichnis kopieren (z. B. in das Docker-Volumeplausible_clickhouseunter/var/lib/docker/volumes/plausible_clickhouse/_data/) und vor dem ersten Start dort ablegen. CLICKHOUSE_DATABASE_URLohne Inline-Default: Anders alsDATABASE_URL(dort war der Wert im Compose direkt mit${POSTGRES_PASSWORD}zusammengesetzt) stand beiCLICKHOUSE_DATABASE_URLnur der bare Verweis ohne Wert. Ohne explizite Env-Variable in Portainer (http://plausible_events_db:8123/plausible_events_db) bleibt das leer, Plausible kann ClickHouse dann nicht erreichen.
Merke: Bei Compose-Dateien, die für Git-Checkouts gedacht sind (relative Pfade, .env-Dateien), aber per Portainer Web Editor deployed werden: relative Pfade grundsätzlich in absolute umwandeln und alle bare - VARNAME-Referenzen einmal gegen die Wiki-Dokumentation auf tatsächlich benötigte Defaults prüfen, statt sie unverändert zu übernehmen.