Datenschutzorientierte Analytics: Selbstgehostetes Plausible mit Google Search Console einrichten
Die Landschaft des Analytics-Trackings hat sich seit Inkrafttreten der DSGVO im Jahr 2018 erheblich verändert. In der Realität betreiben die meisten Organisationen immer noch Google Analytics 4 auf ihren Websites — nicht weil es das beste Tool für die Aufgabe ist, sondern weil eine Migration kostspielig erscheint und die Alternativen nischenartig wirken. Wir sind Mitte 2024 von Google Analytics zu selbstgehostetem Plausible CE gewechselt, und die Ergebnisse sind eine detaillierte Dokumentation wert.
Warum wir Google Analytics verließen
Google Analytics 4 ist eine leistungsfähige Plattform. Der Compliance-Aufwand ist jedoch erheblich. GA4 in einer wirklich DSGVO-konformen Konfiguration zu betreiben erfordert ein Cookie-Zustimmungsbanner, eine Consent-Management-Plattform, Datenverarbeitungsverträge und sorgfältiges regionales Routing, um zu verhindern, dass IP-Adressen und Nutzeridentifikatoren die EU verlassen. Das Zustimmungsbanner selbst führt zu einer systematischen Lücke in Ihren Daten: Unabhängige Studien legen nahe, dass zwischen 30 % und 50 % der Besucher die Zustimmung vollständig ablehnen, was in jeder von Ihnen gesammelten Kennzahl einen blinden Fleck hinterlässt.
Das Problem besteht darin, dass dies einen unlösbaren Kompromiss schafft. Entweder akzeptieren Sie unvollständige Daten aus dem zustimmenden Segment, oder Sie betreiben GA4 ohne Zustimmung und akzeptieren rechtliche Exposition. Keine der beiden Optionen ist eine saubere Antwort für eine Organisation, die sowohl Datenqualität als auch Compliance ernst nimmt.
Plausible CE ist um eine andere Prämisse herum aufgebaut. Das Tracking-Skript ist standardmäßig cookieless, sammelt keine personenbezogenen Daten und erfordert kein Zustimmungsbanner gemäß DSGVO. Dies ist keine Marketing-Sprache — es ist eine spezifische technische Aussage. Plausible setzt keine Cookies, erzeugt keinen persistenten Nutzeridentifikator zwischen Sitzungen und überträgt keine Daten an Drittanbieter-Server, wenn es selbst gehostet wird. Die ICO-Leitlinien zu PECR und die Stellungnahmen der Artikel-29-Datenschutzgruppe zu Analytics bestätigen beide, dass cookieloses, nicht-fingerprinting-basiertes Analytics die Zustimmungsanforderung gemäß der ePrivacy-Richtlinie nicht auslöst.
Die Architektur: ClickHouse als Analytics-Engine
Plausible CE wird mit zwei Datenbanken geliefert: ClickHouse für die Ereignisspeicherung und PostgreSQL für die Konfiguration. ClickHouse ist eine spaltenorientierte Datenbank, die für analytische Workloads entwickelt wurde — dieselbe Engine, die Yandex für ihre Analytics-Infrastruktur im großen Maßstab entwickelt hat. Für eine Website mit Zehntausenden monatlicher Seitenaufrufe ist der Performance-Vorteil gegenüber einer zeilenbasierten Datenbank kaum wahrnehmbar. Aber die Architektur bedeutet, dass Plausible Sites mit Hunderten von Millionen Ereignissen ohne Schema-Änderungen oder Infrastruktur-Redesign verarbeiten kann, was wichtig ist, wenn Sie Wachstum erwarten.
Das Docker Compose-Setup ist unkompliziert. Plausible bietet eine offizielle Konfiguration mit allen erforderlichen Diensten. Unser Deployment läuft neben Traefik auf einer Hetzner CX21-Instanz (2 vCPUs, 4 GB RAM) in Helsinki:
services:
plausible_db:
image: postgres:16-alpine
restart: always
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
plausible_events_db:
image: clickhouse/clickhouse-server:24.3.3.102-alpine
restart: always
volumes:
- event-data:/var/lib/clickhouse
- ./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.4
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
environment:
- BASE_URL=https://plausible.yourdomain.com
- SECRET_KEY_BASE=${SECRET_KEY_BASE}
- DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@plausible_db:5432/plausible_db
- CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db
- DISABLE_REGISTRATION=true
labels:
- "traefik.enable=true"
- "traefik.http.routers.plausible.rule=Host(`plausible.yourdomain.com`)"
- "traefik.http.routers.plausible.entrypoints=websecure"
- "traefik.http.routers.plausible.tls.certresolver=letsencrypt"
- "traefik.http.services.plausible.loadbalancer.server.port=8000"
volumes:
db-data:
event-data:
Das DISABLE_REGISTRATION=true-Flag ist nicht optional. Nach der Erstellung Ihres ersten Kontos ist jede öffentlich zugängliche Instanz ohne dieses Flag offen für die Registrierung durch jeden, der die URL findet. Generieren Sie SECRET_KEY_BASE mit openssl rand -base64 64 und bewahren Sie es in einer .env-Datei außerhalb der Versionskontrolle auf.
Die beiden ClickHouse-XML-Konfigurationsdateien, die im Volumes-Abschnitt referenziert werden, steuern die Log-Ausführlichkeit. Ohne sie protokolliert ClickHouse auf einem Niveau, das die Festplatte einer kleinen Instanz innerhalb von Tagen füllt. Plausibles Repository enthält diese Dateien; kopieren Sie sie in ein clickhouse/-Unterverzeichnis neben Ihrer docker-compose.yml, bevor Sie den Stack starten.
Das Tracking-Skript einbinden
Sobald der Stack läuft, ist das Hinzufügen von Tracking zu einer beliebigen Website ein einzelnes Tag im HTML-<head>:
<script defer data-domain="yourdomain.com"
src="https://plausible.yourdomain.com/js/script.js"></script>
Plausible wird mit optionalen Skript-Erweiterungen geliefert, die sich in einer einzelnen Anfrage bündeln lassen. Wir verwenden die Variante, die Datei-Download-Tracking, hash-basiertes Routing für Single-Page-Applications, Outbound-Link-Tracking, benutzerdefinierte Seitenaufruf-Eigenschaften, Umsatz-Tracking und getaggte Ereignisse enthält:
<script defer data-domain="yourdomain.com"
src="https://plausible.yourdomain.com/js/script.file-downloads.hash.outbound-links.pageview-props.revenue.tagged-events.js"></script>
Das kombinierte Skript wiegt unkomprimiert etwa 2,4 KB. Das Google Analytics 4-Skript ist etwa 45 KB groß. Das ist kein marginaler Unterschied — es ist 20× weniger JavaScript-Parsing bei jedem Seitenladen, was die Core Web Vitals-Scores auf schwächeren Geräten und langsamen Verbindungen messbar beeinflusst.
Google Search Console-Integration
Das stärkste Argument für das Beibehalten von GA4 ist seine Verbindung zu Google Search Console, die es ermöglicht, organische Suchanfragedaten mit dem On-Site-Verhalten zu korrelieren. Plausible unterstützt diese Integration nativ, und es ist die Funktion, die den Wechsel für content-getriebene Seiten praktikabel macht.
Das Setup erfordert eine verifizierte Search-Console-Property und eine OAuth-Autorisierung in Plausibles Site-Einstellungen. Nach der Verbindung erscheinen GSC-Daten als separate Aufschlüsselung im Traffic-Quellen-Bereich und zeigen Suchanfragen, Impressionen, Click-Through-Raten und durchschnittliche Position neben Ihren Standard-Seitenaufruf- und Sitzungsdaten.
Ein Konfigurationsdetail, das regelmäßig Probleme verursacht: Die Domain in Plausible muss exakt mit dem GSC-Property-Typ übereinstimmen. Eine GSC-Property, die als https://www.yourdomain.com mit der URL-Prefix-Methode verifiziert wurde, verbindet sich nicht mit einer Plausible-Site, die yourdomain.com ohne Subdomain trackt. Verwenden Sie wo möglich den Domain-Property-Typ in GSC — er deckt alle Subdomains und Protokolle ab und macht die Plausible-Verbindung unkompliziert.
GSC-Daten in Plausible haben dieselbe 48-Stunden-Verzögerung wie die Search Console API selbst. Das ist eine Google-Einschränkung, keine Plausible-Limitation. Für operative Analytics-Reviews ist das selten ein praktisches Hindernis.
DSGVO-Compliance ohne Cookie-Banner
Die Compliance-Position ist es wert, mit Präzision formuliert zu werden. Unter DSGVO und der ePrivacy-Richtlinie ist eine Zustimmung erforderlich, wenn Sie Informationen auf dem Gerät eines Nutzers speichern oder darauf zugreifen. Cookies und localStorage lösen beide diese Anforderung aus. Plausible speichert nichts auf dem Gerät des Nutzers: keine Cookies, keine localStorage-Einträge, keine IndexedDB-Schreibvorgänge.
Plausible generiert auch keinen persistenten sitzungsübergreifenden Nutzeridentifikator. Jeder Seitenaufruf wird unabhängig verarbeitet. Die nächste Annäherung an einen Nutzeridentifikator ist ein täglicher Hash, der aus einer Kombination der IP-Adresse des Besuchers, dem User-Agent-String und einem rotierenden serverseitigen Salt abgeleitet wird — ein Wert, der sich alle 24 Stunden ändert und nicht rückverfolgt werden kann, um die ursprüngliche IP-Adresse zu ermitteln. Dieses Design stellt Plausible außerhalb der Definition der Verarbeitung personenbezogener Daten gemäß Artikel 4(1) DSGVO.
Das praktische Ergebnis: kein Zustimmungsbanner, keine Consent-Management-Plattform, keine Consent-Rate-Optimierung und keine Datenlücke durch abgelehnte Zustimmung. Die Analytics-Daten, die Sie sehen, spiegeln Ihr tatsächliches Publikum wider, nicht die Teilmenge, die bereit ist, Tracking zu akzeptieren.
Unsere Datenschutzerklärung erfordert jetzt einen einzigen präzisen Absatz zu Analytics, der korrekt beschreibt, was Plausible sammelt und wo die Daten gespeichert sind. Der entsprechende GA4-Abschnitt erstreckte sich zuvor über mehrere Absätze und erforderte spezifische Verweise auf Googles Standard-Vertragsklauseln und Datenverarbeitungsbedingungen. Die Reduzierung des rechtlichen Aufwands ist für eine kleine Organisation erheblich.
Infrastrukturaufwand und Performance-Vergleich
Beide Tools 60 Tage lang parallel zu betreiben, bevor der GA4-Cutover erfolgte, ermöglichte einen direkten Vergleich. Die Seitenaufrufzahlen unterschieden sich um weniger als 3 % — konsistent mit Plausibles eigenen veröffentlichten Genauigkeitszahlen, die cookieless Deployments mit zugestimmtem GA4 vergleichen.
Der aufschlussreichere Unterschied lag bei den einzigartigen Besucherzahlen. Plausible verzeichnete im selben Zeitraum etwa 12 % mehr einzigartige Besucher als zugestimmtes GA4. Das ist zu erwarten: Die consent-gebende Teilmenge der GA4-Nutzer neigt zu engagierteren Besuchern, die weniger wahrscheinlich Ad-Blocker oder datenschutzorientierte Browser verwenden. Plausible, das alle Besucher ohne Zustimmungsreibung trackt, gibt ein genaueres Bild der Gesamtreichweite. GA4 im Consent-Modus gibt ein Verhaltensportrait Ihrer engagiertesten Nutzer. Keines ist falsch — sie beantworten leicht unterschiedliche Fragen.
Der Infrastruktur-Footprint ist bescheiden. ClickHouse verbraucht im stabilen Betrieb etwa 400 MB RAM. PostgreSQL fügt etwa 80 MB hinzu. Die CPU-Auslastung ist während des normalen Betriebs vernachlässigbar und nur kurzzeitig erhöht bei Massen-Historien-Datenimporten. Für Organisationen, die bereits einen Hetzner-Server mit Reservekapazität betreiben, sind die Grenzkosten für das Hinzufügen von Plausible zu einem bestehenden Stack praktisch null.
In der Realität geht es bei der Entscheidung zum Wechsel jedoch nicht primär um Infrastrukturkosten oder Feature-Parität. Es geht darum, auf welche Art von Daten Sie Entscheidungen aufbauen möchten. Analytics, die Zustimmung erfordern, produzieren eine systematisch verzerrte Stichprobe. Cookieless Analytics ohne Zustimmung produziert ein vollständiges Bild mit weniger Details pro Besucher. Für eine Marketing-Website, bei der die primäre Frage lautet „Welche Seiten und Quellen treiben Anfragen an", ist das vollständige Bild nützlicher als das detaillierte Portrait einer selbst selektierten Teilmenge.
Verwandte Beiträge
- Traefik Reverse Proxy: Der vollständige Self-Hosting-Leitfaden für HTTPS und SSL-Automatisierung
- n8n auf Hetzner Cloud selbst hosten: Vollständiges Docker-Setup-Tutorial
- React-Anwendungen in der Produktion bereitstellen: Vollständiges Docker-Setup mit Traefik Reverse Proxy
- Multi-Tenant-Entwicklungsstack mit Docker aufbauen: Vollständiges Setup für skalierbare Client-Deployments