Analytics selfhosted

Matomo stellt eine leistungsstarke, datenschutzfreundliche Open-Source-Alternative zu Google Analytics dar

Analytics selfhosted
Photo by Myriam Jessier / Unsplash

In der heutigen digitalen Welt wird die Analyse von Webseiten-Traffic als unabdingbar erachtet, um das Nutzerverhalten zu verstehen und Webseiten effizient zu optimieren. Matomo (ehemals Piwik) ist eine Open-Source-Webanalyse-Plattform, die es ermöglicht, sämtliche Daten auf eigenen Servern zu verwahren. Dadurch wird eine bessere Kontrolle über die gesammelten Informationen erreicht und die Einhaltung von Datenschutzbestimmungen, wie der DSGVO, erleichtert.

Matomo – Eine datenschutzfreundliche Alternative

Matomo wird von mir als Alternative zu Google Analytics eingesetzt, da nur so sämtliche Analyse-Daten in meiner eigenen Infrastruktur verbleiben. Der Funktionsumfang von Matomo entspricht dem bekannter Analysewerkzeuge: Echtzeit-Auswertungen, detaillierte Besucherstatistiken sowie umfassendes Conversion-Tracking werden bereitgestellt.

Installation mit Docker

Wie immer wähle ich den leichtesten Weg, und füge einfach meinem docker-compose.yml einen weiteren Abschnitt hinzu. Wer in der Vergangenheit meinem modularen Aufbau gefolgt ist, hat auch jetzt wieder kein Problem mit dem Nachbau.

Eigener Webserver mit offiziellen Zertifikaten
Der Basis-Artikel für alle folgenden Services, die ich hier demonstrieren werde…
Docker - Meister-Tech-Blog
  matomo:
    container_name: matomo
    image: matomo
    restart: unless-stopped
    volumes:
      - ./matomo/html:/var/www/html
    depends_on:
      - nginx-proxy-manager
      - matomodb
    expose:
      - 80
    environment:
      - MATOMO_DATABASE_HOST=matomodb
      - MATOMO_DATABASE_ADAPTER=mysql
      - MATOMO_DATABASE_TABLES_PREFIX=matomo_
      - MATOMO_DATABASE_USERNAME=matomo
      - MATOMO_DATABASE_PASSWORD=Supergeheim
      - MATOMO_DATABASE_DBNAME=matomo
    networks:
      - web
      - backend
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

  matomodb:
    container_name: matomodb
    image: mariadb:10.11
    command: --max-allowed-packet=64MB
    restart: unless-stopped
    volumes:
      - ./matomo/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=Geheimes-Root-Passwort
      - MYSQL_DATABASE=matomo
      - MYSQL_USER=matomo
      - MYSQL_PASSWORD=Supergeheim
      - MARIADB_AUTO_UPGRADE=1
      - MARIADB_DISABLE_UPGRADE_BACKUP=1
      - MARIADB_INITDB_SKIP_TZINFO=1
    networks:
      - backend
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

Ich habe hier zwei Container hinzugefügt:

  • Matomo (matomo)Verwendet das Matomo-Image.Speichert seine Daten in ./matomo/html (gemappt auf /var/www/html).Startet automatisch neu (restart: unless-stopped).Hängt von nginx-proxy-manager und matomodb ab.Verbindet sich zur MariaDB-Datenbank mit den angegebenen Zugangsdaten.Wird in den Netzwerken web und backend betrieben, um über den NPM erreichbar zu sein und die Datenbank erreichen zu können.Hat das Label für Watchtower, um automatische Updates zu erhalten.Exponiert Port 80 für den Reverse Proxy.
  • MariaDB (matomodb)Nutzt das MariaDB 10.11-Image.Speichert die Daten in ./matomo/db (gemappt auf /var/lib/mysql).Startet mit --max-allowed-packet=64MB, um größere Anfragen zu ermöglichen.Setzt die Umgebungsvariablen für Benutzer, Passwort und Datenbank.Wird nur im backend-Netzwerk betrieben (kein direkter Zugriff von außen).Hat ebenfalls das Watchtower-Label für automatische Updates (Ich weiß: Aber für später mal nützlich...).

Einrichtung des Nginx Proxy Manager für SSL und Domain

