3 min read

Selbstgehoste und Open-Source Alternative zur Webseiten-Analyse: Matomo

In diesem Artikel will ich mal auf das Tool Matomo eingehen: wie ich es betreibe und einsetze.

Ich habe dieses Tool schon lange in Benutzung, damals habe ich ja mal den Artikel zu GoAccess geschrieben, aber danach bin ich zu Matomo gewechselt. Gründe dafür sind das umfassende Web-Dashboard und die Möglichkeit mehrere Seiten gleichzeitig zu überwachen.

Zunächst möchte ich ein paar Worte zum Grund für den Artikel verlieren: Mein ehemaliger VPS bei Netcup (500 G8) hatte 40 GB Speicher. Das ist nur genügend Speicher, um einen Snapshot anzulegen, wenn der Speicher zu mind. 50 % unbenutzt ist. Ein ziemlich merkwürdiges System, auch der zu buchbare Speicher ist nur über Umwege für Snapshots nutzbar. Daher habe ich mal ein bisschen aufgeräumt, und einiges an Dateien gelöscht. Die Matomo Instanz (welche schon bestimmt 2 Jahre im Einsatz ist) habe ich dann nochmal neu aufgesetzt. Daher jetzt ein kurzer Artikel.
Der Umzug ist aber mittlerweile abgeschlossen. In diesem Artikel kann man sich etwas zu meinem Vorgehen durchlesen.

Installation mit Docker-Compose

Wie bei den meisten anderen Dienste nutze ich auch hierfür Docker.
matomo:
 image: matomo
 container_name: matomo
 restart: always
 volumes:
   - ./matomo:/var/www/html
 environment:
   - MATOMO_DATABASE_HOST=matomo-db
   - VIRTUAL_HOST=
 env_file:
   - ./matomo-db.env
 ports:
   - 8808:80
 networks:
   matomo:
     ipv4_address: 172.20.0.60

matomo-db:
 image: mariadb
 container_name: matomo-db
 command: --max-allowed-packet=64MB
 restart: always
 volumes:
   - ./matomo-db:/var/lib/mysql
 environment:
   - MYSQL_ROOT_PASSWORD=<PASSWORD>
   - MYSQL_DATABASE=<DATABASE>
   - MYSQL_USER=<USER>
   - MYSQL_PASSWORD=<PASSWORD>
 networks:
   matomo:
     ipv4_address: 172.20.0.61

volumes:
 matomo:

networks:
 matomo:
   driver: bridge
   ipam:
     config:
       - subnet: 172.20.0.0/24

Die Datei matomo-db.env enthält: ⁣
MYSQL_PASSWORD=<PASSWORD>
MYSQL_DATABASE=<DATABASE>
MYSQL_USER=<USER>
MATOMO_DATABASE_ADAPTER=mysql
MATOMO_DATABASE_TABLES_PREFIX=matomo_
MATOMO_DATABASE_USERNAME=<USER>
MATOMO_DATABASE_PASSWORD=<PASSWORD>
MATOMO_DATABASE_DBNAME=<DBNAME>

Die Datei stellt sicher, dass beim Einrichtungsassistent die Felder bereits vorausgefüllt sind. Falls nicht, kann man diese auch manuell füllen.

Durchläuft man dann den Einrichtungsassistenten, kann man auch schon die erste Webseite anlegen. Geschieht dies, kann der entsprechende HTML Tracking Code kopiert werden, der die Benutzer dann trackt und die Ergebnisse an den Server sendet.

Ghost - Apps/Plugins für andere CMS/Dienste

Für Ghost fügt man den Trackingcode dann unter Einstellungen > Code Injection > Site Header hinzu. Hier habe ich bei meinem Blog bereits den Verweis für die lokal gehosteten FontAwesome Icons und die Zeile für die Google Site Verifikation stehen.

Nextcloud - Apps/Plugins für andere CMS/Dienste

Für Nextcloud muss man zunächst unter Apps > Tools die App Piwik/Matomo Tracking installieren. Danach gibt man über Settings > Additional Settings die Site ID und die Matomo URL ein.

WordPress - Apps/Plugins für andere CMS/Dienste

Hierfür kann man das Plugin Matomo Analytics. Danach kann man über Matomo Analytics > Einstellungen den Trackingcode einfügen.

Datenanonymisierung

Wie in den Standardeinstellungen bereits konfiguriert, werden die IP-Adressen der Nutzer so maskiert, dass 2 Bytes nicht gespeichert werden:

Do Not Track

Ebenfalls - bereit in den Standardeinstellungen so eingestellt - werden die Do Not Track Einstellungen des Browsers repräsentiert:

Welche Trackingcode Methode nehmen?

Grundsätzlich gilt hier, dass das Einbinden in vielen Fällen nicht notwendig und auch nicht die beste Methode ist.
Matomo bietet hier die Methoden des JS Trackings, Image Tracking, und das Importieren der Server Logs an. Ich verwende auf dem Blog den Code des Image Trackings.

Artikel von Mike Kuketz

Author: peterge