Caddy Web UI
Adds 'Aus Cert-Source (verwaltet)' as a new TLS mode in the site builder. Renders a dropdown of configured cert sources (name + subject + days till expiry), emits the correct tls directive using the source's local_dir. The parser also detects existing tls directives whose paths match a source and pre-selects that source on edit. |
||
|---|---|---|
| static/img | ||
| templates | ||
| .gitattributes | ||
| .gitignore | ||
| install.sh | ||
| main.py | ||
| README.md | ||
| uninstall.sh | ||
CaddyUI
Minimalistischer Web-Editor für /etc/caddy/Caddyfile mit strukturiertem Site-Builder, Validate/Reload, automatischen Backups und Brutalist-Design.
Features
- Sites verwalten — Karten-Übersicht aller Site-Blöcke, Add/Edit/Delete
- Strukturierter Builder — Handler-Auswahl (Reverse Proxy, File Server, Redirect, Respond, PHP-FastCGI, Custom), TLS-Optionen (Auto/Internal/Custom/Email/Off), Custom Headers, Basic Auth, Komprimierung, Logging
- Raw-Editor — komplettes Caddyfile als Textarea bearbeiten
- Validate + Reload — direkt aus der UI, mit
caddy validateVorprüfung - Automatische Backups — bei jeder Änderung, max. 10 behalten (konfigurierbar), nur bei tatsächlicher Änderung
- Backups einsehen + wiederherstellen
- Status-Indikator — zeigt ob die Datei mit dem laufenden Caddy synchron ist
- Session-basiertes Login — kein nerviges Browser-Popup
- Custom Confirm-Dialogs — DaisyUI Modals statt
confirm()-Popups
Voraussetzungen
- Linux mit systemd (Debian/Ubuntu/Fedora/Alpine)
- Caddy ist installiert und läuft als
caddy.service - Caddyfile unter
/etc/caddy/Caddyfile - Python 3.10+ (wird automatisch via Paketmanager geprüft)
- Port 8088 frei (per
.envänderbar)
Installation
# Tarball auf Zielserver kopieren
scp caddyui-1.0.0.tar.gz user@target:/tmp/
# Auf dem Zielserver
ssh user@target
sudo tar -xzf /tmp/caddyui-1.0.0.tar.gz -C /tmp/
sudo /tmp/caddyui/install.sh
Am Ende zeigt der Installer URL, Benutzer und ein generiertes Passwort. Passwort steht in /opt/caddyui/.env (Mode 600).
Upgrade
Einfach den neuen Tarball entpacken und install.sh erneut ausführen. Die .env und der Backup-Ordner bleiben erhalten.
Konfiguration (/opt/caddyui/.env)
CADDYUI_USER=admin
CADDYUI_PASS=...
CADDYUI_SECRET=... # Session-Secret (zufällig bei Install)
PORT=8088
# CADDYFILE=/etc/caddy/Caddyfile
# CADDYUI_BACKUPS=/opt/caddyui/backups
# CADDYUI_BACKUP_RETENTION=10
# CADDYUI_RELOAD_CMD=systemctl reload caddy
# CADDYUI_VALIDATE_CMD=caddy validate --config /etc/caddy/Caddyfile
Nach Änderung: systemctl restart caddyui
Service-Verwaltung
systemctl status caddyui # Status anzeigen
systemctl restart caddyui # Neu starten
journalctl -u caddyui -f # Live-Logs
Optional: über Caddy selbst exponieren
In der UI eine neue Site anlegen:
- Domain: z.B.
caddyui.example.com - Handler: Reverse Proxy →
127.0.0.1:8088 - TLS: Auto (Let's Encrypt)
- (optional) Basic Auth zusätzlich
Deinstallation
sudo /opt/caddyui/uninstall.sh
oder vor Löschen vom System:
sudo bash uninstall.sh
Dateistruktur (nach Installation)
/opt/caddyui/
├── main.py # Flask-App
├── templates/ # Jinja2-Templates
├── static/img/ # MANAZ-Logo etc.
├── venv/ # Python virtual env
├── backups/ # Auto-Backups (Caddyfile.YYYYMMDD-HHMMSS.bak)
├── .env # Credentials + Config (mode 600)
├── .last-reload-hash # Tracker für Active/Pending-Status
├── install.sh # dieser Installer
├── uninstall.sh
└── README.md
Lizenz / Credits
Made by MANAZ.