Um Matomo über die konfigurierte Subdomain mittels SSL-Verschlüsselung bereitzustellen, wird der Nginx Proxy Manager (NPM) genutzt:

  • Proxy Host anlegen: In der NPM-Oberfläche wird ein neuer Proxy Host unter Angabe der Subdomain (z. B. analytics.meister-security.de) erstellt.
  • Details eintragen:
    • Als Ziel wird matomo eingetragen.
    • Der in der docker-compose.yml definierte Host-Port (80) wird angegeben.
    • Die Option „Block Common Exploits“ wird aktiviert, um zusätzliche Sicherheit zu gewährleisten.
  • SSL-Konfiguration:
    • Über den SSL-Tab wird ein neues SSL-Zertifikat über Let's Encrypt angefordert.
    • Optionen wie „Force SSL“ und „HTTP/2 Support“ werden aktiviert, um die Verbindung zu sichern und die Performance zu optimieren.

Nach Abschluss dieser Schritte ist der Zugriff auf die Matomo-Installation über die konfigurierte Subdomain (z. B. https://analytics.meister-security.de) möglich.

Installation und Einrichtung von Matomo

Beim erstmaligen Aufruf der Matomo-Subdomain wird der Installationsprozess gestartet:

  • Willkommensseite und Systemprüfung: Die Installation beginnt mit einer Begrüßungsseite, gefolgt von einer automatischen Systemprüfung.
  • Datenbank-Setup: Aufgrund der vorherigen Docker-Konfiguration wird automatisch eine Verbindung zur Datenbank hergestellt.
  • Erstellung eines Super-User-Kontos: Ein Administratorkonto wird eingerichtet, indem ein Benutzername, ein sicheres Passwort sowie eine E-Mail-Adresse vergeben werden.
  • Einrichtung der zu trackenden Webseite: Die erste Webseite wird hinzugefügt, indem Name, URL und Zeitzone definiert werden.
  • Integration des Tracking-Codes: Nach Abschluss des Setups wird ein JavaScript Tracking-Code generiert, der in den Quellcode der zu trackenden Webseite eingefügt werden muss.

Integration in Ghost

Hier navigiert man in zu den Einstellungen - Code Injection - Site Header und pastet den Trackingcode in das:

Erste Schritte im Matomo-Dashboard und Datenschutzkonfiguration

Nach erfolgreicher Anmeldung im Matomo-Dashboard werden erste Analysedaten erfasst. Das Dashboard bietet einen Echtzeit-Überblick über Besucher und detaillierte Analysen zu Seitenaufrufen, Herkunft und verwendeten Endgeräten.
Datenschutzrelevante Einstellungen werden unter „Verwaltung“ → „Datenschutz“ vorgenommen. Dabei stehen Optionen wie IP-Anonymisierung, Do-Not-Track-Unterstützung, User Opt-Out und Cookie-Konfiguration zur Verfügung, um den Anforderungen der DSGVO gerecht zu werden.

Innerhalb kürzester Zeit tauchen auf meinem Test-Ghost die ersten Zugriffe auf.

Das ist eigentlich erstaunlich, da ich diese Test-Domain normalerweise nicht nutze. Aber gut. Dann kann man ja mit realen Daten die Funktionalitäten testen.

Im Besucher-Log erfährt man, wie sich die Nutzer auf der Webseite bewegen.

Klicke ich nun auf ein Besucherprofil, kann ich sehen, ob der Besucher nur zufällig vorbei kam, oder ob er öfter vorbei schaut.

Auch die Echtzeit-Karte füllt sich recht schnell:

Eine Übersicht der verwendeten Geräte:

... und der eingesetzten Software:

Interessant auch, wie sich die Leute auf meinem Test-Ghost-Server umschauen:

Fazit

Matomo stellt eine leistungsstarke, datenschutzfreundliche Open-Source-Alternative zu Google Analytics dar. Die Installation erfolgt durch den Einsatz von Docker und Nginx Proxy Manager, wodurch eine unabhängige und sichere Webanalyse-Plattform auf eigenem Server realisiert wird. Durch die umfassenden Datenschutz-Einstellungen kann die Plattform optimal an individuelle rechtliche und technische Anforderungen angepasst werden.