A Source Dedicated Server (SRCDS) still powers Team Fortress 2, Counter-Strike: Source, Garry's Mod and every other Source-engine game, and in 2026 the setup is refreshingly stable: SteamCMD, one download command, a GSLT token, a systemd unit — done. The engine's real quirk is hardware-shaped: Source is single-thread bound, so a cheap machine with high per-core clocks beats an expensive many-core box every time. Here is the complete working setup, commands included.
What SRCDS needs from hardware
The Source engine simulates the world on one main thread. More cores do not make one server faster — they let you run more servers. Practical sizing from servers we host:
- One 24-slot TF2/CS:S server: 2 cores at 3.5 GHz+, 2–4 GB RAM, any SSD. A $25–35/mo box is plenty.
- GMod with heavy addons: RAM is the constraint — Wiremod/DarkRP servers eat 4–8 GB; disk grows with the addon collection.
- A small community (3–5 game servers): one 6-core machine with high clocks, e.g. a Xeon-E 2136 (3.3–4.5 GHz) with 32 GB — $59/mo in our dedicated catalog — runs them all with room for a Mumble/TeamSpeak instance.
Latency matters more than throughput: a Source tick is small, but players feel every millisecond. Put the server where the players are — our stock covers Frankfurt, Warsaw, London, Chicago, Singapore and Sydney among 30+ cities.
Step 1: user and SteamCMD
sudo useradd -m -s /bin/bash srcds
sudo -iu srcds
mkdir ~/steamcmd && cd ~/steamcmd
curl -sSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar xz
# 32-bit libs are required on a 64-bit host (Debian/Ubuntu):
sudo dpkg --add-architecture i386 && sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6
Step 2: install the game server
One command per game — only the app ID changes:
# Team Fortress 2
./steamcmd.sh +force_install_dir ~/tf2 +login anonymous +app_update 232250 validate +quit
# Counter-Strike: Source
./steamcmd.sh +force_install_dir ~/css +login anonymous +app_update 232330 validate +quit
# Garry's Mod
./steamcmd.sh +force_install_dir ~/gmod +login anonymous +app_update 4020 validate +quit
The TF2 download is ~15 GB, CS:S ~5 GB, GMod ~4 GB before addons. Re-running the same command updates the server — you will need it on every game patch day.
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Step 3: GSLT token (mandatory for public servers)
Since 2018 Valve requires a Game Server Login Token for servers that appear in the public browser. It is free: log in at steamcommunity.com/dev/managegameservers, create a token with the game's app ID (440 for TF2, 240 for CS:S, 4000 for GMod — note these are the game IDs, not the dedicated-server IDs above), then pass it at launch with +sv_setsteamaccount YOURTOKEN. Without it your server runs but stays invisible to the server browser, and clients get "insecure server" warnings. One token per server instance.
Step 4: launch line and systemd
A typical TF2 launch:
~/tf2/srcds_run -game tf +sv_pure 1 +map cp_badlands +maxplayers 24 \
-port 27015 +sv_setsteamaccount YOURTOKEN -autoupdate
Wrap it in systemd so crashes and reboots handle themselves — /etc/systemd/system/tf2.service:
[Unit]
Description=TF2 SRCDS
After=network.target
[Service]
User=srcds
WorkingDirectory=/home/srcds/tf2
ExecStart=/home/srcds/tf2/srcds_run -game tf +map cp_badlands +maxplayers 24 -port 27015 +sv_setsteamaccount YOURTOKEN
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Then sudo systemctl enable --now tf2. Firewall: open UDP and TCP 27015 (game + RCON) and UDP 27020 if you use SourceTV. Each additional server instance on the same machine takes the next port (27016, 27017…).
Performance notes that actually matter
- Tickrate is fixed per game (66 for TF2/CS:S) — the "-tickrate 128" flag does nothing on these titles, despite what older guides claim.
- fps_max 300 in server.cfg is a sane ceiling; uncapped server FPS burns CPU for zero gameplay benefit.
- Watch single-core saturation, not load average. If
topshows one core pinned at 100% during 24-player fights, you need faster cores, not more of them. - GMod: precache addons on disk, not at join. A workshop collection served via FastDL or the workshop system prevents 5-minute join times.
Need a dedicated server?
Compare prices from top providers. Configure and order in minutes.
Picking the box
For one community server, any modern 4-core with 3.5 GHz+ clocks works — see the game hosting hardware guide for the broader sizing logic. For a multi-server community, prioritize per-core clocks and RAM headroom; our FiveM article covers the same trade-off from the GTA side. Commands verified on Debian 12 and Ubuntu 24.04, July 2026.