Blog-Statistiken Ohne Tracking — Mit GoAccess Und Nginx

Das Problem mit Web-Analytics

Wer einen Blog betreibt, will natürlich wissen: Liest das überhaupt jemand? Welche Beiträge kommen an? Woher kommen die Besucher?

Die Standardantwort der Branche lautet seit Jahren: Google Analytics. Oder eines der dutzend Tracking-Tools, die alle dasselbe tun — ein JavaScript-Snippet in jede Seite einbauen, das den Besucher verfolgt. IP-Adresse, Browser-Fingerprint, Verweildauer, Scrollverhalten, manchmal sogar Mausbewegungen.

Dafür braucht man dann ein Cookie-Banner. Und eine ausufernde Datenschutzerklärung. Und ein schlechtes Gewissen.

Die Alternative: Server-Logs auswerten

Die Sache ist: Der Webserver weiß bereits alles, was ich wissen muss. Jeder Seitenaufruf erzeugt einen Eintrag im Access-Log:

192.168.x.x - - [11/Mar/2026:19:30:00 +0100] "GET /posts/stryker-cyberangriff-2026/ HTTP/2.0" 200 12345 "https://example.com/" "Mozilla/5.0 ..."

Da steht drin: Wann, welche Seite, welcher Browser, woher verlinkt. Ohne JavaScript, ohne Cookies, ohne dass der Besucher irgendetwas davon mitbekommt.

GoAccess: Das unterschätzte Werkzeug

GoAccess ist ein Open-Source Log-Analyzer, der genau das tut. Geschrieben in C, extrem schnell, läuft komplett auf dem Server. Es liest die vorhandenen nginx-Logfiles und generiert daraus ein übersichtliches HTML-Dashboard.

Was ich damit sehe:

  • Eindeutige Besucher pro Tag — wie viele verschiedene Leute waren hier?
  • Meistbesuchte Seiten — welche Beiträge werden gelesen?
  • Referrer — woher kommen die Besucher? (Suchmaschine, Social Media, Direktaufruf)
  • Browser und Betriebssysteme — brauche ich mir über IE11-Kompatibilität Sorgen machen? (Spoiler: Nein.)
  • HTTP-Statuscodes — gibt es kaputte Links oder Fehler?
  • Zeitverteilung — wann wird der Blog gelesen?

Das Setup

Die Einrichtung ist erfrischend simpel:

1. Eigenes Logfile für den Blog

In der nginx-Konfiguration bekommt der Blog sein eigenes Access-Log, getrennt von anderen Seiten auf demselben Server:

1
access_log /var/log/nginx/blog-access.log;

2. GoAccess installieren und konfigurieren

Auf Debian/Ubuntu:

1
apt install goaccess

Ein kleines Script liest die Logs und generiert einen statischen HTML-Report:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
# stats-update.sh — GoAccess Report generieren

LOG="/var/log/nginx/blog-access.log"
DB="/var/lib/goaccess"
OUT="/var/www/blog/stats/index.html"

goaccess "$LOG" -o "$OUT" --log-format=COMBINED \
  --persist --restore --db-path="$DB" \
  --anonymize-ip --ignore-crawlers

Was die Flags tun:

FlagFunktion
--persist / --restoreSpeichert Daten dauerhaft in einer lokalen DB — historische Statistiken bleiben erhalten, auch wenn Logfiles rotiert werden
--anonymize-ipIP-Adressen werden gekürzt, bevor sie gespeichert werden
--ignore-crawlersBots und Crawler werden aus der Statistik gefiltert

3. Cron-Job für stündliche Updates

0 * * * * /opt/blog/stats-update.sh >/dev/null 2>&1

4. Zugang absichern

Das Stats-Dashboard wird per Basic Auth geschützt. Kein öffentlicher Zugang:

1
2
3
4
location /stats/ {
    auth_basic "Statistiken";
    auth_basic_user_file /etc/nginx/.htpasswd-blog;
}

Was ich NICHT brauche

  • ❌ Kein JavaScript-Tracking auf der Seite
  • ❌ Keine Cookies
  • ❌ Kein Cookie-Banner
  • ❌ Keine externe Datenübertragung an Drittanbieter
  • ❌ Keine DSGVO-Einwilligung für Analytics nötig
  • ❌ Keine Datenbank (MySQL/PostgreSQL) für ein Analytics-Tool
  • ❌ Keine PHP-Runtime

Das Ergebnis

Ein sauberes Dashboard, das mir alles zeigt was ich wissen will — und den Besucher komplett in Ruhe lässt. Kein Tracking-Script, das die Seite verlangsamt. Kein “Wir verwenden Cookies”-Popup. Keine Daten, die an Google oder sonst wen fließen.

Die Daten bleiben auf meinem Server. Die IP-Adressen werden anonymisiert. Und das Ganze läuft mit einem 50-Kilobyte-Binary, das in Millisekunden fertig ist.

Fazit

Wenn man sich fragt, warum so viele Websites ein Cookie-Banner vor den eigentlichen Inhalt schieben: Das muss nicht sein. Die Logfiles, die der Webserver sowieso schreibt, enthalten alles was man für sinnvolle Blog-Statistiken braucht. Man muss sie nur auswerten.

GoAccess macht genau das. Einfach, schnell, ohne Ballast. Und der Besucher merkt nichts — so wie es sein sollte.