How to Set Up a Counter-Strike 2 (CS2) Server
Host your own CS2 server for scrims and community play. Install with SteamCMD, get a GSLT token, pick a game mode and open the ports.
Running your own Counter-Strike 2 server gives you a private space for scrims, practice and community matches with the tickrate, maps and plugins you want. Here's how to stand one up on a Linux VPS.
What you'll need
- A VPS with 2 GB RAM for a 10-player match; 4 GB with plugins and demos.
- Low latency to your players โ for competitive play, ping is everything, so pick a location close to them.
- A free Game Server Login Token (GSLT) from Steam.
Step 1: Get a GSLT
CS2 public servers require a token. Visit steamgameserveraccount.com while logged in, create a token for App ID 730, and save the string โ you'll need it at launch.
Step 2: Install SteamCMD
sudo add-apt-repository multiverse -y
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install steamcmd screen -y
Step 3: Download CS2
sudo adduser --disabled-password cs2
sudo su - cs2
steamcmd +force_install_dir ./cs2-server +login anonymous +app_update 730 validate +quit
App ID 730 now serves the CS2 dedicated server. It's a large download.
Step 4: Launch the server
CS2's launcher lives a few folders deep. Start a competitive match on Dust II like this:
screen -S cs2
cd cs2-server/game/bin/linuxsteamrt64
./cs2 -dedicated -console -usercon \
+game_type 0 +game_mode 1 \
+mapgroup mg_active +map de_dust2 \
+sv_setsteamaccount YOUR_GSLT_TOKEN \
+sv_password "" +hostname "My CS2 Server"
The game_type and game_mode pair sets the format โ 0 1 is competitive, 0 0 is casual, 1 2 is Deathmatch, and 0 2 is Wingman. Get this pair wrong and the server loads the wrong ruleset, so double-check it against the mode you want before players connect.
Step 5: Open the ports
CS2 uses UDP 27015 for the game and TCP 27015 for RCON:
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
Step 6: Connect
In CS2, open the console (enable it in settings) and type:
connect your-ip:27015
If you set an RCON password with +rcon_password, you can administer live with rcon commands.
Adding plugins with Metamod and CounterStrikeSharp
For custom game modes, retakes, surf or admin tools, install Metamod:Source and CounterStrikeSharp. These load into the server and open up a huge library of community plugins. Reinstall or update them after each CS2 patch, since Valve updates can temporarily break them.
Useful launch and server settings
A few convars make a practice or scrim server much nicer. Set them at launch or in a config file:
+sv_cheats 0
+mp_autoteambalance 1
+mp_maxrounds 24
+sv_hibernate_when_empty 0
Setting sv_hibernate_when_empty 0 keeps the server warm so players don't hit a stutter when the first person joins. For a dedicated practice server, a separate config with sv_cheats 1, sv_infinite_ammo and mp_warmup_end lets you throw grenades and rehearse executes.
Recording demos
CS2 servers can record match demos for review. Use tv_enable 1 to run GOTV, or trigger a demo with the record and stop console commands. Demos are invaluable for teams reviewing scrims โ store them off-server as part of your backups.
Why location beats everything
Counter-Strike is unforgiving about latency โ a 20 ms difference is felt in every peek and trade. Host the server as physically close to your players as you can. If your group is spread across Asia-Pacific, a Singapore location is often the best single compromise.
The quick path
Nxeon's NVMe VPS in Singapore gives you the low-latency location and fast storage CS2 demands, with full root to install Metamod and CounterStrikeSharp. A one-click deploy handles SteamCMD and the base launch config, so you can be running scrims the same day you sign up โ just drop in your GSLT and pick your maps.