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.