Blog

How to host a Counter-Strike 2 server

JSJesse Schokker·August 17, 2026·6 min read
How to host a Counter-Strike 2 server
Required firstLogin tokenFree from Steam. Without it you are invisible.
Matters mostLocationLatency outweighs raw processing power.
Set at launchGame modeNot in server.cfg.
Watch forConfig load orderMode configs override server.cfg.

Modest by modern standards, but latency-sensitive in a way survival games are not. Nobody notices a survival server responding fifty milliseconds late; every Counter-Strike player does. Location and network quality matter more here than raw processing power, and consistency matters more than average speed.

How to install it

  1. Get a Game Server Login Token first. Steam issues these free from its game server account page. Do this before anything else so it is not the thing blocking you at the end.
  2. Install Steam’s command-line tool, then the CS2 dedicated server using an anonymous login.
  3. Start it with your token, a map and a game mode. All three are launch arguments rather than config settings.
  4. Check it appears in the community browser, not just that it accepts a direct connection. Those are different tests, and only one proves the token works.
# Around 60 GB — give it time.
steamcmd \
  +force_install_dir /home/cs2/server \
  +login anonymous \
  +app_update 730 validate \
  +quit

# Game mode and map are launch arguments, not config settings.
./game/bin/linuxsteamrt64/cs2 -dedicated \
  +map de_dust2 \
  +game_type 0 +game_mode 1 \
  +sv_setsteamaccount YOUR_TOKEN
Get the token first

Without a Game Server Login Token the server still runs and still accepts direct connections — it is simply invisible in the browser. That sends people hunting for firewall problems that do not exist. Generate one free from Steam’s game server account page before you start.

How to configure it

game/csgo/cfg/server.cfghostname, passwords, general settings
gamemode_*_server.cfgper-mode rules — note the _server suffix
launch argumentstoken, starting map, game mode
server.cfg
hostname "Your server name"
rcon_password "something-long"
sv_password ""
sv_lan 0
sv_cheats 0

// Round rules usually belong in the gamemode config,
// which loads after this file and will override it.
mp_autoteambalance 1
mp_friendlyfire 0
Why a setting here sometimes does nothing

Mode configs load after server.cfg and overwrite what it set. Put mode-specific rules in a file suffixed _server — for example gamemode_competitive_server.cfg — which also stops a game update replacing your settings.

  • Game mode is set at launch, not in server.cfg. Trying to change it from a config file is a common dead end.
  • Mode-specific settings live in their own files, which is why a setting in server.cfg sometimes appears to be ignored — the mode config loads after it and overwrites it.
  • Set a real remote-console password or do not enable remote admin at all.
  • Host near your players. For a competitive shooter this outweighs almost every other decision.
The mistake almost everyone makes

Skipping the login token because the server appears to work. It will run and accept direct connections quite happily while being invisible in the browser, which sends people looking for firewall problems that are not there.

Written from experience running these servers. If something here no longer matches what you are seeing, tell us and we will recheck it.

Share this article

JS
Jesse SchokkerFounder & Engineer, GameDash

Building GameDash at Schokker IT — the game server control panel we always wished existed. Writes about infrastructure automation, the SDK and running game servers at scale.

Get early access

GameDash is not open for sign-ups yet. Leave your e-mail and we will tell you the moment it is. Your address is never shared with any 3rd parties and is used exclusively for GameDash news.