
How to Set Up a CS2 Server on Linux: Step by Step
Install a Counter-Strike 2 server on a Linux VDS with SteamCMD: sub-tick, Metamod:Source and CounterStrikeSharp, ports and several servers on one box.
How to Set Up a CS2 Server on Linux
Standing up a Counter-Strike 2 server is roughly a half hour job on the right VDS. This guide covers the SteamCMD install, what actually decides performance under sub-tick, the Metamod:Source and CounterStrikeSharp plugin stack, and how to run several CS2 servers on a single machine.
Requirements
| Component | Minimum | Recommended |
|---|---|---|
| Operating system | Ubuntu 22.04 / Debian 12 | Ubuntu 24.04 |
| CPU | 2 cores | 2 fast cores per server |
| RAM | 2 GB | 4 GB or more |
| Disk | 40 GB | 60 GB+ NVMe SSD |
| Network | 1 Gbps | 10 Gbps, low ping |
💡 Valve publishes no core-count or threading requirement for the CS2 dedicated server. What makes the difference in practice is core speed, not core count, so go with the high frequency Ryzen Premium VDS line.
1. Preparing the System
Update the system first and install the required 32-bit libraries:
sudo apt update && sudo apt upgrade -y
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 curl tarDo not run the server as root. Create a dedicated user:
sudo useradd -m -s /bin/bash cs2
sudo su - cs22. Installing SteamCMD
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -3. Downloading the CS2 Server Files
The App ID for the CS2 server is 730:
~/steamcmd/steamcmd.sh +force_install_dir ~/cs2-server \
+login anonymous +app_update 730 validate +quitThe download is roughly 35-40 GB and takes a few minutes on an NVMe SSD.
4. Getting a Game Server Login Token (GSLT)
Your server needs a GSLT from Steam before it can appear in the public list:
- Go to
steamcommunity.com/dev/managegameservers - Enter 730 in the App ID field
- Save the generated token
5. Starting the Server
cd ~/cs2-server/game/bin/linuxsteamrt64
./cs2 -dedicated -console -usercon \
+map de_dust2 \
+sv_setsteamaccount YOUR_GSLT_TOKEN \
-port 27015 \
-maxplayers_override 16 \
+sv_lan 0Tick Rate Is Not a Setting in CS2
Do not carry the CS:GO habit over and add a tick rate parameter to the launch line. Moving to Source 2, Valve removed tick rate selection and switched to sub-tick: shooting, movement and grenade events are processed at the instant they happen rather than on a tick boundary. The server runs a 64 Hz loop.
- Source 2 has no tick rate launch parameter and no tick rate ConVar; passing one is silently ignored
- The CS:GO rate values
cl_updaterateandcl_cmdrateare gone as well - A package advertised as a “128 tick CS2 server” is not technically different in any way
⚠️ The one variable still in your hands is whether the server produces that 64 Hz loop without slipping, and that comes down to processor clock speed, network quality and low jitter. A low frequency processor falls behind in busy moments.
6. A systemd Service for Autostart
sudo nano /etc/systemd/system/cs2.service[Unit]
Description=CS2 Dedicated Server
After=network.target
[Service]
Type=simple
User=cs2
WorkingDirectory=/home/cs2/cs2-server/game/bin/linuxsteamrt64
ExecStart=/home/cs2/cs2-server/game/bin/linuxsteamrt64/cs2 -dedicated -console -usercon +map de_dust2 +sv_setsteamaccount TOKEN -port 27015
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now cs27. Installing Metamod:Source and CounterStrikeSharp
The most common mistake on the plugin side is going looking for SourceMod. Its stable 1.12 release only supports Source 1 games and does not run on CS2. The stack used on CS2 is the Metamod:Source 2.x development build plus CounterStrikeSharp on top of it.
Install Metamod:Source first, then CounterStrikeSharp. Both extract into the game/csgo/addons directory:
cd ~/cs2-server/game/csgo
# Extract the Metamod:Source and CounterStrikeSharp archives into this directory
tar zxvf mmsource-*.tar.gz
unzip counterstrikesharp-*.zipAfter extraction you have to add the Metamod search path to gameinfo.gi:
Game_LowViolence csgo_lv
Game csgo/addons/metamod
Game csgo
Restart the server and run meta list in the console; if CounterStrikeSharp shows up in the output the stack is in place. List loaded plugins with css_plugins list.
8. Firewall and Ports
| Port | Protocol | Purpose |
|---|---|---|
| 27015 | UDP/TCP | Game traffic and RCON |
| 27020 | UDP | SourceTV |
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27020/udpRunning Multiple CS2 Servers on One Machine
Tournament, retake and practice servers can all live on a single VDS. For each instance:
- Use a different port (27015, 27016, 27017 and so on)
- Define a separate systemd service
- Budget roughly two cores per active server
A 6 core package comfortably runs 2-3 servers. You can pack in more if they will not all fill up at the same time, though we would not recommend that for a tournament server.
Common Problems
Server does not show in the list
- Check that the GSLT token is still valid
- Verify the
sv_lan 0setting - Make sure UDP port 27015 is open
Players complain about ping
- Make sure the server sits close to your player base
- For players in Turkey, hosting abroad adds 60-90 ms of latency
Plugins do not load
- Confirm the
gameinfo.giedit was saved - Check that CounterStrikeSharp appears in the
meta listoutput - Do not try to install a SourceMod archive; the stable release does not support CS2
Conclusion
Setting up a CS2 server is straightforward once the hardware is right. Core speed and the distance to your players are what actually matter. Our Istanbul located servers deliver 5-20 ms ping from major Turkish cities, and DDoS protection is standard on every package.
👉 See our CS2 server hosting page to match a package, or browse game server hosting for other titles.