Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DDI-Suite
Selbst gehostete DDI-Lösung (DNS, DHCP, IP-Adressverwaltung) im Stil von VitalQIP: ein zentraler Management-Server verwaltet Netze und Adressen und rollt Konfigurationen auf Agents aus, die BIND 9 und Kea DHCP steuern.
„DDI-Suite“ ist ein Arbeitstitel. Alle Namen sind zentral konfigurierbar (ADR 0018).
Stand
| Meilenstein | Status |
|---|---|
| M0 Fundament (Repo, Build, Lint, CI, Entwicklungsumgebung, Architektur, ADRs) | abgeschlossen (v0.1.0) |
| M1 Server-Kern (Schema, Anmeldung lokal/OIDC/TOTP, Rollen, Audit, Lizenz, REST-API, Netze/Adressen, Oberfläche) | abgeschlossen (v0.2.0) |
| M2 Config-Generator (BIND/Kea aus dem Datenmodell, geprüft mit echtem BIND 9.18/9.20 und Kea 2.6/3.2) | abgeschlossen (v0.3.0) |
| M3 Agent verwaltet (Registrierung, mTLS, signierte Revisionen, Anwenden mit Prüfung/Health-Check/Rollback, Leases; End-to-End-Test mit BIND und Kea) | abgeschlossen (v0.4.0) |
| M4–M6 | geplant, siehe ARCHITECTURE.md |
Der Management-Server verwaltet Netze und Adressen (QIP-artige Tabelle), Benutzer, Lizenz und Audit-Log. Aus den Daten erzeugt er die BIND- und Kea-Konfiguration als unveränderliche Revisionen (Ausrollen). Die Agents (ddi-agent-dns, ddi-agent-dhcp) registrieren sich mit einem Einmal-Token, holen die signierten Revisionen über mTLS, prüfen und aktivieren sie, rollen bei Fehlern zurück und melden Zustand und Leases (Agents, Leases).
Dokumentation
Entwicklung
Voraussetzungen
| Werkzeug | Version | Wofür |
|---|---|---|
| Go | 1.27 (siehe go.mod) |
Server, Agents |
| Node.js | 24 LTS | Weboberfläche |
| GNU make, bash | – | Build-Einstieg, Skripte |
| buf | 1.73 | Protobuf-Lint und -Generierung (Netzzugriff auf buf.build) |
| golangci-lint | 2.14 | Go-Linter |
| shellcheck | 0.11 | Shell-Linter |
| Docker mit Compose | aktuell | Entwicklungsumgebung, Integrationstests |
Unter Linux installiert scripts/ci/install-tools.sh buf, golangci-lint und shellcheck in den gepinnten Versionen mit Prüfsummenkontrolle.
Häufige Befehle
make help # alle Ziele
make build # Weboberfläche und Binaries für das eigene System nach bin/
make test # Go- und Frontend-Tests
make lint # alle Linter inkl. Lizenz-Header-Prüfung
make fmt # formatieren
make generate # Protobuf-Code neu erzeugen
make release # Tarballs für linux/amd64 und linux/arm64 plus SHA256SUMS nach dist/
Entwicklungsumgebung
make dev-up # PostgreSQL 17, BIND 9.20, Kea DHCPv4 3.2 starten
make dev-smoke # prüfen, dass alles antwortet
make dev-admin # ersten Administrator anlegen (gibt Einmal-Passwort aus)
make run-server # Server auf http://127.0.0.1:8080
cd web && npm run dev # Frontend mit Hot Reload, leitet API-Aufrufe an den Server weiter
make dev-down # stoppen (Daten bleiben erhalten)
| Dienst | Erreichbar unter |
|---|---|
| PostgreSQL | 127.0.0.1:5432 (DDI_DEV_PG_PORT), Benutzer/DB ddi, Passwort nur für Entwicklung (siehe Compose-Datei) |
| BIND | 127.0.0.1:5353 UDP/TCP (DDI_DEV_DNS_PORT), Zonen dev.test und 2.0.192.in-addr.arpa |
| Kea DHCPv4 | im Compose-Netz, bedient 192.0.2.0/24 über Relay (Testnetz nach RFC 5737) |
CI
Gitea Actions unter .gitea/workflows/: Go (Lint, Tests mit Race-Detector, govulncheck), Protobuf, Web (ESLint, Typecheck, Tests, npm audit, Build), Shell/SPDX, Release-Probebau und ein Compose-Smoke-Test. Tags v* erzeugen ein Release mit Artefakten. Anforderungen an den Runner stehen in ADR 0003.
Lizenz
Der Management-Server (server/, web/, tools/) ist proprietär. Agents, Protokoll und gemeinsamer Code (agent/, proto/, internal/, deploy/, scripts/, test/) stehen unter der Apache-2.0-Lizenz. Details in LICENSE.