fix(update): self-upgrade via sudo systemd-run + animiertes Modal

handler: edgeguard-User darf systemd-run nicht direkt aufrufen ("Inter-
active authentication required"). sudo -n + sudoers-Whitelist auf
exakt die Unit-Form für edgeguard-upgrade.service.

UI: UpdateBanner-Komponente neu — Pattern wie mail-gateway/enconf:
Banner mit Force-Check-Button + Popconfirm. Beim Apply zeigt full-
screen-Overlay mit animiertem Orbit (zwei Ringe + Dots), Versions-
sprung, vier Step-Indicators (Download/Install/Restart/Verify) und
Live-Timer. Poll auf /system/health detektiert Version-Flip ODER
"sah down dann up" und window.reload nach 1.5s. Sicherheits-Timeout
2 min schickt sonst auch reload.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Debian
2026-05-11 22:02:54 +02:00
parent 26f321de9d
commit 117d16e597
10 changed files with 247 additions and 161 deletions

View File

@@ -306,17 +306,23 @@
"setupCompleted": "Setup abgeschlossen"
},
"update": {
"available": "Update verfügbar: {{pkg}} {{installed}} → {{available}}",
"viewDetails": "Details anzeigen",
"applyNow": "Jetzt aktualisieren",
"applying": "Update läuft …",
"applyingHint": "Pakete werden installiert + Services restartet. Verbindung kann kurz brechen — die UI lädt automatisch neu sobald Version {{version}} live ist.",
"applyingDetail": "aktuell {{current}} · Ziel {{target}}",
"started": "Update wurde gestartet — der Server wird in Kürze neu starten.",
"available": "Update verfügbar: Version {{version}}",
"multiPackageHint": "{{count}} Pakete werden aktualisiert.",
"applyNow": "Jetzt installieren",
"confirmTitle": "Update jetzt installieren?",
"confirmDesc": "Pakete werden auf Version {{version}} aktualisiert. edgeguard-api + scheduler restarten (~2-5s), HAProxy/nft/WG/Squid/Unbound/Chrony laufen durch.",
"checkNow": "Auf Updates prüfen",
"checkDone": "Update verfügbar",
"noUpdate": "Keine neuen Updates",
"checkFailed": "Update-Check fehlgeschlagen",
"running": "Update läuft …",
"waitHint": "Bitte warten — die Seite lädt automatisch neu sobald die neue Version live ist.",
"success": "Update auf {{version}} abgeschlossen.",
"modalTitle": "EdgeGuard-Update",
"modalIntro": "Folgende Pakete werden aktualisiert:",
"modalWarn": "Während des Updates werden edgeguard-api + edgeguard-scheduler neu gestartet (~2-5 Sekunden Service-Unterbrechung). HAProxy + nft + WireGuard + Squid + Unbound + Chrony bleiben durchgehend aktiv."
"failed": "Update fehlgeschlagen",
"stepDownload": "Pakete laden",
"stepInstall": "Installation",
"stepRestart": "Service-Restart",
"stepVerify": "Verifizierung"
},
"wg": {
"title": "WireGuard",