How to Set Up a CS2 Server on Linux: Step by Step

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.

White Bilişim

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

ComponentMinimumRecommended
Operating systemUbuntu 22.04 / Debian 12Ubuntu 24.04
CPU2 cores2 fast cores per server
RAM2 GB4 GB or more
Disk40 GB60 GB+ NVMe SSD
Network1 Gbps10 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 tar

Do not run the server as root. Create a dedicated user:

sudo useradd -m -s /bin/bash cs2
sudo su - cs2

2. 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 +quit

The 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:

  1. Go to steamcommunity.com/dev/managegameservers
  2. Enter 730 in the App ID field
  3. 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 0

Tick 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_updaterate and cl_cmdrate are 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.target
sudo systemctl daemon-reload
sudo systemctl enable --now cs2

7. 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-*.zip

After 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

PortProtocolPurpose
27015UDP/TCPGame traffic and RCON
27020UDPSourceTV
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27020/udp

Running 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 0 setting
  • 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.gi edit was saved
  • Check that CounterStrikeSharp appears in the meta list output
  • 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.