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>
368 lines
5.1 KiB
Markdown
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.
|