From 45e27f8575964ca3e771da6111580d104125651e Mon Sep 17 00:00:00 2001 From: magges Date: Sun, 12 Jul 2026 13:02:50 +0000 Subject: [PATCH] Add Create Container UI and Templates (Unraid XML) feature Lets users create containers from the WebUI (image/name/ports/volumes/ env/network mode/restart policy/privileged) instead of only managing existing ones, and adds a Templates panel to save/reuse those configs as Unraid-Docker-compatible template XML, including browsing and importing the host's own existing Docker Manager templates directly. Also fixes bugs found via live testing along the way: container names with spaces/invalid characters now get a clear client- and server-side error with a suggested fix instead of podman's raw API error, the New Container modal's backdrop no longer renders transparent (was being appended outside the .podman-plugin CSS scope), and modal buttons now have real visual hierarchy (ghost/primary/danger) after Unraid's own site-wide button theme was found to override plain single-class rules. Co-Authored-By: Claude Sonnet 5 --- prompt.md | 354 ++++++++++++++++ webui/plugins/podman/Podman.page | 6 +- webui/plugins/podman/ajax/containers.php | 13 + webui/plugins/podman/ajax/templates.php | 385 ++++++++++++++++++ webui/plugins/podman/javascript/app.js | 2 +- webui/plugins/podman/javascript/containers.js | 107 ++++- webui/plugins/podman/javascript/templates.js | 219 ++++++++++ webui/plugins/podman/styles/podman.css | 94 ++++- 8 files changed, 1158 insertions(+), 22 deletions(-) create mode 100644 prompt.md create mode 100644 webui/plugins/podman/ajax/templates.php create mode 100644 webui/plugins/podman/javascript/templates.js diff --git a/prompt.md b/prompt.md new file mode 100644 index 0000000..247072f --- /dev/null +++ b/prompt.md @@ -0,0 +1,354 @@ +# Unraid Podman Plugin – Anforderungen an die WebUI + +Du bist ein Senior UX Designer und Senior Full-Stack Entwickler mit Erfahrung in Unraid, Podman und Self-Hosting. + +Entwirf eine moderne, performante und vollständig in Unraid integrierte WebUI für ein natives Podman-Plugin. + +Die Oberfläche soll sich optisch und funktional wie ein offizieller Bestandteil von Unraid anfühlen und keine Fremdanwendung darstellen. + +## Ziel + +Die WebUI soll alle Funktionen bieten, die Administratoren für die Verwaltung von Podman benötigen, ohne auf die Kommandozeile angewiesen zu sein. + +Die Bedienung soll sowohl für Einsteiger als auch für erfahrene Nutzer geeignet sein. + +--- + +# Allgemeine Anforderungen + +* Responsives Design +* Dark-Mode kompatibel +* Passend zum Unraid-Design +* Sehr schnelle Ladezeiten +* Modular aufgebaut +* Erweiterbar +* AJAX/WebSocket statt kompletter Seitenreloads +* Suchfunktion auf allen Listen +* Sortierung aller Tabellen +* Filtermöglichkeiten +* Mehrfachauswahl +* Kontextmenüs +* Bestätigungsdialoge +* Benachrichtigungen (Success, Warning, Error) +* Ladeanimationen +* Fortschrittsanzeigen +* Automatische Aktualisierung wichtiger Statusinformationen +* Mehrsprachigkeit vorbereiten + +--- + +# Dashboard + +Das Dashboard soll auf einen Blick den Zustand der gesamten Podman-Umgebung zeigen. + +Anzeigen: + +* Anzahl Container +* Laufende Container +* Gestoppte Container +* Pods +* Images +* Netzwerke +* Volumes +* CPU-Auslastung +* RAM-Auslastung +* Storage-Auslastung +* Schreib-/Lese-I/O +* Netzwerkdurchsatz +* Podman-Version +* Conmon-Version +* crun-Version +* Netavark-Version +* Plugin-Version + +Zusätzlich: + +* Letzte Ereignisse +* Fehler +* Warnungen +* Updates verfügbar +* Container mit Problemen +* Container ohne Healthcheck +* Nicht verwendete Images +* Nicht verwendete Volumes +* Nicht verwendete Netzwerke + +--- + +# Containerverwaltung + +Für jeden Container: + +* Start +* Stop +* Restart +* Pause +* Resume +* Kill +* Löschen +* Umbenennen +* Duplizieren +* Exportieren +* Commit als Image +* Snapshot (falls unterstützt) + +Informationen: + +* Name +* Image +* Status +* Uptime +* CPU +* RAM +* PID +* IP-Adresse +* Netzwerk +* Ports +* Volumes +* Labels +* Environment +* Health Status +* Restart Policy + +Tabs: + +* Übersicht +* Logs +* Konsole (TTY) +* Ressourcen +* Netzwerke +* Volumes +* Environment +* Mounts +* Labels +* Events +* Inspect (JSON) +* Healthcheck-Verlauf + +--- + +# Pod-Verwaltung + +* Pod erstellen +* Pod löschen +* Container hinzufügen +* Container entfernen +* Pod starten +* Pod stoppen +* Neustarten +* Logs +* Portübersicht +* Netzwerkübersicht + +--- + +# Image-Verwaltung + +* Images anzeigen +* Pull +* Push +* Taggen +* Löschen +* Prune +* Registry auswählen +* Größe anzeigen +* Erstellungsdatum +* Layer anzeigen +* Historie anzeigen +* Sicherheitsinformationen (wenn verfügbar) + +--- + +# Registry-Unterstützung + +Unterstützung für: + +* Docker Hub +* GitHub Container Registry +* Quay.io +* GitLab Registry +* Harbor +* Eigene Registries + +Funktionen: + +* Login +* Logout +* Zugangsdaten speichern +* TLS-Konfiguration +* Unsichere Registry optional aktivieren + +--- + +# Netzwerke + +* Netzwerke erstellen +* Löschen +* Bearbeiten +* Verbundene Container anzeigen +* Treiber anzeigen +* Subnetz +* Gateway +* DNS +* MTU +* VLAN (falls unterstützt) + +--- + +# Volumes + +* Erstellen +* Löschen +* Mountpunkte anzeigen +* Speicherverbrauch +* Zugeordnete Container +* Backup starten +* Wiederherstellen +* Exportieren + +--- + +# Compose-Unterstützung + +Unterstützung für: + +* podman compose + +Funktionen: + +* Compose-Datei importieren +* Stack erstellen +* Start +* Stop +* Neustart +* Logs +* Bearbeiten +* Aktualisieren +* Löschen +* YAML-Editor mit Syntax-Highlighting +* Validierung vor dem Speichern + +--- + +# Template-Unterstützung + +Kompatibilität mit Unraid-Templates. + +Unterstützung für: + +* XML importieren +* XML exportieren +* Template erstellen +* Template bearbeiten +* Icons +* Kategorien +* Repository-Links + +--- + +# Container-Erstellung + +Wizard mit mehreren Schritten: + +* Name +* Image auswählen +* Registry auswählen +* Ports +* Volumes +* Environment +* Labels +* Geräte +* GPU +* USB +* Netzwerk +* Ressourcen +* Healthcheck +* Restart Policy +* Zusammenfassung +* Validierung +* Container erzeugen + +--- + +# Logs + +* Live-Logs +* Suchfunktion +* Filter +* Zeitfilter +* Auto-Scroll +* Download +* Kopieren +* ANSI-Farben korrekt darstellen + +--- + +# Konsole + +Browser-Terminal mit: + +* Vollbildmodus +* Kopieren/Einfügen +* Mehrere Sitzungen +* Größenanpassung +* UTF-8-Unterstützung + +--- + +# Ressourcenverwaltung + +Container-Limits bearbeiten: + +* CPU +* RAM +* Swap +* PIDs +* Block-I/O +* Geräte +* HugePages (falls unterstützt) + +Visualisierung: + +* CPU +* RAM +* Netzwerk +* Festplatten-I/O + +--- + +# Ereignisse + +Live-Event-Ansicht: + +* Container gestartet +* Container gestoppt +* Image geladen +* Fehler +* Netzwerkänderungen +* Volumeänderungen + +Filter nach: + +* Container +* Typ +* Zeitraum +* Schweregrad + +--- + +# Einstellungen + +Plugin-Einstellungen: + +* Storage-Pfad +* API +* Socket +* Registry-Einstellungen +* Standardnetzwerk +* Standard-Runtime +* Logging +* Autostart +* Updates +* Debugmodus + +--- \ No newline at end of file diff --git a/webui/plugins/podman/Podman.page b/webui/plugins/podman/Podman.page index e59314f..247d5ae 100644 --- a/webui/plugins/podman/Podman.page +++ b/webui/plugins/podman/Podman.page @@ -54,6 +54,7 @@ function podman_asset_version(string $relPath): string