2 min read

Websitestatistiken: Datenschutzfreundliche Lösung zu Google Analytics & Co

Viele Seiten binden Google Analytics als Statistiktool ein, ich bin absolut dagegen und habe mich nach Open Source Alternativen umgesehen, bei denen die Daten erst gar nicht auf Server anderer gelangen. Matomo und Open Web Analytics fielen mir dann direkt positiv auf; beide Lösungen lassen sich selbst hosten und per Java Script einbinden.

Dann stieß ich während der Recherche aber auf noch eine Lösung, die mir perfekt geeignet schien: GoAccess. So kam ich dann auf die Idee, mit GoAccess mein eigenes Statistikdashboard zu bauen, um ohne jegliche Java Script Einbindung auszukommen. So bekommt GoAccess seine Daten aus den Nginx Logs, eine simple Idee die aber doch recht detaillierte Statistiken liefert. Klar wird man damit Google Analytics nicht vollständig ersetzen können; Daten über z.B. Demographie fehlen einfach. Aber sind diese Dinge wirklich wichtig? Gerade für kleinere Webseiten sind diese doch eher irrelevant.

Also gesagt getan, hier nun die Installationsschritte:

apt-get install goaccess

(Für Ubuntu/Debian, Installationsschritte für andere Distros)

Nun kann man sich direkt schon mal Logs im Terminal aufrufen:

zcat -f /path/to/nginx/logs/access.log.* | goaccess --log-format=COMBINED

Dann habe ich einen entsprechenden Crontab Eintrag angelegt, der jede Stunde die Logs in eine html Datei schreibt:

crontab -e

*/59 * * * * zcat -f /path/to/nginx/logs/access.log* > /path/output/file && goaccess -f /path/output/file --log-format=COMBINED > /path/to/www/report.html

Nun noch die Nginx Konfigurationsdatei anpassen und den Zugriff per http Authentifizierung einrichten:

location /report/ {
    alias /config/goaccess/;
    auth_basic "Restricted";
    auth_basic_user_file /config/nginx/.htpasswd;
}

Passwort festlegen:

htpasswd -c .htpasswd username

Und schon lässt sich nach dem anmelden das Dashboard aufrufen:

GoAccess bietet dann die folgende Statistiken, die aus den Nginx Logs stammen:

  • Einzigartige Besucher pro Tag
  • Angeforderte Dateien (URLs)
  • Nicht gefundene URLs (404s)
  • Hostnamen und IPs und Geolokalisierung der Besucher
  • Betriebssysteme & Browser
  • Zeitverteilung
  • Weiterleitende URLs / Seiten
  • Google Suchphrasen
  • HTTP Status Codes

Autor: peterge