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

5.1 KiB

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
  1. 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
  1. 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=

  1. 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

  1. 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
  1. Peer Verwaltung

Pro Server:

Funktionen:

  • neuen Client erstellen
  • Schlüssel automatisch erzeugen
  • QR-Code erzeugen
  • Konfiguration exportieren
  • Ablaufdatum optional
  • Beschreibung
  • Benutzername
  1. Backup / Restore

Implementieren:

Export:

  • Datenbank
  • WireGuard Configs
  • Keys
  • Einstellungen

Restore:

  • komplette Wiederherstellung
  1. 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}

  1. Sicherheit

Implementieren:

  • Passwortschutz
  • Session Management
  • CSRF Schutz
  • keine Private Keys im Frontend anzeigen
  • Audit Log für Änderungen
  1. 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

  1. 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

  1. 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/

  1. Migration

Erstelle eine Migration von einer bestehenden wireguard-ui Installation:

  • bestehende wg0.conf erkennen
  • als ersten Server importieren
  • Peers übernehmen
  1. 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.