
CS2-Server sicher modden: Die komplette Anleitung
CS2 Server/ └── game/ └── csgo/ ├── addons/ │ ├── metamod/ │ ├── counterstrikesharp/ │ │ ├── api/ │ │ ├── bin/ │ │ ├── configs/ │ │ ├── gamedata/ │ │ ├── …
1. Das Grundprinzip
Deine Struktur sollte ungefähr so aussehen:
CS2 Server/
└── game/
└── csgo/
├── addons/
│ ├── metamod/
│ ├── counterstrikesharp/
│ │ ├── api/
│ │ ├── bin/
│ │ ├── configs/
│ │ ├── gamedata/
│ │ ├── lang/
│ │ ├── plugins/
│ │ └── shared/
│ └── ...
│
├── cfg/
├── maps/
├── gameinfo.gi
└── ...CounterStrikeSharp verwendet insbesondere:
game/csgo/addons/counterstrikesharp/plugins
game/csgo/addons/counterstrikesharp/configs
game/csgo/addons/counterstrikesharp/gamedata
game/csgo/addons/counterstrikesharp/langDiese Pfade sind auch in der offiziellen Dokumentation so vorgesehen.
2. Bevor du irgendetwas installierst: Backup
Das ist der wichtigste Schritt.
Ich würde mindestens diese Dinge sichern:
game/csgo/und zusätzlich, falls vorhanden:
game/csgo/cfg/
game/csgo/addons/
game/csgo/maps/
game/csgo/gameinfo.giNoch besser:
Backup A – Serverbasis
Vor Installation von Metamod.
backup/
└── 01-vanilla/Backup B – Framework
Nachdem Metamod + CounterStrikeSharp funktionieren:
backup/
└── 02-css-installed/Backup C – nach jedem funktionierenden Plugin
Zum Beispiel:
backup/
├── 02-css-installed/
├── 03-admin-plugin/
├── 04-music-plugin/
└── 05-custom-content/Damit kannst du bei einem Fehler sehr schnell zurück.
3. Metamod:Source installieren
CounterStrikeSharp kommuniziert über Metamod:Source mit dem Server. Beide müssen deshalb installiert sein.
Lade Metamod ausschließlich aus einer vertrauenswürdigen Quelle und achte darauf, dass du die CS2-kompatible Version verwendest.
Nach dem Entpacken kommt der addons-Ordner nach:
game/csgo/Danach brauchst du die Metamod-Zeile in:
game/csgo/gameinfo.giDie CounterStrikeSharp-Dokumentation beschreibt dafür:
Game_LowViolence csgo_lv
Game csgo/addons/metamodDanach Server neu starten.
4. Metamod testen
Jetzt noch keine Plugins installieren.
Starte den Server und führe in der Serverkonsole aus:
meta listWenn Metamod funktioniert, bekommst du eine Plugin-Liste.
Wenn
Unknown command: metaerscheint, nicht weitermachen.
Dann stimmt normalerweise etwas mit:
gameinfo.gi- dem
addons-Ordner - der Metamod-Version
- dem Serverstart
nicht.
Die offizielle CSS-Dokumentation nennt meta list ebenfalls als grundlegenden Test.
5. CounterStrikeSharp installieren
Danach CounterStrikeSharp installieren.
Für eine erstmalige Installation solltest du laut offizieller Dokumentation die Variante mit Runtime verwenden.
Der Inhalt kommt ebenfalls nach:
game/csgo/Danach sollte beispielsweise Folgendes vorhanden sein:
game/csgo/addons/counterstrikesharp/mit unter anderem:
api/
bin/
plugins/
gamedata/Die offizielle Dokumentation zeigt diese Struktur ebenfalls.
Server neu starten.
Dann:
meta listJetzt sollte CounterStrikeSharp als Plugin auftauchen.
6. Erst jetzt dein erstes Plugin
Jetzt kommt die wichtigste Sicherheitsregel:
Immer nur EIN neues Plugin installieren.
Nicht:
20 Plugins herunterladen
↓
alles kopieren
↓
Server starten
↓
Crash
↓
keine Ahnung welches Plugin schuld istSondern:
Backup
↓
Plugin A
↓
Start
↓
Test
↓
Logs
↓
OK
↓
Backup
↓
Plugin B7. Wie ein CounterStrikeSharp-Plugin installiert wird
Die genaue Struktur hängt vom Plugin ab.
Ein typisches CSS-Plugin landet beispielsweise hier:
game/csgo/addons/counterstrikesharp/plugins/und hat seinen eigenen Ordner:
plugins/
└── MeinPlugin/
├── MeinPlugin.dll
├── MeinPlugin.deps.json
└── MeinPlugin.pdbDie offizielle Dokumentation beschreibt genau dieses Prinzip.
Nicht einfach jede Datei eines Downloads irgendwo hineinwerfen.
Wenn der Plugin-Autor beispielsweise sagt:
addons/counterstrikesharp/plugins/MyPlugin/dann genau dort.
Wenn er zusätzlich schreibt:
addons/counterstrikesharp/configs/kommt die Config dorthin.
Wenn er schreibt:
addons/counterstrikesharp/gamedata/dann dorthin.
8. Plugin-Konfiguration
Viele CSS-Plugins erzeugen oder verwenden eigene Konfigurationsdateien.
Typischerweise:
addons/
└── counterstrikesharp/
└── configs/
└── pluginname/
└── config.jsonDie genaue Struktur ist aber pluginabhängig.
CounterStrikeSharp besitzt ein eigenes Config-System und unterstützt das Laden/Aktualisieren solcher Plugin-Konfigurationen.
Wichtig
Bevor du eine Config bearbeitest:
config.jsonkopieren:
config.json.backupDann nur eine Änderung machen.
9. Plugin nach der Installation testen
Nach jedem Plugin:
Serverkonsole
Achte auf:
error
exception
failed
could not
missing
unableEin einzelner harmloser Warning-Eintrag bedeutet nicht automatisch, dass etwas kaputt ist.
Besonders kritisch sind:
Unhandled exception
Plugin failed to load
Could not load
Missing dependency10. Plugins auflisten
Mit CounterStrikeSharp kannst du überprüfen, welche Plugins geladen sind.
Außerdem ist meta list hilfreich, um die Metamod-Seite zu kontrollieren.
Ich würde nach jeder Änderung prüfen:
meta listund anschließend das CSS-Plugin-Verhalten im Spiel testen.
11. Abhängigkeiten nicht vergessen
Das ist eine der häufigsten Fehlerquellen.
Ein Plugin kann beispielsweise folgendes benötigen:
CounterStrikeSharp
+
anderes CSS-Plugin
+
Gamedata
+
zusätzliche DLLWenn du nur die Haupt-DLL kopierst, kann es deshalb scheitern.
CounterStrikeSharp unterstützt unter anderem externe Assemblies über shared/ und optional einen NuGet-Resolver.
Wenn ein Plugin eine Dependency verlangt:
nicht raten, wohin sie gehört.
Immer die Installationsanleitung des Plugins verwenden.
12. Sounds hinzufügen
Jetzt wird es etwas interessanter.
Angenommen, dein Plugin verwendet:
sounds/myserver/roundstart.mp3Dann brauchst du grundsätzlich zwei Dinge:
A. Datei auf dem Server
Die Datei muss an der Stelle liegen, die das Plugin erwartet.
Zum Beispiel:
game/csgo/sounds/myserver/roundstart.mp3B. Spieler müssen die Datei bekommen
Das ist ein separates Thema.
Nur weil der Sound auf deinem Server liegt, heißt das nicht automatisch, dass jeder Client ihn korrekt besitzt bzw. herunterladen kann.
Je nach verwendeter CS2-Technik/Plugin kann dafür eine entsprechende Resource-/Download-Konfiguration bzw. ein externes Hosting/CDN erforderlich sein.
Deshalb niemals einfach irgendwelche alten CS:GO-FastDL-Anleitungen 1:1 auf CS2 übertragen.
13. Sound-Dateien sicher organisieren
Ich würde mir beispielsweise diese Struktur machen:
game/csgo/
└── sounds/
└── myserver/
├── admin/
│ ├── welcome.mp3
│ └── goodbye.mp3
│
├── rounds/
│ ├── roundstart.mp3
│ └── roundend.mp3
│
└── misc/
└── test.mp3Damit hast du keine 200 Dateien direkt in einem Ordner.
14. Sounds testen
Nie direkt 50 Sounds installieren.
Erst:
test.mp3installieren.
Plugin konfigurieren.
Server starten.
Testen.
Dann:
welcome.mp3dazu.
Dann:
roundstart.mp3usw.
So findest du sofort heraus, welcher Sound Probleme macht.
15. Custom Models / Skins
Hier würde ich noch vorsichtiger sein.
Custom Content kann beispielsweise aus:
models/
materials/
particles/
sounds/bestehen.
Nicht einfach einen kompletten fremden Ordner darüberkopieren.
Schlecht
Fremder Download
↓
game/
↓
alles überschreibenGut
Download analysieren
↓
benötigte Dateien identifizieren
↓
Backup
↓
einzelne Dateien kopieren
↓
testen16. Niemals blind überschreiben
Wenn Windows/Linux fragt:
File already exists.
Replace?nicht automatisch:
Ja, alle.
Erst prüfen:
Welche Datei?
Von welchem Plugin?
Welche Version?Besonders vorsichtig bei:
gameinfo.gi
*.cfg
*.vdf
*.dll
gamedata/*17. Gamedata – besonders wichtig
Einige CS2-Plugins verwenden sogenannte Gamedata.
Zum Beispiel:
addons/counterstrikesharp/gamedata/Das kann nach einem CS2-Update problematisch werden.
Wenn ein Plugin plötzlich nach einem Steam/CS2-Update nicht mehr funktioniert, obwohl du nichts verändert hast:
Gamedata als erste Fehlerquelle prüfen.
Das liegt daran, dass Plugins teilweise auf bestimmte Spielstrukturen/Offsets bzw. Signaturen angewiesen sind.
18. Nach CS2-Updates
Das ist eine wichtige Routine:
CS2 Update
↓
Server starten
↓
meta list
↓
CSS prüfen
↓
Plugins einzeln prüfen
↓
Logs kontrollierenNicht sofort zehn Plugins aktualisieren.
Wenn plötzlich etwas nicht funktioniert, weißt du sonst nicht:
CS2 Update?
Plugin Update?
Gamedata?
Config?
Dependency?19. Plugin-Updates
Bei einem Update:
Vorher
Backup Pluginzum Beispiel:
backup/
└── MyPlugin/
├── old.dll
├── old-config.json
└── ...Dann:
Server stoppen
↓
alte Plugin-Version sichern
↓
neue Version installieren
↓
Server starten
↓
Logs prüfen
↓
Plugin testenWenn es nicht funktioniert:
Server stoppen
↓
alte Version zurück
↓
Server startenDas ist dein Rollback.
20. Hot Reload – praktisch, aber nicht für alles
CounterStrikeSharp kann Plugins standardmäßig beim Austauschen der DLL automatisch neu laden.
Das ist beim Entwickeln sehr praktisch.
Für einen öffentlichen Produktionsserver würde ich trotzdem lieber:
Server stoppen
↓
Dateien ändern
↓
Server startenverwenden.
Warum?
Weil du dadurch einen klar definierten Zustand hast und Fehler beim Reload leichter nachvollziehen kannst.
Die CounterStrikeSharp-Dokumentation weist ebenfalls darauf hin, dass automatische Entwicklungs-/Deploy-Workflows nicht für einen Produktionsserver gedacht sind.
21. Admins einrichten
CounterStrikeSharp hat ein eigenes Admin-System.
Die Admin-Konfiguration befindet sich bei:
addons/counterstrikesharp/configs/admins.jsonDort können SteamIDs und Berechtigungen definiert werden.
Beispiel:
{
"Admin": {
"identity": "DEINE_STEAM_ID",
"flags": [
"@css/generic"
]
}
}Welche Permissions du tatsächlich brauchst, hängt vom jeweiligen Plugin ab.
Nicht einfach jedem Admin * oder maximale Rechte geben, wenn das Plugin differenzierte Permissions unterstützt.
22. Sicherheitsregel für Plugins
Das ist extrem wichtig:
Eine
.dllist ausführbarer Code.
Ein Plugin kann theoretisch sehr viel mehr machen als nur:
!adminDeshalb würde ich Plugins nur aus vertrauenswürdigen Quellen verwenden.
Vor Installation prüfen:
- Wer entwickelt es?
- Gibt es ein öffentliches Repository?
- Gibt es Dokumentation?
- Gibt es Versionshistorie?
- Gibt es andere Nutzer?
- Welche Dependencies braucht es?
- Ist die Version für deine aktuelle CSS-Version gedacht?
23. GSLT / Server-Sicherheitsrisiken
Hier solltest du ebenfalls aufpassen.
CounterStrikeSharp besitzt sogar eine Einstellung namens:
FollowCS2ServerGuidelinesDiese kann bestimmte Plugin-Funktionen blockieren, die laut Dokumentation Risiken für Game Server Login Tokens darstellen können. Die Option bietet allerdings keine Garantie gegen einen Bann.
Meine Empfehlung:
Diese Schutzfunktion nicht leichtfertig deaktivieren.
Wenn ein Plugin sagt:
„Disable server guidelines, otherwise this plugin won’t work“
würde ich erst einmal sehr genau prüfen, warum.
24. Meine empfohlene Serverstruktur
Ich würde deinen Server ungefähr so organisieren:
CS2/
│
├── backups/
│ ├── 00-clean/
│ ├── 01-metamod/
│ ├── 02-css/
│ ├── 03-admin/
│ ├── 04-sounds/
│ └── 05-final/
│
└── game/
└── csgo/
│
├── addons/
│ ├── metamod/
│ │
│ └── counterstrikesharp/
│ ├── configs/
│ ├── gamedata/
│ ├── lang/
│ ├── plugins/
│ └── shared/
│
├── cfg/
├── maps/
├── models/
├── materials/
├── particles/
├── sounds/
│ └── myserver/
│
└── gameinfo.gi25. Die goldene Installationsreihenfolge
Wenn du beispielsweise einen komplett neuen Server hast:
1. Vanilla CS2 Server
↓
2. Backup
↓
3. Metamod
↓
4. Test: meta list
↓
5. Backup
↓
6. CounterStrikeSharp
↓
7. Test
↓
8. Backup
↓
9. Admin-System
↓
10. Test
↓
11. Backup
↓
12. Plugin #1
↓
13. Test
↓
14. Backup
↓
15. Plugin #2
↓
16. Test
↓
17. Backup
↓
18. Sounds
↓
19. Test
↓
20. Custom Models/Content
↓
21. TestDas klingt langsamer als:
„Ich kopiere alles rein.“
Ist aber massiv einfacher zu debuggen.
26. Wenn der Server plötzlich nicht mehr startet
Nicht in Panik geraten.
Schritt 1
Letzte Änderung identifizieren.
Beispiel:
Vorher:
Server läuft.
Danach:
Server startet nicht.Dann ist die letzte Änderung dein Hauptverdächtiger.
Schritt 2
Server stoppen.
Schritt 3
Letztes Plugin/Content entfernen oder umbenennen.
Zum Beispiel:
plugins/
└── BrokenPlugin/zu:
plugins/
└── BrokenPlugin.disabled/Schritt 4
Server starten.
Schritt 5
Wenn er wieder funktioniert:
Problem gefunden.
27. Wenn der Server startet, aber das Plugin nicht
Dann prüfen:
meta listDanach:
CSS logsund Plugin-Logs.
Typische Ursachen:
falsche Plugin-Version
fehlende Dependency
fehlende Gamedata
falscher Pfad
falsche Config
veraltete API
CS2-Update28. Wenn nur Sounds nicht funktionieren
Dann gehe in dieser Reihenfolge vor:
Datei vorhanden?
↓
richtiger Pfad?
↓
richtiger Dateiname?
↓
Plugin erwartet genau diesen Pfad?
↓
Client bekommt die Resource?
↓
Format unterstützt?
↓
Plugin-Config korrekt?Nicht sofort das komplette Plugin neu installieren.
29. Wenn nach einem Update alles kaputt ist
Dann:
CS2 Update
↓
CSS-Version prüfen
↓
Metamod-Version prüfen
↓
Plugin-Kompatibilität prüfen
↓
Gamedata prüfen
↓
Logs prüfenUnd nicht zehn neue Versionen gleichzeitig installieren.
30. Unsere „Safe Mode“-Regel
Wenn du später beispielsweise 30 Plugins hast, würde ich bei Problemen nicht alle löschen.
Stattdessen:
plugins/
├── 01-admin/
├── 02-ranks/
├── 03-music/
├── 04-reservedslots/
├── 05-vip/
└── ...Problematisches Plugin:
03-musictemporär deaktivieren:
03-music.disabledServer starten.
Wenn alles wieder läuft:
Fehler ziemlich wahrscheinlich gefunden.
Die wichtigste Faustregel
Ändere immer nur eine Variable.
Also niemals:
„Ich installiere heute 15 Plugins, 80 Sounds, Models und ein komplett neues Admin-System.“
Sondern:
Backup → eine Änderung → Neustart → Test → Logs → Backup.
Damit kannst du deinen Server praktisch wie ein Versionssystem behandeln.
Offizielle Referenzen
Die aktuelle CounterStrikeSharp-Dokumentation findest du hier:
CounterStrikeSharp – Getting Started
War die Anleitung hilfreich?
Mit einem Klick hilfst du uns, sie besser zu machen.







