Files
sysopsandClaude Sonnet 5 3b3ffd8ebf Add wireguard-ui-multi core: multi-server DB, WireGuard manager, REST API, UI, installers
Implements the from-scratch multi-server WireGuard management fork per
CLAUDE.md spec: sqlite schema (servers/peers/audit_log/users), Curve25519
key generation, per-interface config rendering + wg-quick/systemd control,
nftables hook scaffolding, session+CSRF-protected REST API with QR code
and config download endpoints, a minimal vanilla-JS web UI, legacy
wg0.conf migration, and both a native installer and a Proxmox LXC
provisioning script (with auto-detected latest Debian template).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-10 02:53:14 +02:00

368 lines
5.1 KiB
Markdown

Du bist ein Senior Go-Entwickler mit Erfahrung in Netzwerk-Engineering, WireGuard, Linux, nftables und Webanwendungen.
Aufgabe:
Erstelle einen Fork von "wireguard-ui" mit dem Namen:
wireguard-ui-multi
Ziel:
Eine native Multi-Server-Verwaltungsoberfläche für WireGuard, die ohne Docker betrieben werden kann und mehrere unabhängige WireGuard-Server-Interfaces verwaltet.
Hintergrund:
Die aktuelle wireguard-ui Version verwaltet hauptsächlich eine einzelne WireGuard-Instanz. Die neue Version soll mehrere getrennte WireGuard-Server gleichzeitig verwalten können.
Primäre Zielplattform:
- Linux
- Proxmox LXC Container
- Debian/Ubuntu
- OpenWrt-kompatible Umgebung (optional)
- Betrieb als natives Binary ohne Docker
Grundanforderungen:
1. Multi WireGuard Server Support
Die Anwendung muss mehrere WireGuard-Server verwalten können:
Beispiele:
Server:
- WGhome
Interface: wg-home
Listen Port: 51822
Tunnelnetz: 10.20.22.0/24
- WGrz
Interface: wg-rz
Listen Port: 51866
Tunnelnetz: 10.20.66.0/24
- WGwinter
Interface: wg-winter
Listen Port: 51824
Jeder Server muss besitzen:
- eigener Name
- eigenes WireGuard Interface
- eigener Port
- eigener Private Key
- eigene Address Range
- eigene DNS Einstellungen
- eigene MTU
- eigener Status
- eigene Peers
2. Datenmodell erweitern
Aktuelles Modell:
Application
└── WireGuard Server
└── Peers
Neues Modell:
Application
├── Server
│ ├── Interface
│ ├── Config
│ ├── Settings
│ └── Peers
├── Server
│ └── Peers
└── Server
└── Peers
Datenbank erweitern:
Tabelle:
servers
Felder:
- id
- name
- interface_name
- listen_port
- private_key
- public_key
- address_range
- dns
- mtu
- enabled
- created_at
- updated_at
Tabelle:
peers
Felder:
- id
- server_id
- name
- email
- public_key
- private_key
- preshared_key
- allowed_ips
- endpoint
- persistent_keepalive
- enabled
3. WireGuard Verwaltung
Die Anwendung muss automatisch erzeugen:
/etc/wireguard/
Beispiel:
wg-home.conf
wg-rz.conf
wg-winter.conf
Jede Config muss valides WireGuard Format besitzen:
[Interface]
PrivateKey=
Address=
ListenPort=
[Peer]
PublicKey=
AllowedIPs=
PersistentKeepalive=
4. Service Management
Die Anwendung muss WireGuard Interfaces starten und stoppen können:
Beispiele:
wg-quick up wg-home
wg-quick down wg-home
Unterstützung für:
systemd:
wg-quick@wg-home.service
Optional:
OpenWrt:
uci / netifd Integration vorbereiten
5. Webinterface
Erweitere die UI:
Dashboard:
Liste aller WireGuard Server:
------------------------------------------------
Name Interface Port Status
------------------------------------------------
WGhome wg-home 51822 UP
WGrz wg-rz 51866 UP
Winter wg-winter 51824 DOWN
------------------------------------------------
Jeder Server bekommt eigene Verwaltung:
- Peers anzeigen
- Peer hinzufügen
- Peer löschen
- QR-Code erzeugen
- Config herunterladen
- Server starten
- Server stoppen
- Server neu laden
6. Peer Verwaltung
Pro Server:
Funktionen:
- neuen Client erstellen
- Schlüssel automatisch erzeugen
- QR-Code erzeugen
- Konfiguration exportieren
- Ablaufdatum optional
- Beschreibung
- Benutzername
7. Backup / Restore
Implementieren:
Export:
- Datenbank
- WireGuard Configs
- Keys
- Einstellungen
Restore:
- komplette Wiederherstellung
8. API
REST API erweitern:
Beispiele:
GET
/api/servers
POST
/api/servers
GET
/api/server/{id}/peers
POST
/api/server/{id}/peer
DELETE
/api/server/{id}/peer/{peerid}
9. Sicherheit
Implementieren:
- Passwortschutz
- Session Management
- CSRF Schutz
- keine Private Keys im Frontend anzeigen
- Audit Log für Änderungen
10. Firewall Integration
Vorbereitung für:
nftables
Beispiel:
Server WGhome:
INPUT:
UDP 51822 ACCEPT
FORWARD:
wg-home → lan
Hooks:
/etc/wireguard-manager/hooks/
server-start
server-stop
peer-add
peer-remove
11. Deployment
Kein Docker.
Erstellen:
Binary:
wireguard-ui-multi
Installationsstruktur:
/usr/local/bin/wireguard-ui-multi
/etc/wireguard-ui-multi/
/var/lib/wireguard-ui-multi/
Systemd Service:
wireguard-ui-multi.service
12. Codequalität
Anforderungen:
- Go aktuelle Version
- saubere Package-Struktur
- Unit Tests
- Logging
- Fehlerbehandlung
- Dokumentation
Projektstruktur:
cmd/
└── wireguard-ui-multi
internal/
├── server/
├── wireguard/
├── database/
├── api/
├── firewall/
└── ui/
13. Migration
Erstelle eine Migration von einer bestehenden wireguard-ui Installation:
- bestehende wg0.conf erkennen
- als ersten Server importieren
- Peers übernehmen
14. Dokumentation
Erstellen:
README.md
mit:
- Installation
- Konfiguration
- LXC Installation
- Proxmox Hinweise
- Backup
- Migration
Beginne mit:
1. Analyse der bestehenden wireguard-ui Architektur
2. Vorschlag für Datenbankmigration
3. Umsetzung der Server-Abstraktion
4. Implementierung der Multi-Interface-Verwaltung
5. Anpassung der UI
6. Tests
Das Ergebnis soll ein produktiv nutzbarer Fork "wireguard-ui-multi" werden.