# Server-Sektion (Tab „Server“) Der Editor ist ein Client der Match-Server-Admin-API (`docs/admin-api.md` im Repo scopedvr-match-server). Damit verwaltet jeder seinen eigenen Server – ohne Konsole, ohne Tailscale, auf jedem Betriebssystem. ## Einrichten 1. Auf dem Server in der `server.cfg` `[admin] enabled=true` setzen und starten. Das Token steht danach in der `state_file` des Servers (Standard `admin.cfg`). 2. Editor → Tab **Server** → **➕ Neu**: Name, Adresse, Port (Standard 24580), Token. „🔌 Verbindung testen“ prüft Erreichbarkeit und Token. 3. **🔌 Verbinden**. **Sicher erreichen:** Die Admin-API spricht Klartext-HTTP und hört standardmäßig nur auf localhost. Entweder SSH-Tunnel (`ssh -L 24580:127.0.0.1:24580 benutzer@server`, im Editor dann Adresse `127.0.0.1`) oder ein Reverse-Proxy mit https (Haken „Sichere Verbindung“). ## Funktionen - Mehrere Server speichern; **Token verschlüsselt** (Schlüssel aus Rechner-ID + Nutzerordner), nie im Klartext in Datei oder Log. Schutz gegen Zufallsleser, nicht gegen Schadsoftware auf deinem Benutzerkonto. - **Übersicht:** Name, Map, Modus, Phase, Spieler/Bots, Laufzeit, öffentlich/privat. - **⬆ Aktuelle Map hochladen:** prüft und signiert die Map im Editor (wie Speichern), lädt sie hoch, der Server prüft noch einmal. Ungültige Maps werden gar nicht erst gesendet; 422-Fehler erscheinen als verständliche Liste mit Hilfetexten. Existiert der Name schon, fragt der Editor, ob ersetzt werden soll. Optional: direkt in die Rotation aufnehmen. - **Einstellungen:** Formular direkt aus der Server-Spec; gesendet werden nur geänderte Werte. Die Antwort zeigt je Wert: sofort / ab nächster Map / nach Neustart. „↩ Zurücksetzen“ verwirft Änderungen. - **Spieler:** Kick, Sperren (10 min … dauerhaft), Sperrliste mit „Aufheben“. - **Match & Maps:** Match neu starten, Map jetzt laden, Rotation per Häkchen, hochgeladene Maps löschen. Alles Zerstörerische fragt vorher nach. - **⏻ Server neu starten:** fragt nach, trennt alle Spieler, zeigt „Server startet neu…“ und verbindet sich wieder, sobald der neue Prozess antwortet (bis 120 s). Der Server beendet sich dafür mit Exit-Code 75; neu starten muss ihn Docker (Restart-Policy), systemd oder `tools/start_server.*` (`docs/admin-api.md` im Server-Repo). - **Bot-Anzahl** geht bis 32, die Grenze kommt vom Server. Reicht die Teamgröße nicht (2 × Teamgröße = Platz für Bots), zeigt das Speichern eine Warnung mit der nötigen Größe. - **Server-Log** mit Filter. ## Code `src/server/` (AdminClient, ServerStore, AdminTexte, MapPush), `src/ui/panels/server_panel.gd`, `SvmapIO.to_signed_text`. ## Tests `tests/test_server_sektion.gd` (Unit), `tests/run_server_sektion_e2e.sh` (echter Match-Server + echtes Panel: Verbinden, falsches Token, unerreichbar, Einstellungen, Push gültig/doppelt/ersetzen/lokal ungültig/422, Rotation, Map laden/löschen, Restart, Kick, Logs, 20 Bots, Server-Neustart).