Counter-Strike: Source Server Setup: SteamCMD, server.cfg, RCON & SourceMod
How to stand up a Counter-Strike: Source dedicated server: installing the free app 232330 with SteamCMD (anonymous login works), the srcds_run launch line and the +ip 0.0.0.0 RCON-binding fix, why CS:S is locked to 66 tick (the -tickrate flag is dead), which ports to forward, the sv_lan 0 visibility trap, enabling genuine Source RCON, the honest GSLT situation, and the SourceMod + Metamod:Source admin stack that still works natively on CS:S.
Counter-Strike: Source is still one of the busiest classic Source games to host - a real community-server scene 18 years on, and the dedicated server is free, runs natively on Linux, and does not require you to own the game. If your mental model comes from CS2, unlearn a couple of things: CS:S runs the older Source-1 engine, so it uses srcds (not CS2's dedicated binary), it is locked to 66 tick, and the classic SourceMod stack works on it natively - none of the CS2 plugin breakage applies here.
This guide is for Counter-Strike: Source. For the admin command vocabulary once your server is running, see the companion Counter-Strike: Source RCON Commands reference.
Installing the server with SteamCMD
The dedicated server is its own free Steam app - 232330 ("Counter-Strike: Source Dedicated Server"), separate from the game client (240). Anonymous login works:
steamcmd +force_install_dir /home/css/server +login anonymous +app_update 232330 validate +quit
Re-run the same command with the server stopped to update. On 64-bit Linux, install the 32-bit libraries first - SteamCMD itself is 32-bit and needs them regardless:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install lib32gcc-s1 lib32stdc++6
Launching the server
CS:S ships a native Linux binary; launch it with srcds_run and the cstrike mod folder:
./srcds_run -game cstrike -console -usercon +map de_dust2 +maxplayers 32 +ip 0.0.0.0 -port 27015 +exec server.cfg
+ip 0.0.0.0is the one to remember on Linux. Without binding to all interfaces, remote RCON connections frequently fail to reach the server - this is the load-bearing fix, more so than-usercon(which is good practice but not what enables RCON; the password does).+maxplayersis startup-only and defaults to 32 - you cannot change it without a restart.- Run it under
screen,tmux, or a systemd unit;srcds_runauto-restarts after a crash.
CS:S is fixed at 66 tick. The -tickrate command-line flag you will see in old guides is dead on modern CS:S builds - it does nothing without a third-party patch tool. Do not promise "100 tick"; plan around 66. (This is a real difference from CS2, which has configurable tick.)
Ports to forward
| Port | Protocol | Purpose |
|---|---|---|
| 27015 | UDP | Game traffic + server queries |
| 27015 | TCP | RCON (same number, different transport) |
| 27020 | UDP | SourceTV, only if you enable it (tv_enable 1) |
Query and game share 27015 with no offset, and RCON is TCP on that same port - forward 27015 for both UDP and TCP. The 27005 port in old guides is a game client's outbound port; you do not forward it on a server. Ignore the padded 27031-27036 ranges some port-forwarding sites list - that is Steam client streaming lore, not a CS:S server requirement.
server.cfg essentials
CS:S auto-executes cstrike/cfg/server.cfg (the +exec server.cfg above) on load. A minimal working config:
hostname "My CS:S Server"
rcon_password "use-a-long-random-string"
sv_password "" // set a value to make the server private
sv_lan 0
sv_lan 0 is mandatory to be seen on the internet. With sv_lan 1 the server runs fine and you can join it locally, but it never appears in the internet server browser and rejects outside clients as "restricted to local clients" - this is the single most common "my server doesn't show up" cause for CS:S.
RCON: real Source RCON
CS:S speaks the standard Valve Source RCON protocol over TCP on the game port - the same protocol as CS2, TF2, and every srcds game, so any Source RCON tool works. Set rcon_password in server.cfg to enable it; leave it empty to keep RCON off. One caution: Source RCON traffic is unencrypted, so a weak password is sniffable - use a long random string, and only expose the RCON port to networks you trust.
The GSLT question (honest answer)
For CS:GO and CS2, a Game Server Login Token is mandatory to appear in the server browser. For CS:Source, sources genuinely disagree - some hosting docs list a GSLT as required for the master list, others state CS:S does not need one, and in practice most "server not listed" reports are resolved by sv_lan 0 alone, with no token involved. The safe, cost-free approach:
- Set
sv_lan 0and check whether your server appears in the browser. - If it does not, register a token (it is free - create it under the client app
240, not the server app, and add+sv_setsteamaccount YOUR_TOKENto the launch line).
Don't blindly copy the "GSLT is required" step from a CS:GO/CS2 tutorial as if it were a hard CS:S requirement - it may not be.
SourceMod + Metamod:Source
Here CS:S has an advantage over CS2: the classic Source-1 admin stack works natively and is stable in 2026. Install in order:
- Metamod:Source - the plugin loader, extracted into
cstrike/addons/. - SourceMod - admin menus, persistent bans, votes, and thousands of community plugins, also into
cstrike/addons/.
Grab the stable branch of each. Admins are configured in addons/sourcemod/configs/admins_simple.ini. (Note: none of the CS2 SourceMod breakage - the MetaMod:Source v2 / CounterStrikeSharp situation - applies to CS:S; this is the legacy stack that just works.)
FastDL for custom content
To serve custom maps and content at web speed instead of the slow in-game transfer, point clients at an HTTP mirror in server.cfg:
sv_allowdownload 1
sv_allowupload 0
sv_downloadurl "http://files.example.com/css"
Mirror your maps/, sound/, materials/ folders under that URL and pre-compress large files as .bz2 - Source clients decompress them transparently.
Hardware
Like all Source games the CS:S server is effectively single-thread bound - per-core clock speed beats core count, and one instance per core is the standard way to scale. A vanilla 32-slot instance is light on RAM (plugins raise it); a small 2 GB VPS runs one comfortably, plus disk for the install and any custom content.
MantaScope tracks the live Counter-Strike: Source server list with population history, per-server rank, uptime and downtime incidents, and player counts that separate humans from bots. Because CS:S speaks genuine Valve Source RCON, you can claim your server on MantaScope and administer it from the browser: live player list, kick/ban and console over the rcon_password you set above, plus population graphs, scheduled messages, automations and Discord notifications.