sir_melonchenandClaude Opus 5.5 2555028956
ci / Protobuf (push) Successful in 12s
ci / Web (lint, test, audit, build) (push) Successful in 2m44s
ci / Shell and licence headers (push) Successful in 21s
ci / Go (lint, test, vuln) (push) Successful in 6m22s
ci / Release build (dry run) (push) Successful in 3m51s
ci / Integration (real BIND and Kea) (push) Successful in 2m33s
ci / Development environment (compose) (push) Successful in 17s
ci / End-to-end (server, agents, BIND, Kea) (push) Successful in 4m14s
install / Installation (debian:12) (push) Successful in 4m54s
install / Installation (debian:13) (push) Successful in 5m6s
install / Installation (ubuntu:22.04) (push) Successful in 5m16s
install / Installation (rocky:9) (push) Successful in 7m28s
install / Installation (ubuntu:24.04) (push) Successful in 8m58s
release / release (push) Successful in 4m11s
fix: agents enrolled by hand run as systemd services
An agent installed without token and enrolled with the command of the web
interface never ran as a service: the installer left the unit disabled and
the root-run enrollment left an identity the service user could not read.
The installer now always enables the agent unit (it waits for the
identity via ConditionPathExists), enroll as root hands the state over to
the service user and enables and starts the unit, and rerunning or
upgrading the installer repairs agents enrolled by hand. The web interface
shows the matching installer command next to the enroll command.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 02:44:03 +02:00

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 Pull und Push (Betriebsmodi, „Jetzt ausrollen“, offene Änderungen, Diff, Rollback, Live-Status) abgeschlossen (v0.5.0)
M5 Cluster und Zonen (DNS-Primary/Secondary mit TSIG, Kea-HA, Zonen und Records, dynamische Zonen, Lease-Übernahme) abgeschlossen (v0.6.0)
M6 Auslieferung (Installer für Debian/Ubuntu/EL9, gehärtete systemd-Units, Pakete, Release-Signatur, Messungen, Betriebs- und Sicherheitsdoku) abgeschlossen (v0.7.0)

Installation: docs/INSTALL.md. Der Management-Server verwaltet Netze und Adressen (QIP-artige Tabelle), Zonen und Records, DNS- und DHCP-Cluster, 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. Messungen von Server, BIND und Kea laufen auf Anforderung im Workflow bench (make bench, test/bench/); die Ergebnisse stehen in SYSTEM-REQUIREMENTS.md. 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.

S
Description
No description provided
Readme
2.3 MiB
v0.9.1
Latest
2026-10-17 14:57:20 +00:00
Languages
Go 71.3%
TypeScript 17.9%
Shell 7.2%
PLpgSQL 1.4%
CSS 1.1%
Other 1%