CS2 Server Setup: server.cfg, Modes and Useful Commands
This guide is for Counter-Strike 2 dedicated server operators. We cover the config structure, key cvars and the game_type plus game_mode pairing, give ready-made server.cfg blocks, and show how to add the server to monitoring. All commands and values are given as is - copy them straight into your config.
Where the configs live: server.cfg and autoexec
CS2 dedicated server configs live in the game/csgo/cfg folder. The main file is server.cfg; it runs on map start and sets the server name, passwords, mode and match rules.
The autoexec.cfg file is handy for settings that should apply once at server launch (network limits, fps_max). To run it, add exec autoexec to server.cfg or to the launch parameters.
Separate the logic: put global and network parameters in autoexec, and the rules of a specific match in server.cfg and mode configs (gamemode_competitive_server.cfg and similar).
Basic parameters: hostname, sv_password, sv_lan
These are the first things to set on a new server. hostname defines how the server appears in the list and in monitoring. sv_password makes the server private. sv_lan toggles LAN mode.
A public server visible on the internet requires a GSLT token (Game Server Login Token). Get one from the Steam game server management page and set it via sv_setsteamaccount.
| Cvar | Purpose | Example |
|---|---|---|
| hostname | Server name in the list and monitoring | hostname "crazypub | Retake" |
| sv_password | Join password (empty = open) | sv_password "" |
| sv_lan | LAN mode (0 for the internet) | sv_lan 0 |
| sv_region | Server region for matchmaking | sv_region 3 |
| sv_setsteamaccount | GSLT token for a public server | sv_setsteamaccount "TOKEN" |
Tickrate and sub-tick in CS2
Unlike CS:GO, Counter-Strike 2 has no familiar 64/128 tickrate choice via a launch parameter. The Source 2 engine uses sub-tick: shooting and movement are tied to the exact moment in time within a tick, not to the tick boundary.
In practice this means attempts to set tickrate 128 like in CS:GO do nothing - the server runs at a fixed rate, and accuracy is provided by sub-tick. Do not waste time on old -tickrate parameters from CS:GO guides.
If a guide suggests adding -tickrate 128 for CS2, that is outdated CS:GO advice. In CS2 it is unnecessary and does not affect accuracy thanks to sub-tick.
Game mode: game_type and game_mode
The game format in CS2 is set by a pair of cvars: game_type selects the category, and game_mode the specific mode inside it. This pair must be set together and before the map loads, so it is usually placed in the launch parameters or at the top of the config.
| Mode | game_type | game_mode |
|---|---|---|
| Competitive | 0 | 1 |
| Casual | 0 | 0 |
| Arms Race | 1 | 0 |
| Demolition | 1 | 1 |
| Deathmatch | 1 | 2 |
| Wingman (2v2) | 0 | 2 |
| Custom | 3 | 0 |
// Competitive mode
game_type 0
game_mode 1
// Deathmatch
// game_type 1
// game_mode 2Round rules and economy: mp_ cvars
After choosing the mode, fine-tuning the match is done with mp_ cvars. They control the number of rounds, timing, starting money and friendly fire. Below is a typical block for a competitive server.
| Cvar | Purpose | Example |
|---|---|---|
| mp_maxrounds | Rounds in a match | mp_maxrounds 24 |
| mp_roundtime | Round time (minutes) | mp_roundtime 1.92 |
| mp_roundtime_defuse | Round time on defuse maps | mp_roundtime_defuse 1.92 |
| mp_freezetime | Freeze time at round start (sec) | mp_freezetime 15 |
| mp_buytime | Buy time (sec) | mp_buytime 20 |
| mp_startmoney | Starting money | mp_startmoney 800 |
| mp_maxmoney | Money cap | mp_maxmoney 16000 |
| mp_friendlyfire | Damage to teammates | mp_friendlyfire 1 |
| mp_overtime_enable | Enable overtime on a tie | mp_overtime_enable 1 |
| mp_autoteambalance | Auto team balance | mp_autoteambalance 1 |
// Competitive match rules
mp_maxrounds 24
mp_roundtime 1.92
mp_roundtime_defuse 1.92
mp_freezetime 15
mp_buytime 20
mp_startmoney 800
mp_maxmoney 16000
mp_friendlyfire 1
mp_overtime_enable 1
mp_autoteambalance 1
mp_restartgame 1Bots on the server
Bots help fill an empty server and keep activity going until live players join. Manage their count with bot_quota and the quota mode, and their skill with bot_difficulty.
| Cvar | Purpose |
|---|---|
| bot_quota 8 | Desired number of bots |
| bot_quota_mode fill | fill - bots top up to the quota, freeing slots for live players |
| bot_difficulty 2 | Difficulty (0 easy, 3 expert) |
| bot_join_after_player 1 | Bots join after the first player |
| bot_chatter off | Disable bot voice lines |
// Bots to fill the server
bot_quota 8
bot_quota_mode fill
bot_difficulty 2
bot_join_after_player 1Performance and network: fps_max and sv_minrate
Network limits define how much data the server sends to clients and how smooth the game feels. It is sensible to keep them in autoexec so they are set once at start. On a dedicated server fps_max is usually set to 0 (no limit) if the CPU can handle it.
| Cvar | Purpose | Example |
|---|---|---|
| fps_max | Server FPS limit (0 = no limit) | fps_max 0 |
| sv_minrate | Minimum bitrate per client | sv_minrate 128000 |
| sv_maxrate | Maximum bitrate (0 = no limit) | sv_maxrate 0 |
| sv_mincmdrate | Minimum client cmdrate | sv_mincmdrate 64 |
| sv_maxcmdrate | Maximum client cmdrate | sv_maxcmdrate 128 |
// autoexec.cfg - applied once at start
fps_max 0
sv_minrate 128000
sv_maxrate 0
sv_mincmdrate 64
sv_maxcmdrate 128Ready server.cfg example
Let us combine the blocks above into one working config for a competitive server. Replace the names and passwords with your own.
// server.cfg - CS2 competitive server
hostname "crazypub | Competitive"
sv_password ""
sv_lan 0
rcon_password "ChangeMe_Strong_Pass"
sv_setsteamaccount "YOUR_GSLT_TOKEN"
// Mode: Competitive
game_type 0
game_mode 1
// Match rules
mp_maxrounds 24
mp_roundtime 1.92
mp_freezetime 15
mp_startmoney 800
mp_maxmoney 16000
mp_friendlyfire 1
mp_overtime_enable 1
mp_autoteambalance 1
// Network and performance
exec autoexec
mp_restartgame 1Adding the server to monitoring
Once the server is configured, add it to monitoring on monitoringcs2.com. This gives a public page with player count, the current map, an attendance graph and a place in the common list - it makes it easier for players to find you and come back.
To add it you need the external IP and the game port (27015 by default), plus an open A2S query - that is what monitoring uses to poll the server. Make sure the port is not blocked by a firewall and the server is visible from outside.
- 1Open monitoringcs2.com and go to add a server.
- 2Enter the server IP and port in the IP:27015 format.
- 3Wait for the first successful A2S poll - after it the name, map and player count appear.
- 4Copy the server page link and post it in your community description or Discord.