CaddyShack

Heute veröffentliche ich CaddyShack, ein webbasiertes Analyse-Dashboard für Caddy-Server-Zugriffsprotokolle.

Der primäre Anwendungsfall ist das Deployen neben dem Caddy-Server — CaddyShack einmal starten, und das Dashboard ist jederzeit per Browser-Tab erreichbar. Es funktioniert aber genauso gut als lokales Werkzeug: Binary herunterladen, auf dem Laptop starten, und Logdateien bei Bedarf hineinwerfen. Keine Installation, keine Konfiguration, kein persistenter Zustand.

In beiden Fällen erhält man innerhalb von Sekunden ein vollständiges Bild des eigenen Traffics — Anfragevolumen über die Zeit, geografische Verteilung auf einer interaktiven Weltkarte, Aufschlüsselung nach Browser und Betriebssystem, HTTP-Statuscodeanalyse und die beliebtesten URIs.

Warum ich es gebaut habe

Ich betreibe Caddy auf meinen eigenen Servern und möchte gelegentlich verstehen, was dort ankommt. Vollständige Analytics-Plattformen sind dafür überdimensioniert — sie erfordern Accounts, senden Daten irgendwohin und bringen operativen Mehraufwand mit sich. Ich wollte einfach etwas, das ich auf eine Logdatei richten kann und sofort Antworten liefert.

CaddyShack ist von Grund auf zustandslos. Die Logdatei wird im Browser während des HTTP-Requests geparst. Serverseitig wird nichts gespeichert, keine Session wird gehalten, und die Logdaten verlassen niemals den eigenen Rechner.

Privatsphäre als Standard

IP-Adressen werden vor jeder Verarbeitung anonymisiert. Die geografischen Auswertungen nutzen das kostenlose DB-IP Lite-Dataset, das optional heruntergeladen und eingebunden werden kann — keine Anfragen an externe Dienste zur Laufzeit.

Loslegen

Ein Binary für die eigene Plattform herunterladen oder das Container-Image von GHCR holen:

docker run -p 8080:8080 ghcr.io/bjblazko/caddyshack:latest

Im Repository liegt eine Docker-Compose-Datei für ein dauerhafteres Setup bei. Images sind für linux/amd64 und linux/arm64 verfügbar.

CaddyShack ist Open Source unter der Apache-2.0-Lizenz. Auf der Produktseite oder im GitHub-Repository geht es los.

← Zurück zum Blog