Skripte nach bin/ und lib/ umstrukturiert + WSL-Log-Analyse Alle .bat-Skripte liegen jetzt in bin/, alle .py in lib/, .env(.example) in bin/. setenv.bat setzt IWZ_* (inkl. IWZ_ENV) und PYTHONPATH; die Launcher rufen setenv, aktivieren die .venv falls vorhanden und starten das zugehoerige lib/-Skript. Die Python-Skripte lesen die .env ueber IWZ_ENV (Fallback bin/.env). Neu: Nutzungsanalyse per GoAccess (analyze.py/.bat) - laedt die IONOS-Access-Logs per SFTP (paramiko) und erzeugt einen HTML-Report. GoAccess laeuft ueber WSL (GOACCESS_MODE=wsl, Pfad-Uebersetzung nach /mnt/c). install_py.bat prueft WSL+GoAccess und zeigt sonst den Installationsweg. Doku in doc/analyse.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> @
4.6 KiB
Nutzungsanalyse der Website (Server-Logs + GoAccess)
Die neue Hugo-Seite verzichtet bewusst auf JavaScript-Tracking (kein Google Analytics, keine Cookies, kein Consent-Banner nötig). Stattdessen werten wir die Apache-Access-Logs aus, die IONOS ohnehin auf dem Server schreibt.
Ablauf des Skripts analyze.py:
- Verbindet sich per SFTP mit IONOS und lädt alle
access.log*-Dateien aus dem/logs-Ordner nach./logs/herunter. - Entpackt die rotierten
.gz-Logs und fügt alles zu einer Datei zusammen. - Lässt GoAccess darüberlaufen und erzeugt einen HTML-Report unter
./results/report_JJJJ-MM-TT.html, der automatisch im Browser geöffnet wird.
logs/ und results/ stehen in .gitignore und werden nicht eingecheckt.
Einmalige Einrichtung
1. Python-Abhängigkeit (paramiko)
pip install -r requirements.txt
2. GoAccess (über WSL – empfohlen)
GoAccess wird offiziell nur für Linux/macOS gebaut und ist in keinem
Windows-Paketmanager verfügbar. Unter Windows ist der zuverlässigste Weg die
WSL (Windows Subsystem for Linux). bin\install_py.bat prüft automatisch,
ob WSL und GoAccess vorhanden sind, und zeigt sonst die passenden Befehle.
WSL installieren (falls noch nicht vorhanden, PowerShell als Administrator):
wsl --install
Danach Windows neu starten und die Ubuntu-Ersteinrichtung (Benutzer/Passwort) durchlaufen.
GoAccess in der WSL installieren:
wsl -e sudo apt update
wsl -e sudo apt install -y goaccess
In der .env steht dafür (Standard):
GOACCESS_MODE=wsl
Das Skript ruft GoAccess dann per wsl goaccess ... auf und übersetzt die
Windows-Pfade automatisch nach /mnt/c/....
Alternative – nativer Windows-Build: Falls du kein WSL nutzen willst, lade den Cygwin-Build von https://goaccess.io/download, entpacke ihn (z. B. nach
C:\tools\goaccess\) und setze in der.env:GOACCESS_MODE=exe GOACCESS_EXE=C:\tools\goaccess\goaccess.exe
3. IONOS-SFTP-Zugang in .env eintragen
Die Zugangsdaten stehen im IONOS-Kundenbereich unter Hosting → SFTP/SSH.
Es sind dieselben, mit denen der /logs-Ordner erreichbar ist.
IONOS_SFTP_HOST=<z.B. home123456789.1and1-data.host oder access-5000000000.webspace-host.com>
IONOS_SFTP_PORT=22
IONOS_SFTP_USER=<SFTP-Benutzer>
IONOS_SFTP_PASSWORD=<SFTP-Passwort>
IONOS_LOGS_DIR=/logs
Die
.envsteht in.gitignoreund wird nicht eingecheckt.
Nutzung
# Logs neu laden, Report bauen und im Browser öffnen:
analyze.bat
# oder:
python analyze.py
# Nur neu auswerten (ohne erneuten Download der schon geladenen Logs):
python analyze.py --no-download
Beim wiederholten Lauf werden bereits geladene, rotierte Logs übersprungen (gleiche Dateigröße) – nur das aktuell wachsende Log wird neu geholt.
Was im Report steht
GoAccess zeigt u. a.:
- Eindeutige Besucher und Seitenaufrufe pro Tag
- Meistbesuchte Seiten (welche Ferienwohnung interessiert am meisten?)
- Referrer (woher kommen die Besucher – Google, direkte Eingabe, Links)
- Länder / Sprachen, Browser, Betriebssysteme, Geräte
- HTTP-Statuscodes (404-Fehler = tote Links finden)
- Traffic-Volumen
Aufrufe von Suchmaschinen-Bots werden herausgefiltert (--ignore-crawlers),
IP-Adressen im Report anonymisiert (--anonymize-ip).
DSGVO-Hinweis
Diese Auswertung passiert nur lokal auf deinem Rechner aus den ohnehin anfallenden Server-Logs. Es wird nichts an Dritte übertragen und kein Tracking-Code beim Besucher ausgeführt. Server-Logs mit IP-Adressen dürfen zu Sicherheits-/Betriebszwecken vorübergehend gespeichert werden; im GoAccess- Report sind die IPs zusätzlich anonymisiert. Ein Cookie-Consent-Banner ist für diese Art der Auswertung nicht erforderlich.
Fehlerbehebung
Report bleibt leer / „No data".
Dann passt das Log-Format nicht. IONOS nutzt meist das Combined Log Format
(LOG_FORMAT=COMBINED). Wirf einen Blick in die erste Zeile von
logs/access.log.current:
- Beginnt sie mit einer IP und enthält am Ende
"...Referrer" "...User-Agent"→COMBINEDist korrekt. - Fehlen Referrer/User-Agent →
LOG_FORMAT=COMMON. - Steht der Vhost-Name vor der IP →
LOG_FORMAT=VCOMBINED.
Alternativ ein eigenes Format als GoAccess---log-format-String in .env
hinterlegen (siehe https://goaccess.io/man#custom-log).
paramiko-Authentifizierungsfehler.
SFTP-Host/-User/-Passwort im IONOS-Kundenbereich gegenprüfen. Der SFTP-Benutzer
ist nicht zwingend identisch mit dem Login des Kundenbereichs.