- Go 62.1%
- JavaScript 13.6%
- Python 11.4%
- CSS 10.1%
- HTML 1.9%
- Other 0.9%
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S6XikBV8v7cMGExeJBPVEf |
||
|---|---|---|
| contrib | ||
| docs | ||
| examples/conf.d | ||
| internal | ||
| web | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| Makefile | ||
| README.md | ||
Cerberdash
Ein Dashboard für die eigenen Dienste – eine Datei (7 MB, kein Node, keine Datenbank), für Menschen und Agenten aus derselben Quelle.
- Ruhe ist der Normalzustand: Läuft alles, steht da „Alles ruhig.“ und eine ruhige Liste. Nur was ausfällt, bekommt Farbe und Platz.
- Das Licht ist der Status: Der Schein der Seite wird warm, wenn etwas ausfällt – lesbar aus drei Metern.
- Absicht statt Navigation: Lostippen,
Enteröffnet.1–9öffnen die ersten Dienste. - Drei Köpfe: Dienste kommen aus
conf.d/*.yml, melden sich selbst an (POST /api/v1/announce, gefunden per DNS-SRV oder mDNS) oder kommen aus NetBox. - Maschinen zuerst mitgedacht:
/api/v1/state,/api/v1/events(SSE),/llms.txtund ein MCP-Endpunkt/mcpfür KI-Assistenten.
Konzept und Begründungen: docs/CONCEPT.md
Ausprobieren
make run # baut, legt .run/conf.d aus examples/ an, lauscht auf :8080
Braucht Go ≥ 1.24 (Debian 13: apt install golang-go).
Konfiguration
# conf.d/10-meine.yml
dashboard:
title: Heyer Systems
services:
- id: netbox
title: NetBox
url: https://netbox.intra.heyer.systems/
group: Infrastruktur
tags: [ipam]
Dateien werden nach Namen sortiert geladen; bei gleicher id überschreibt eine spätere Datei
einzelne Felder (90-local.yml). Änderungen wirken nach höchstens zwei Sekunden, ohne Neustart.
Format und Reihenfolge: CONCEPT.md, Abschnitt 3.
Betrieb über Umgebung oder Flags:
| Variable | Bedeutung |
|---|---|
CERBERDASH_LISTEN |
Adresse, Standard :8080 |
CERBERDASH_CONF / CERBERDASH_CONF_EXTRA |
beschreibbares conf.d / weitere, nur lesend (:-getrennt) |
CERBERDASH_ADMIN_TOKEN |
Freigabe und Entfernen von Anmeldungen |
CERBERDASH_ANNOUNCE_TOKENS |
Anmeldungen mit einem dieser Tokens sind sofort aktiv |
CERBERDASH_NETBOX_URL, CERBERDASH_NETBOX_TOKEN |
NetBox-Services mit Custom Field dashboard = true |
Alle Variablen: CONCEPT.md, Abschnitt 7.
Dienste anmelden
contrib/cerberdash-announce --id homepage-1 --title Homepage --url http://192.168.40.31:3000/
Das Skript findet Cerberdash selbst (CERBERDASH_URL → DNS-SRV _cerberdash._tcp.<domain> →
mDNS) und braucht nur Python 3. Ohne Token wartet die Anmeldung auf Freigabe:
curl -H "Authorization: Bearer $ADMIN" http://dash:8080/api/v1/pending
curl -X POST -H "Authorization: Bearer $ADMIN" http://dash:8080/api/v1/pending/homepage-1/approve
Installation
make build
install -m 0755 cerberdash /usr/local/bin/
install -m 0644 contrib/cerberdash.service /etc/systemd/system/
mkdir -p /etc/cerberdash/conf.d && cp examples/conf.d/*.yml /etc/cerberdash/conf.d/
systemctl enable --now cerberdash
Deine Dateien liegen in /etc/cerberdash/conf.d, was Cerberdash selbst schreibt (Anmeldungen,
NetBox) in /var/lib/cerberdash/conf.d. Später als iac-App (iac-cerberdash).
Kein Login: Wer den Port erreicht, sieht das Dashboard. Ins private Netz oder hinter einen Reverse Proxy mit Anmeldung. Schreiben geht nur mit Token.
Entwicklung
make test # go vet, go test, Python-Syntax
make size # Größe von Binärdatei und Oberfläche
Aufbau: CONCEPT.md, Abschnitt 8.