Wir haben Google Analytics durch Matomo ersetzt, eine Open-Source-Webanalysesoftware, die wir auf unserer eigenen Infrastruktur in der Schweiz betreiben. In diesem Artikel beschreiben wir, warum wir diesen Schritt gemacht haben, wie wir die Migration technisch umgesetzt haben, welche Nine-Dienste dabei zum Einsatz kamen, und was wir im Vergleich gewonnen und verloren haben.
Warum wir Google Analytics ersetzt haben
Google Analytics ist für viele Unternehmen die Standardlösung für Web-Tracking. Wir haben es ebenfalls seit Jahren genutzt. Dennoch waren wir schon länger unzufrieden damit, dass alle Besucherdaten unserer Website an Google-Server in den USA übertragen werden.
Das ist nicht nur eine philosophische Frage. Als Schweizer Managed-Services-Anbieter, der Datensouveränität und Transparenz gegenüber Kunden propagiert, war es schwer zu erklären, warum unsere eigenen Analytics-Daten bei einem US-amerikanischen Konzern landen. Konkret lagen folgende Punkte auf der Waage:
- Datenhoheit: Besucherdaten von nine.ch, docs.nine.ch, Cockpit und deplo.io wurden an Google in die USA übertragen, ohne dass wir direkten Einfluss auf Speicherdauer und Verwendung hatten.
- Cookie-Consent-Pflicht: GA4 setzt Tracking-Cookies, was eine explizite Einwilligung erfordert. Das führte dazu, dass ein relevanter Anteil der Besucher Analytics ablehnte und unsere Daten damit unvollständig waren.
- DSGVO-Konformität: Die Rechtslage bezüglich GA4 und DSGVO ist in der EU und der Schweiz seit Jahren umstritten. Mehrere Datenschutzbehörden haben GA4 als nicht konform eingestuft.
- Konsistenz: Wir empfehlen Kundinnen und Kunden, ihre Infrastruktur in der Schweiz zu betreiben. Die eigene Analytics-Lösung sollte diesem Anspruch genügen.
Die Entscheidung für Matomo fiel schnell: Open Source, selbst hostbar, cookielos betreibbar, aktiv entwickelt und mit einem vergleichbaren Funktionsumfang für unsere Bedürfnisse.
Was wir tracken: Vier Properties
Wir betreiben vier digitale Properties, für die wir Analytics benötigen:
| Property | Technologie |
|---|---|
| Website (nine.ch) | Hugo (Static Site) |
| docs.nine.ch | Docusaurus v3 |
| Cockpit (Kundenportal) | Ruby on Rails |
| deplo.io (Deploio-Landingpage) | Google Tag Manager (Matomo additiv ergänzt) |
Jede Property hat ein eigenes Dashboard in Matomo, Benutzerberechtigungen lassen sich pro Property granular vergeben.
Die technische Umsetzung
Server und Infrastruktur
Matomo 5.10.0 läuft auf einem virtuellen Nine Managed Server auf unserer Schweizer Infrastruktur. Für den Betrieb kommen folgende Nine-Dienste zum Einsatz:
- Managed Server mit Nginx und PHP-FPM (PHP 8.5.6)
- Managed MySQL (Version 8.0 auf Ubuntu 24.04 LTS, Support bis Mai 2029)
- Tägliche Backups (inkl. im Managed-Server-Angebot)
- Puppet für die gesamte Server-Konfiguration und das Deployment
- Nginx-Härtung via Puppet: Sensible Matomo-Verzeichnisse (
tmp/,config/,lang/,misc/,vendor/) sind von aussen nicht erreichbar, PHP-Ausführung ist auf das Root-Verzeichnis beschränkt
Die Konfiguration des Servers, inklusive der Nginx-Regeln, wird vollständig über Puppet verwaltet. Das bedeutet: keine manuelle Konfiguration auf dem Server, alles ist versioniert und reproduzierbar.
Cookielos und ohne Consent
Matomo bietet einen cookielosen Betriebsmodus, der keine Tracking-Cookies setzt. Das hat eine wichtige Konsequenz: Da keine Cookies gesetzt werden, ist keine Einwilligung (Consent) der Besucher erforderlich. Der Cookie-Banner auf nine.ch enthält damit keine Analytics-Kategorie mehr, und die Daten sind vollständig, unabhängig davon, ob ein Besucher Cookies akzeptiert oder ablehnt.
Die Analyse basiert auf anonymisierten Daten. Die letzten zwei Bytes der IP-Adresse werden vor der Speicherung entfernt, sodass eine persönliche Identifikation technisch nicht möglich ist. Die Daten verlassen unsere Server nicht.
Die Rechtsgrundlage ist Art. 6 Abs. 1 lit. f DSGVO (berechtigte Interessen).
Integration in die verschiedenen Properties
nine.ch (Hugo): Das Matomo-Tracking-Snippet wird direkt im <head> eingebunden, via Hugo-Template. Ein hugo.IsProduction-Guard stellt sicher, dass auf Staging- und lokalen Umgebungen kein Tracking stattfindet. Gleichzeitig wurden im Cookie-Consent-Script die GA4-Initialisierung und die Analytics-Kategorie entfernt. Bestehende GA-Cookies (_ga, _gid) werden beim ersten Seitenaufruf gecleart.
docs.nine.ch (Docusaurus v3): Das GA4-Preset aus docusaurus.config.ts wurde entfernt. Das Matomo-Snippet wird über den headTags-Mechanismus von Docusaurus eingebunden, ebenfalls mit einem NODE_ENV === "production"-Guard. GA-Cookie-Cleanup ist im selben Script integriert.
Cockpit (Ruby on Rails): Das Snippet wird im Application-Layout (application.html.erb) eingebunden, per Rails.env.production?-Guard und mit korrektem CSP-Nonce, damit der Content Security Policy Header nicht verletzt wird.
deplo.io: Die Deploio-Landingpage wird von unseren Kollegen bei Renuo betreut. Renuo setzt für ihre eigenen Auswertungen weiterhin Google Analytics ein. Den Matomo-Tag haben sie additiv im GTM ergänzt, sodass Besucherdaten nun ebenfalls in unserer Matomo-Instanz landen.
Content Security Policy
Da Matomo von einer eigenen Subdomain läuft, mussten die CSP-Header der Website angepasst werden. Die Matomo-Subdomain wurde in script-src, img-src und connect-src aufgenommen. Das deckt das Laden von matomo.js, das Tracking-Pixel (Fallback) und die XHR/Beacon-Requests an matomo.php ab.
Datenschutzerklärung
Die Datenschutzerklärung auf nine.ch wurde aktualisiert: Der Abschnitt zu Google Analytics wurde durch einen Abschnitt zu Matomo ersetzt, der den cookielosen Betrieb, den Schweizer Datenstandort und die Anonymisierung der IP-Adressen erklärt.
Was wir im Vergleich zu Google Analytics gewonnen haben
- Vollständige Daten: Kein Sampling, keine Datenschwellen (GA4 blendet Werte unter 10 Ereignissen aus), keine Einschränkungen durch Consent-Verweigerung.
- Unbegrenzte Datenspeicherung: GA4 speichert standardmässig 14 Monate, maximal 26 Monate. Bei Matomo liegt die Entscheidung bei uns.
- Einzelne Besucher-Logs: Matomo erlaubt, einzelne Sessions einzusehen, was bei GA4 nicht möglich ist.
- Datensouveränität: Alle Daten bleiben auf unserer eigenen Infrastruktur in der Schweiz.
- Kein Dritter involviert: Google hatte Zugriff auf unsere Besucherdaten. Das ist nun nicht mehr der Fall.
- DSGVO-Konformität ohne Aufwand: Kein Consent-Dialog für Analytics, keine Abhängigkeit von Third-Party-Urteilen.
Was wir im Vergleich nicht mehr haben
Ehrlichkeit gehört dazu: Es gibt Features, die GA4 bietet und die Matomo in der Basisversion nicht hat.
- Search Console Integration (Keywords): GA4 konnte mit der Google Search Console verbunden werden, was die organischen Keywords sichtbar machte. Dieses Feature ist bei Matomo kostenpflichtig. Für uns ist das der einzige relevante Verlust, den wir mittelfristig mit dem Plugin schliessen werden.
- Google Signals / Demografiedaten: GA4 konnte bei eingeloggten Google-Nutzern Demografiedaten erheben, was wir später ebenfalls via Plugin nachholen werden.
- Predictive Metrics: Machine-Learning-Vorhersagen von GA4 setzen ein Datenvolumen voraus, das für uns nicht relevant ist.
- BigQuery-Export: Für unsere Zwecke nicht benötigt.
Fazit
Die Migration war technisch überschaubar, der Aufwand hat sich gelohnt. Wir haben jetzt eine Analyse-Lösung, die zu unserem Selbstverständnis passt: Daten auf eigener Infrastruktur, in der Schweiz, ohne Dritte. Der cookielose Betrieb ist ein Bonus, der unsere Datenbasis vollständiger macht als vorher.
Wer ähnliche Anforderungen hat, also Datensouveränität, DSGVO-Konformität und vollständige Daten ohne Consent-Problematik, dem empfehlen wir Matomo auf einem Managed Server als einfachen und wartungsarmen Weg.
Bei Fragen zur Umsetzung meld dich gerne bei uns.





























































































