Konfiguration
Konfiguration
Section titled “Konfiguration”ZPO liest config.json aus dem Datenverzeichnis. Fehlt die Datei, wird sie beim
Start mit sicheren Zufallswerten erzeugt — inklusive einem kryptografisch
starken jwt_secret. Die Datei gehört mit den Rechten 0600 nur dem
Service-Benutzer.
Optionen in der config.json
Section titled “Optionen in der config.json”| Schlüssel | Vorgabe | Bedeutung |
|---|---|---|
host | 127.0.0.1 | Adresse, an der der HTTP-Server lauscht. Im Container 0.0.0.0. |
port | 8080 | Port der Oberfläche und der API. |
database_path | zpo.db | Pfad zur SQLite-Datei. Relative Pfade werden im Datenverzeichnis aufgelöst. |
jwt_secret | zufällig erzeugt | Signiert die Sitzungs-Tokens (HS256). Mindestens 32 Zeichen, niemals einchecken. |
access_token_ttl_minutes | 60 | Vorgabe für die Lebensdauer einer Anmeldung in Minuten. Unter Allgemeine Einstellungen → Allgemein lässt sie sich sekundengenau überschreiben (5 Minuten bis 30 Tage). |
admin_initial_password | leer | Passwort für admin beim Erststart. Leer heißt: zufällig erzeugen und einmalig ausgeben. |
log_level | info | debug, info, warn oder error. Das Flag -debug überschreibt zur Laufzeit mit debug. |
access_log | true | Protokolliert jeden API-Request (Methode, Pfad, Status, Dauer, Benutzer). |
reconcile_interval_seconds | 15 | Takt des Abgleichs: Knoten prüfen, offene Aufträge nachholen. 0 schaltet den Abgleich ab — nur für Tests sinnvoll. |
full_reconcile_minutes | 15 | Takt des Vollabgleichs: den Ist-Zustand vom Knoten lesen und gegen den Sollzustand halten. So fallen Änderungen auf, die von Hand am Gerät gemacht wurden. |
api_key_rate_limit_per_minute | 120 | Requests pro API-Schlüssel und Minute. 0 deaktiviert die Begrenzung. Gilt nicht für Browser-Sitzungen. |
renew_interval_seconds | 3600 | Takt des Zertifikats-Erneuerers. Das ARI-Fenster der CA entscheidet über den Zeitpunkt; der Takt sorgt nur dafür, dass es nicht verpasst wird. 0 schaltet die Erneuerung ab — bei ACME-Zertifikaten riskant. |
metrics_token | leer | Schützt den /metrics-Endpunkt. Leer heißt: ohne Token lesbar — gedacht für Prometheus im eigenen Netz. |
local_port | 0 (aus) | Zusätzlicher Listener auf 127.0.0.1 als Notzugang, wenn die Oberfläche hinter einem verwalteten Proxy liegt, der gerade nicht kann. Darf nicht gleich port sein. |
Beispiel:
{ "host": "0.0.0.0", "port": 8080, "database_path": "zpo.db", "jwt_secret": "<vom Start erzeugt>", "access_token_ttl_minutes": 60, "admin_initial_password": "", "log_level": "info", "access_log": true, "reconcile_interval_seconds": 15, "full_reconcile_minutes": 15, "api_key_rate_limit_per_minute": 120, "renew_interval_seconds": 3600, "metrics_token": "", "local_port": 0}Umgebungsvariablen
Section titled “Umgebungsvariablen”Umgebungsvariablen überschreiben die config.json, ohne die Datei anzufassen — gedacht für Container und systemd-Overrides.
| Variable | Bedeutung |
|---|---|
ZPO_HOST | Überschreibt host. Im Container-Image 0.0.0.0. |
ZPO_PORT | Überschreibt port (1–65535). |
ZPO_DATA | Datenverzeichnis für config.json, Datenbank und version.json. Vorgabe: Verzeichnis des Binaries, im Container /data. |
ZPO_SECRET_KEY | Hauptschlüssel als base64 (32 Byte). Schlägt die Datei secret.key. |
ZPO_SECRET_KEY_FILE | Datei, aus der der Hauptschlüssel kommt, wenn ZPO_SECRET_KEY leer ist. |
TZ | Zeitzone der Anwendung (Logs, Zeitstempel), z. B. Europe/Berlin. Die Zeitzonendaten stecken im Binary. |
Kommandozeile
Section titled “Kommandozeile”zpo [-config pfad] [-data verzeichnis] [-debug] [-version]zpo rollback [-data verzeichnis] --host <hostname> | --disable-host <hostname>-config— expliziter Pfad zur config.json (Vorgabe: im Datenverzeichnis).-data— Datenverzeichnis; schlägtZPO_DATA.-debug— hebt das Log-Level aufdebug.-version— gibt die Version aus und endet.zpo rollback— der Notzugang, siehe Betrieb.