diff --git a/CHANGELOG.md b/CHANGELOG.md index e96ce52..adefa71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,41 @@ getaggte Releases (Kanal `stable`, optional `beta`) — niemals Entwicklungs-Bui _Keine offenen Änderungen — der nächste Stand wird hier gesammelt und als `vX.Y.Z` getaggt._ +## [0.2.0] - 2026-06-13 + +Mehr-Betriebssystem-Verwaltung, echte Firewall- und fail2ban-Steuerung aus dem Dashboard sowie eine Tastatur-/Befehls-Bedienung. + +### Hinzugefügt +- **OS-Abstraktion**: Updates, Härtung und Firewall laufen jetzt über **apt, dnf und + zypper** (Debian/Ubuntu, RHEL/Fedora/Rocky/Alma, openSUSE). Das Betriebssystem wird + erkannt und auf der Server-Detailseite angezeigt (Paketverwaltung/Firewall). Arch + und Alpine werden erkannt; nicht unterstützte Funktionen werden mit deutschem + Hinweis sauber deaktiviert statt fehlzuschlagen. +- **Firewall-Regeln (UFW)**: Regeln ansehen, hinzufügen und löschen samt + Standard-Anzeige — mit Aussperr-Schutz (SSH-Regeln/-Port, deny ohne Port). firewalld + wird nur angezeigt (Laufzeit aller aktiven Zonen inkl. Rich Rules); Regelverwaltung + bleibt vorerst UFW. +- **fail2ban-Status**: Jails mit Zählern, **gebannte IPs sehen und entsperren**, + IP manuell sperren (R5-Dialog, Aussperr-Schutz für Loopback + eigenen Zugang) und + **Whitelist (ignoreip)** verwalten. +- **Befehls-Palette (Strg/⌘-K)** + Tastenkürzel: Schnell-Navigation (Leader „g“), + Seitensuche („/“), Hilfe („?“). + +### Geändert +- System-Updates verwenden je Distribution den passenden Paketmanager + (Audit-Aktion `system.package_upgrade`). +- fail2ban-Tuning und -Whitelist liegen in getrennten Drop-ins, damit Änderungen sich + nicht gegenseitig überschreiben; das frühere Einzel-Drop-in wird migriert. +- Server-Detailseite zeigt erkanntes System, Paketverwaltung und Firewall-Werkzeug. +- System-Seite erklärt jetzt, warum TLS über Caddy terminiert wird. + +### Sicherheit +- Firewall: race-freies Löschen per Regel-Spezifikation (keine Regelnummern), + Whitelisting gegen Befehls-Injection, firewalld-Lockout-Schutz (Ports vor dem Start + in der permanenten Konfiguration). +- fail2ban: kanonischer (inet_pton) Schutz gegen das Sperren des eigenen Zugangs, + ignoreip wird verbatim erhalten (inkl. Hostnames/Fortsetzungszeilen). + ## [0.1.1] - 2026-06-13 Wartungs-Release: vollständige Code-Auditierung, Entfernung von totem Code und ein behobenes Open-Redirect. Keine funktionalen Änderungen für Nutzer. @@ -79,6 +114,7 @@ Erste geschnittene Version — die komplette v1-Basis inklusive Server- und Pane - Release-/Versionierungsmodell: echte semantische Versionen + Git-Tags, Changelog pro Version, Kanäle `stable`/`beta` (kein nutzer-seitiges `dev`). -[Unreleased]: https://git.bave.dev/boban/clusev/compare/v0.1.1...HEAD +[Unreleased]: https://git.bave.dev/boban/clusev/compare/v0.2.0...HEAD +[0.2.0]: https://git.bave.dev/boban/clusev/compare/v0.1.1...v0.2.0 [0.1.1]: https://git.bave.dev/boban/clusev/compare/v0.1.0...v0.1.1 [0.1.0]: https://git.bave.dev/boban/clusev/releases/tag/v0.1.0 diff --git a/config/clusev.php b/config/clusev.php index c2f3618..9c8c0e8 100644 --- a/config/clusev.php +++ b/config/clusev.php @@ -3,7 +3,7 @@ return [ // First tagged release is v0.1.0 (semantic, not -dev). The live build hash // is resolved from .git at runtime (see App\Livewire\Versions\Index). - 'version' => '0.1.1', + 'version' => '0.2.0', // Default user channel. Only 'stable' and 'beta' are ever offered to users. 'channel' => 'stable', diff --git a/resources/views/livewire/system/index.blade.php b/resources/views/livewire/system/index.blade.php index 6de03a6..5573d84 100644 --- a/resources/views/livewire/system/index.blade.php +++ b/resources/views/livewire/system/index.blade.php @@ -45,6 +45,20 @@ @endif + {{-- Architecture rationale: why TLS is terminated by Caddy (collapsible) --}} +
Clusev nutzt genau einen nach außen offenen Dienst: Caddy. Es terminiert TLS, holt und erneuert das Let's-Encrypt-Zertifikat automatisch und leitet die Reverb-WebSockets (wss) über dieselbe Adresse — ohne Skript, Cronjob oder Reload-Hook.
+App und Reverb bleiben intern erreichbar (kein offener Port nach außen). Caddy ist ein eigener Container mit eigener Version, daher kann ein App-Update die TLS-Terminierung nie unterbrechen.
+Ein zusätzliches certbot + nginx wären mehr bewegliche Teile (eigene 443-Konfiguration, WebSocket-Upgrade, Renewal-Timer, Reload-Hook) — bei nur einer Domain kein Gewinn.
+