Systemvoraussetzungen
Wer mehrere eigenständige Websites gleichzeitig betreibt, braucht für jede von ihnen eine einfache Besucherstatistik, aber weder eine eigene bezahlte Analytics-Lizenz je Projekt noch einen Cookie-Consent-Banner für jede einzelne Seite. Plausible Analytics ist eine quelloffene, selbstgehostete Statistiklösung, die Seitenaufrufe, verweisende Websites und Herkunftsländer zählt, ohne dafür ein Cookie zu setzen, also eine kleine Textdatei, die ein Server sonst im Browser hinterlegt, um einen Besucher wiederzuerkennen. Statt eines Cookies berechnet Plausible für jeden Besucher einen täglich neu erzeugten Hash, eine kurze, nicht umkehrbare Zeichenfolge aus IP-Adresse, Browserkennung (User-Agent) und der aufgerufenen Domain. Ein Cookie entfällt dadurch vollständig. Laut Plausibles eigener Datenschutz-Dokumentation läuft diese Berechnung ausschließlich im Arbeitsspeicher des Servers, und weder die IP-Adresse noch der vollständige User-Agent werden dabei gespeichert. Eine einzelne, selbstgehostete Plausible-Instanz bedient dabei beliebig viele Websites gleichzeitig, jede als eigene Site, Plausibles Bezeichnung für einen einzelnen Website-Eintrag mit eigenem Dashboard und eigenem Tracking-Schnipsel. Die folgende Tabelle nennt die Komponenten und Versionen, die dieser Aufbau in der aktuellen Community Edition voraussetzt.
| Komponente | Version / Anforderung |
|---|---|
| Plausible Community Edition | v3.2.1 (aktueller Self-Hosting-Release, Docker-Image ghcr.io/plausible/community-edition) |
| Docker Engine und Docker Compose | Steuert drei Container über eine gemeinsame compose.yml |
| PostgreSQL | postgres:16-alpine, speichert Konten, Teams, Websites und Einstellungen |
| ClickHouse | clickhouse/clickhouse-server:24.12-alpine, speichert die einzelnen Ereignisdaten; die CPU braucht laut Plausibles eigenen Voraussetzungen mindestens den Befehlssatz SSE 4.2 oder, auf ARM-Servern, NEON |
| BASE_URL und SECRET_KEY_BASE | Pflicht-Umgebungsvariablen der Instanz; BASE_URL muss auf die öffentlich erreichbare Domain zeigen |
| Tracking-Schnipsel je Website | Eigenes, pro Site erzeugtes Script unter dem Pfad /js/pa-<eindeutige-ID>.js |
Systemarchitektur
Mehrere Sites laufen auf demselben Server, weil jedes eingehende Ereignis serverseitig mit der Kennung der jeweiligen Site markiert und in ClickHouse gespeichert wird, einer spaltenorientierten Datenbank, die auf große Mengen einzelner Ereignisse statt auf einzelne Datensätze mit vielen Feldern ausgelegt ist. Das folgende Diagramm zeigt, wie ein Seitenaufruf auf zwei unterschiedlichen Websites am Ende jeweils nur im eigenen Dashboard ankommt.
flowchart TD
A[Besucher ruft Website A im Browser auf] --> B[Das site-eigene Script von Website A laedt]
C[Besucher ruft Website B im Browser auf] --> D[Das site-eigene Script von Website B laedt]
B --> E[Beide Scripts senden das Pageview-Ereignis an dieselbe Plausible-Instanz]
D --> E
E --> F[Plausible berechnet einen taeglich rotierenden Hash aus IP-Adresse, Browserkennung und Domain im Arbeitsspeicher]
F --> G[Das Ereignis wird mit der jeweiligen Site-ID in ClickHouse gespeichert, ohne die IP-Adresse]
G --> H[Dashboard von Website A zeigt nur Ereignisse mit der Site-ID von Website A]
G --> I[Dashboard von Website B zeigt nur Ereignisse mit der Site-ID von Website B]
Zugriff auf die einzelnen Sites lässt sich getrennt vergeben. Ein Team in Plausible kennt fünf Rollen mit Zugriff auf alle Sites des Teams: Owner, Admin, Editor, Billing und Viewer. Für Personen, die nur eine einzelne Website sehen sollen, gibt es zusätzlich Gastrollen, Guest Editor und Guest Viewer, die sich direkt in den Einstellungen dieser einen Website vergeben lassen, ohne die betreffende Person dem gesamten Team hinzuzufügen. Ein Nutzerkonto kann außerdem Mitglied mehrerer Teams gleichzeitig sein und zwischen ihnen wechseln, was für eine Agentur mit mehreren Kunden-Teams praktisch ist.
Weil das Tracking-Script keine Cookies setzt und nichts auf dem Endgerät des Besuchers speichert oder ausliest, geht Plausible in einer selbst in Auftrag gegebenen Rechtseinschätzung davon aus, dass für diese Art der Datenerhebung keine Einwilligung nach Artikel 5 Absatz 3 der ePrivacy-Richtlinie nötig ist, jener EU-Regel, die eine Zustimmung ausdrücklich nur beim Speichern oder Auslesen von Informationen auf dem Endgerät verlangt. Die Einschätzung stammt von einem auf Datenschutz spezialisierten Anwalt im Auftrag von Plausible und verweist zusätzlich auf eine Leitlinie der französischen Aufsichtsbehörde CNIL. Sie ist keine förmliche Freigabe durch eine Aufsichtsbehörde und ersetzt keine eigene rechtliche Prüfung im Einzelfall, besonders wenn eine Organisation zusätzlich personenbezogene Daten aus anderen Quellen verarbeitet.
Schritt-für-Schritt-Umsetzung
Docker Compose startet die gemeinsame Plausible-Instanz mit Postgres und ClickHouse
Die Instanz läuft einmal für das gesamte Portfolio an Websites und muss dafür nicht für jede Website neu aufgesetzt werden. Eine compose.yml mit drei Diensten reicht für den Start: die Datenbank für Konten und Einstellungen, die Ereignisdatenbank und die eigentliche Plausible-Anwendung.
services:
plausible_db:
image: postgres:16-alpine
restart: always
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=ein-sicheres-passwort
plausible_events_db:
image: clickhouse/clickhouse-server:24.12-alpine
restart: always
volumes:
- event-data:/var/lib/clickhouse
- event-logs:/var/log/clickhouse-server
plausible:
image: ghcr.io/plausible/community-edition:v3.2.1
restart: always
depends_on:
- plausible_db
- plausible_events_db
ports:
- "8000:8000"
environment:
- BASE_URL=https://analytics.beispiel-firma.de
- SECRET_KEY_BASE=ein-mindestens-64-zeichen-langer-zufallswert
- DATABASE_URL=postgres://postgres:ein-sicheres-passwort@plausible_db:5432/plausible_db
- CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db
volumes:
db-data:
event-data:
event-logs:
Der Server startet mit docker compose up -d und ist danach unter der in BASE_URL hinterlegten Domain erreichbar. SECRET_KEY_BASE verschlüsselt Sitzungsdaten der Plausible-Anwendung selbst und hat nichts mit den einzelnen Tracking-Schnipseln der angeschlossenen Websites zu tun.
Jede Website entsteht als eigener Site-Eintrag im Dashboard
Eine neue Website kommt über die Schaltfläche Add website im Plausible-Dashboard hinzu. Dabei genügt der reine Domainname ohne https:// und ohne www., zum Beispiel beispiel-shop.de für die Adresse https://www.beispiel-shop.de. Jede so angelegte Website bekommt eine eigene Site-Kennung und ein eigenes Dashboard, unabhängig davon, wie viele weitere Websites bereits im selben Team laufen. Nach dem Anlegen zeigt der Bereich Site Installation in den Einstellungen genau dieser Website den zugehörigen Tracking-Schnipsel, zusammen mit einem Umschalter für zusätzliche Messungen wie das automatische Erfassen von Datei-Downloads oder Formular-Abschicken.
Der Tracking-Schnipsel bindet eine Next.js-Website an ihre eigene Site an
Seit Oktober 2025 zeigt Plausible beim Anlegen einer Website keinen austauschbaren Schnipsel mit einer gemeinsamen Datei script.js und einem zusätzlichen Attribut data-domain mehr, sondern ein für genau diese eine Site erzeugtes Script unter einem eindeutigen Pfad wie /js/pa-6_srOGVV9SLMWJ1ZpUAbG.js. Die Zugehörigkeit zur richtigen Site steckt damit im Dateinamen des Scripts selbst, nicht mehr in einem zusätzlichen HTML-Attribut. Bei einer selbstgehosteten Instanz zeigt die src-Angabe auf die eigene Domain der Plausible-Instanz statt auf plausible.io. In einer Next.js-Anwendung mit App Router gehört dieses Script in das Root-Layout, damit es auf jeder Seite lädt.
import Script from "next/script";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="de">
<body>
<Script
defer
src="https://analytics.beispiel-shop.de/js/pa-6_srOGVV9SLMWJ1ZpUAbG.js"
strategy="afterInteractive"
/>
{children}
</body>
</html>
);
}
Für zusätzliche Optionen wie das manuelle Auslösen von Seitenaufrufen in einer Single-Page-Anwendung folgt ein zweiter, kleiner Script-Block mit dem Aufruf plausible.init({ autoCapturePageviews: false }), der dieselbe Aufgabe früher über zusätzliche data-*-Attribute am Script-Tag gelöst hat. Ältere Selbsthosting-Anleitungen und Tutorials zeigen deshalb noch die frühere Variante mit gemeinsamer Datei und Domain-Attribut, die Plausibles eigene Dokumentation inzwischen als ältere Schnipsel-Form bezeichnet:
<script defer data-domain="beispiel-shop.de" src="https://analytics.beispiel-shop.de/js/script.js"></script>
Diese ältere Variante funktioniert technisch weiter und wird für neue Websites nur nicht mehr automatisch ausgegeben.
Häufige Fehlerquellen
- Ein Viertel der Besuche fehlt, ohne dass irgendwo ein Fehler auftaucht. Manche Ad-Blocker und Netzwerkfilter wie Pi-hole blockieren jedes Script, das von einer fremden Analytics-Domain lädt, unabhängig davon, wie datensparsam es tatsächlich arbeitet. Laut Plausibles eigener Dokumentation gehen dadurch ohne Gegenmaßnahme typischerweise 5 bis 25 Prozent der Besuche verloren. Fix: das Script über einen Reverse-Proxy ausliefern, einen Server, der Anfragen im Namen der eigenen Domain an einen anderen Dienst weiterleitet, zum Beispiel über eine Vercel-Rewrite-Regel oder einen Nginx-Proxy, sodass das Script wie eine hauseigene Datei aussieht.
- Ereignisse kommen beim selbst eingerichteten Proxy nicht im Dashboard an, obwohl der Server mit HTTP 202 antwortet. Fehlt beim Proxy der Header
X-Forwarded-Formit der echten Besucher-IP oder enthält er stattdessen die IP des eigenen Servers, verwirft Plausibles Bot-Filter das Ereignis lautlos, während die Antwort trotzdem HTTP 202 Accepted bleibt. Fix: den HeaderX-Forwarded-Forkorrekt weiterreichen und die tatsächlich erkannte IP-Adresse mit dem Debug-HeaderX-Debug-Requestprüfen. - Eine Consent-Management-Plattform blockiert das Script, obwohl Plausible keine Cookies setzt. Manche Cookie-Banner-Lösungen laden jedes als Analytics eingestufte Script pauschal erst nach einer Einwilligung, unabhängig davon, ob es tatsächlich ein Cookie setzt. Fix: das Plausible-Script in der jeweiligen Consent-Plattform als notwendig oder cookiefrei einstufen, damit es unabhängig von einer Einwilligung lädt.
- Der eigene Proxy liefert nach einem Plausible-Update eine veraltete Script-Version aus. Wird das Script über einen selbst betriebenen Proxy zwischengespeichert, bleibt nach einem Versions-Update der Plausible-Instanz oft die alte Datei im Cache liegen. Das eingebaute Prüfwerkzeug für die Installation kann die Integration dann nicht mehr bestätigen, auch wenn einzelne Ereignisse noch ankommen. Fix: den Cache des Proxys nach jedem Plausible-Update leeren oder eine kurze Gültigkeitsdauer für die Script-Datei setzen.
- Mehrere Länderdomains lassen sich mit dem aktuellen Tracking-Schnipsel nicht mehr in einem gemeinsamen Dashboard zusammenführen. Bis Oktober 2025 ließen sich mehrere Domains wie
beispiel.deundbeispiel.nlüber denselben, gemeinsamen Schnipsel in eine einzige Statistik einspeisen. Das seither ausgegebene, pro Site eindeutige Script unterstützt das laut Plausibles eigenem Migrationsleitfaden nicht mehr. Fix: für diesen Fall die ältere, mit dem Attributdata-domainarbeitende Schnipsel-Form einsetzen oder jede Domain als eigene Site mit eigenem Dashboard führen.
Häufig gestellte Fragen
Wie zählt Plausible Besucher, ohne Cookies zu setzen?
Plausible zählt Besucher über einen täglich rotierenden Hash aus IP-Adresse, Browserkennung und der aufgerufenen Domain, der ausschließlich im Arbeitsspeicher des Servers berechnet wird. Dieser Hash ersetzt eine dauerhafte Kennung: Er ändert sich jeden Tag durch einen neuen Zufallswert, ein sogenanntes Salt, sodass sich derselbe Besucher an zwei aufeinanderfolgenden Tagen nicht wiedererkennen lässt. Weder die IP-Adresse noch der vollständige User-Agent werden dabei gespeichert, laut Plausibles eigener Datenschutz-Dokumentation. Genau deshalb braucht die Zählung kein Cookie und keine andere dauerhafte Kennung auf dem Endgerät des Besuchers.
Braucht eine mit Plausible erfasste Website einen Cookie-Consent-Banner?
Eine mit Plausible erfasste Website braucht nach Plausibles eigener Rechtseinschätzung für die Analytics-Funktion keinen Cookie-Consent-Banner, weil das Script keine Cookies setzt und nichts auf dem Endgerät des Besuchers speichert oder ausliest. Diese Einschätzung stützt sich auf Artikel 5 Absatz 3 der ePrivacy-Richtlinie, der eine Einwilligung nur beim Speichern oder Auslesen von Informationen auf dem Endgerät verlangt. Eine im Auftrag von Plausible erstellte Rechtsanalyse eines auf Datenschutz spezialisierten Anwalts kommt zu diesem Schluss und verweist zusätzlich auf eine Leitlinie der französischen Aufsichtsbehörde CNIL. Eine förmliche Bestätigung einer deutschen oder europäischen Aufsichtsbehörde für diese Einschätzung gibt es bislang nicht, weshalb Organisationen mit hohem Haftungsrisiko die Einschätzung vor dem Einsatz selbst prüfen sollten.
Wie lassen sich mehrere Websites einem einzigen Plausible-Team zuordnen?
Mehrere Websites lassen sich einem einzigen Plausible-Team zuordnen, indem jede Website als eigener Site-Eintrag im selben Team angelegt wird. Teammitglieder erhalten dabei eine von fünf Rollen mit Zugriff auf alle Sites des Teams: Owner, Admin, Editor, Billing oder Viewer. Für externe Personen, die nur eine einzelne Website sehen sollen, bietet Plausible zusätzlich Gastrollen direkt in den Einstellungen dieser einen Website, ohne diese Personen dem ganzen Team hinzuzufügen. Ein Nutzerkonto kann außerdem Mitglied mehrerer Teams gleichzeitig sein und zwischen ihnen wechseln.
Warum zeigt Plausible weniger Besucher an als Google Analytics?
Plausible zeigt oft weniger Besucher an als Google Analytics, weil beide Werkzeuge unterschiedlich zählen und unterschiedlich stark filtern. Google Analytics nutzt Cookies und Sitzungen, um Nutzerpfade über mehrere Besuche hinweg zusammenzusetzen, und filtert Bots nach eigenen Regeln. Plausible zählt Besucher über IP-Adresse und Browserkennung ohne Cookies und filtert bekannte Bots und Crawler nach eigener Angabe strenger heraus. Ein Unterschied von 10 bis 20 Prozent zwischen beiden Werkzeugen gilt laut Plausibles eigener Dokumentation als normal, zusätzliche Lücken entstehen häufig durch Ad-Blocker, die das Script ganz verhindern.