Datenschutzorientierte Webanalyse: Selbst betriebenes Plausible mit Google Search Console einrichten
Die Webanalyse hat sich seit Inkrafttreten der DSGVO im Jahr 2018 erheblich verändert. Tatsächlich verwenden die meisten Unternehmen weiterhin Google Analytics 4 auf ihren Websites – nicht weil es das beste Tool für die Aufgabe ist, sondern weil eine Migration teuer erscheint und die Alternativen als Nischenlösungen gelten. Wir sind Mitte 2024 von Google Analytics zu selbst betriebenem Plausible CE gewechselt, und die Ergebnisse sind eine detaillierte Dokumentation wert.
Warum wir Google Analytics verlassen haben
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-Einwilligungsbanner, eine Consent-Management-Plattform, Auftragsverarbeitungsverträge und eine dokumentierte Rechtsgrundlage für jede Übermittlung von Analysedaten an Google in den USA. Das Einwilligungsbanner selbst führt zu einer systematischen Lücke in Ihren Daten: Jeder Besucher, der die Einwilligung ablehnt, fehlt in den Daten; je nach Gestaltung des Banners und Publikum kann dies einen erheblichen Anteil ausmachen, was in jeder von Ihnen gesammelten Kennzahl einen blinden Fleck hinterlässt.
Das Problem besteht darin, dass dies einen unpraktikablen Zielkonflikt schafft. Entweder akzeptieren Sie unvollständige Daten aus dem zustimmenden Segment, oder Sie betreiben GA4 ohne Einwilligung und akzeptieren rechtliche Risiken. Keine der beiden Optionen ist eine saubere Antwort für eine Organisation, die sowohl Datenqualität als auch Compliance ernst nimmt.
Plausible CE ist auf einer anderen Grundlage aufgebaut. Das Tracking-Skript arbeitet standardmäßig ohne Cookies, speichert keine personenbezogenen Daten und ist für den Betrieb ohne Einwilligungsbanner ausgelegt. Dieses Konzept beruht auf konkreten technischen Entscheidungen. Plausible setzt keine Cookies, erzeugt keinen dauerhaften Nutzeridentifikator zwischen Sitzungen und überträgt keine Daten an Drittanbieter-Server, wenn es selbst betrieben wird. Die ePrivacy-Richtlinie (im Vereinigten Königreich PECR) verlangt eine Einwilligung, wenn Informationen auf dem Gerät eines Nutzers gespeichert oder abgerufen werden – genau das soll ein Skript ohne Cookies vermeiden. Die Leitlinien 2/2023 des EDPB legen diese Regel jedoch so aus, dass auch einige Techniken ohne Cookies erfasst werden, etwa Pixel- und IP-basiertes Tracking. Prüfen Sie daher die Bewertung für Ihre eigene Installation.
Die Architektur: ClickHouse als Analyse-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 seine umfangreiche Analyseinfrastruktur 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 Websites mit Hunderten von Millionen Ereignissen ohne Schemaänderungen oder einen Umbau der Infrastruktur verarbeiten kann, was wichtig ist, wenn Sie Wachstum erwarten.
Die Einrichtung mit Docker Compose 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
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
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:
Setzen Sie DISABLE_REGISTRATION ausdrücklich. Mit true ist die Registrierung nach der Erstellung Ihres ersten Kontos geschlossen; mit false kann sich jeder registrieren, der die URL einer öffentlich zugänglichen Instanz findet. Die aktuelle Dokumentation von Plausible CE nennt invite_only als Standardwert. 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 den Detailgrad der Logs. 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, genügt zum Einbinden des Trackings auf einer beliebigen Website ein einziges Tag im HTML-<head>:
<script defer data-domain="yourdomain.com"
src="https://plausible.yourdomain.com/js/script.js"></script>
Plausible bietet optionale Skripterweiterungen, die sich in einer einzelnen Anfrage bündeln lassen. Wir verwenden die Variante, die Erfassung von Dateidownloads, Unterstützung für hashbasiertes Routing in Single-Page-Anwendungen, Erfassung ausgehender Links, benutzerdefinierte Eigenschaften von Seitenaufrufen, Umsatzerfassung und mit Tags versehene 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 ist unkomprimiert etwa 2.4 KB groß. Das Skript von Google Analytics 4 ist etwa 45 KB groß. Das ist kein marginaler Unterschied – bei jedem Seitenaufruf muss ungefähr 20-mal weniger JavaScript heruntergeladen werden, und weniger Skriptcode zum Parsen und Ausführen kann die Core-Web-Vitals-Werte auf schwächeren Geräten und langsamen Verbindungen verbessern.
Integration mit Google Search Console
Das stärkste Argument dafür, GA4 beizubehalten, ist seine Verbindung zu Google Search Console, die es ermöglicht, organische Suchanfragedaten mit dem Verhalten auf der Website zu korrelieren. Plausible unterstützt diese Integration nativ, und es ist die Funktion, die den Wechsel für inhaltsorientierte Websites praktikabel macht.
Die Einrichtung erfordert eine verifizierte Search-Console-Property und eine OAuth-Autorisierung in Plausibles Website-Einstellungen. Bei einer selbst betriebenen Instanz wird außerdem ein Google-Cloud-OAuth-Client mit aktivierter Search Console API benötigt, der Plausible über GOOGLE_CLIENT_ID und GOOGLE_CLIENT_SECRET übergeben wird (in der obigen Compose-Datei bereits eingetragen). Nach der Verbindung erscheinen Suchanfragen unter Sources, wenn Sie Google auswählen, mit Klicks sowie in der erweiterten Ansicht mit Impressionen, Klickrate und durchschnittlicher Position. Aufgelistet werden nur Suchanfragen mit mindestens einem Klick.
Ein Konfigurationsdetail, das regelmäßig Probleme verursacht: Die gewählte GSC-Property muss die von Plausible erfasste Domain tatsächlich abdecken. Eine GSC-Property, die als https://www.yourdomain.com mit der URL-Präfix-Methode verifiziert wurde, verbindet sich nicht mit einer Plausible-Website, die yourdomain.com ohne Subdomain erfasst. Verwenden Sie wenn möglich den Property-Typ „Domain“ in GSC – er deckt alle Subdomains und Protokolle ab und macht die Plausible-Verbindung unkompliziert.
GSC-Daten in Plausible sind nicht in Echtzeit verfügbar: Plausible dokumentiert eine Verzögerung von etwa 24–36 Stunden, wie in Search Console selbst, und empfiehlt, Daten von vor zwei Tagen zu prüfen. Das ist eine Google-Einschränkung, keine Einschränkung von Plausible. Für regelmäßige Prüfungen der Analysedaten ist das selten ein praktisches Hindernis.
DSGVO-Compliance ohne Cookie-Banner
Die rechtliche Einordnung sollte präzise formuliert werden. Nach der ePrivacy-Richtlinie ist eine Einwilligung 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 dauerhaften sitzungsübergreifenden Nutzeridentifikator. Jeder Seitenaufruf wird unabhängig verarbeitet. Das, was einem Nutzeridentifikator am nächsten kommt, ist ein täglicher Hash, der aus der IP-Adresse des Besuchers, dem User-Agent-String, der Website-Domain und einem serverseitigen Salt abgeleitet wird, das alle 24 Stunden ausgetauscht und gelöscht wird. Unverarbeitete IP-Adressen und User-Agent-Strings werden nicht gespeichert. Plausible erklärt, damit keine personenbezogenen Daten zu erheben. Da die IP-Adresse zur Berechnung des Hashs dennoch kurzzeitig verarbeitet wird, ist die Frage, ob dies außerhalb des Begriffs personenbezogener Daten gemäß Artikel 4(1) DSGVO liegt, eine rechtliche Bewertung und keine technische Garantie. Das ist unsere Einschätzung für das eigene Deployment von tva, keine Rechtsberatung; prüfen Sie sie mit Ihrer Datenschutzberatung.
Das praktische Ergebnis auf Grundlage dieser Bewertung: kein Einwilligungsbanner, keine Consent-Management-Plattform, keine Optimierung der Einwilligungsquote und keine Datenlücke durch abgelehnte Einwilligung. Die Analysedaten, die Sie sehen, spiegeln Ihr Publikum wesentlich besser wider als nur die Teilmenge, die bereit ist, Tracking zu akzeptieren. Besucher, die das Skript blockieren, werden allerdings weiterhin nicht erfasst.
Unsere Datenschutzerklärung erfordert jetzt einen einzigen prägnanten Absatz zur Webanalyse, 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 Standardvertragsklauseln und Datenverarbeitungsbedingungen. Die Reduzierung des rechtlichen Aufwands ist für eine kleine Organisation erheblich.
Infrastrukturaufwand und Leistungsvergleich
Wir betrieben beide Werkzeuge vor der endgültigen Ablösung von GA4 60 Tage lang parallel und konnten sie dadurch direkt vergleichen. Die Seitenaufrufzahlen unterschieden sich um weniger als 3 %.
Der aufschlussreichere Unterschied lag bei den Zahlen eindeutiger Besucher. Plausible verzeichnete im selben Zeitraum etwa 12 % mehr eindeutige Besucher als GA4 mit erteilter Einwilligung. Das ist zu erwarten: Unter den GA4-Nutzern, die ihre Einwilligung erteilen, sind stärker interessierte Besucher überrepräsentiert, die weniger wahrscheinlich Ad-Blocker oder datenschutzorientierte Browser verwenden. Plausible, das Besucher ohne die Hürde einer Einwilligung erfasst, gibt ein genaueres Bild der Gesamtreichweite, wobei Besucher, die sein Skript blockieren, weiterhin nicht erfasst werden. GA4 bei erteilter Einwilligung gibt ein Verhaltensprofil Ihrer engagiertesten Nutzer. Keines ist falsch – sie beantworten leicht unterschiedliche Fragen.
Der Ressourcenbedarf der Infrastruktur ist gering. 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 umfangreichen Importen historischer Daten. 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.
Tatsächlich geht es bei der Entscheidung zum Wechsel jedoch nicht primär um Infrastrukturkosten oder Funktionsgleichheit. Es geht darum, auf welche Art von Daten Sie Entscheidungen aufbauen möchten. Webanalysen, die eine Einwilligung erfordern, erzeugen eine systematisch verzerrte Stichprobe. Webanalyse ohne Cookies und ohne Einwilligung erzeugt ein wesentlich vollständigeres Bild mit weniger Details pro Besucher. Für eine Marketing-Website, bei der die primäre Frage lautet „Welche Seiten und Quellen führen zu Anfragen?“, ist das vollständigere Bild nützlicher als das detaillierte Profil einer selbstselektierten Teilmenge.
Weiterführende 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 für den Produktivbetrieb bereitstellen: Vollständiges Docker-Setup mit Traefik Reverse Proxy
- Mandantenfähigen Entwicklungsstack mit Docker aufbauen: Vollständiges Setup für skalierbare Kunden-Deployments