All guides

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.

CvarPurposeExample
hostnameServer name in the list and monitoringhostname "crazypub | Retake"
sv_passwordJoin password (empty = open)sv_password ""
sv_lanLAN mode (0 for the internet)sv_lan 0
sv_regionServer region for matchmakingsv_region 3
sv_setsteamaccountGSLT token for a public serversv_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.

Modegame_typegame_mode
Competitive01
Casual00
Arms Race10
Demolition11
Deathmatch12
Wingman (2v2)02
Custom30
// Competitive mode
game_type 0
game_mode 1

// Deathmatch
// game_type 1
// game_mode 2

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

CvarPurposeExample
mp_maxroundsRounds in a matchmp_maxrounds 24
mp_roundtimeRound time (minutes)mp_roundtime 1.92
mp_roundtime_defuseRound time on defuse mapsmp_roundtime_defuse 1.92
mp_freezetimeFreeze time at round start (sec)mp_freezetime 15
mp_buytimeBuy time (sec)mp_buytime 20
mp_startmoneyStarting moneymp_startmoney 800
mp_maxmoneyMoney capmp_maxmoney 16000
mp_friendlyfireDamage to teammatesmp_friendlyfire 1
mp_overtime_enableEnable overtime on a tiemp_overtime_enable 1
mp_autoteambalanceAuto team balancemp_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 1

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

CvarPurpose
bot_quota 8Desired number of bots
bot_quota_mode fillfill - bots top up to the quota, freeing slots for live players
bot_difficulty 2Difficulty (0 easy, 3 expert)
bot_join_after_player 1Bots join after the first player
bot_chatter offDisable bot voice lines
// Bots to fill the server
bot_quota 8
bot_quota_mode fill
bot_difficulty 2
bot_join_after_player 1

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

CvarPurposeExample
fps_maxServer FPS limit (0 = no limit)fps_max 0
sv_minrateMinimum bitrate per clientsv_minrate 128000
sv_maxrateMaximum bitrate (0 = no limit)sv_maxrate 0
sv_mincmdrateMinimum client cmdratesv_mincmdrate 64
sv_maxcmdrateMaximum client cmdratesv_maxcmdrate 128
// autoexec.cfg - applied once at start
fps_max 0
sv_minrate 128000
sv_maxrate 0
sv_mincmdrate 64
sv_maxcmdrate 128

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

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

  1. 1Open monitoringcs2.com and go to add a server.
  2. 2Enter the server IP and port in the IP:27015 format.
  3. 3Wait for the first successful A2S poll - after it the name, map and player count appear.
  4. 4Copy the server page link and post it in your community description or Discord.

Frequently asked questions

Do I need to set tickrate 128 on a CS2 server?+

No. CS2 has no tickrate choice via a launch parameter like CS:GO. The Source 2 engine uses sub-tick, so accuracy does not depend on the old -tickrate. That parameter has no effect in CS2.

What are the game_type and game_mode values for competitive?+

For Competitive set game_type 0 and game_mode 1. This pair must be set together and before the map loads - ideally in the launch parameters or at the top of server.cfg.

What is the difference between server.cfg and autoexec.cfg?+

server.cfg runs on every map start and holds the match rules and mode. autoexec.cfg is handy for one-time settings at server launch - network limits and fps_max. To make autoexec run, add exec autoexec to server.cfg.

Is a GSLT token required for a public server?+

Yes. For the server to be visible on the internet and in the public list you need a GSLT token. Get one from the Steam game server management page and set it via sv_setsteamaccount in server.cfg.

How do I fill an empty server with bots without blocking live players?+

Set bot_quota to the desired number and bot_quota_mode fill. In fill mode bots top the server up to the quota and free slots when live players join.

What do I need to add the server to monitoring?+

You need the external IP and game port (27015 by default) and an open A2S query. Add the server on monitoringcs2.com in the IP:27015 format and wait for the first poll - after it the name, map and player count appear.