feat(cluster): Seite komplett neu — Blank-Page-Fix + Node-Join-Wizard

Seite war komplett leer wenn die Cluster-API einen Fehler zurückgab
(if(!data) return null). Jetzt: sichtbarer Error-Banner mit Retry,
keine leere Seite mehr.

Neuer 4-Schritt-Wizard "Zweiten Node hinzufügen" immer sichtbar:
  1. Installer-Oneliner (copyable)
  2. Join-Token generieren (Button → POST /cluster/join-tokens)
  3. cluster-join-Befehl inkl. Token inline auf der Seite (kein Modal)
  4. systemctl restart edgeguard-api

Token + CA-Fingerprint + Befehl erscheinen direkt in Schritt 3
nach Token-Generierung — kein separates Modal mehr nötig.
common.retry i18n-Key ergänzt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-05-29 15:17:12 +02:00
parent 31d3485a2f
commit 33f6fef009
7 changed files with 320 additions and 216 deletions

View File

@@ -448,7 +448,19 @@
"noSelf": "Self-registration in ha_nodes failed — run the setup wizard.",
"peersTitle": "Peers ({{count}})",
"singleNodeTitle": "Single-node mode",
"singleNodeDesc": "Only this box is known. To add another node: `edgeguard-ctl cluster-join` (coming in phase 3.2).",
"singleNodeDesc": "Only this box is known. Follow the steps below to join a second node.",
"addNodeTitle": "Add second node to cluster",
"step1Title": "1 — Install EdgeGuard on the new host",
"step1Desc": "Run as root on the new host (Debian 13, amd64):",
"step2Title": "2 — Generate a join token here (on this primary node)",
"step2Desc": "Creates a one-time HMAC token valid for 30 minutes. The token authorises the new node to receive a signed cluster TLS certificate.",
"step3Title": "3 — Run on the new node",
"step3NoToken": "Click \"Generate join token\" above — the full command will appear here.",
"step4Title": "4 — Restart edgeguard-api on the new node",
"step4Desc": "The service loads the new cluster TLS certificate and starts sending heartbeats. The node appears in the Peers table within 30 seconds.",
"apiUnreachable": "Cluster API not reachable",
"tokenLabel": "Token",
"caFingerprintLabel": "CA fingerprint",
"driftBanner": "Config drift detected",
"driftBannerDesc": "One or more peers have a different config hash than this node. Either changes are still in the outbox or a peer was edited directly in the DB. Wait for the outbox to drain or run diagnostics.",
"col": {
@@ -1069,6 +1081,7 @@
"download": "Download",
"copy": "Copy",
"copied": "Copied",
"retry": "Retry",
"close": "Close",
"refresh": "Refresh",
"up": "UP",