A Counter-Strike: Source dedicated server is Valve’s free CS:S server (SteamCMD app 232330) running without the game, so your maps, rules and regulars have a server that’s always online. To make one you download it anonymously with SteamCMD, write cstrike/cfg/server.cfg, add a free Steam token so it appears in the server browser, forward port 27015 and start it on a map like de_dust2. CS:S is light: 1–2 GB of RAM is plenty. Here’s the full setup for Windows and Linux, then bots, maps, plugins, LAN play and the fixes for “could not connect” and servers that won’t show up.
Which kind of CS:S server do you need?
There are three ways to play Counter-Strike: Source (CS:Source to most of us) with friends on your own terms. A listen server is a game you start from the CS:S menu: your PC runs the match while you play in it, which works for a quick 1v1 or a LAN. A LAN server is the same but closed to the internet. A dedicated server runs on its own, around the clock, and is the only one that suits a community.
| Listen server | Dedicated server | |
|---|---|---|
| Needs the host playing | Yes | No |
| Uses your gaming PC | Yes, game and server at once | No, a separate machine or host |
| Plugins and custom modes | Limited | Full MetaMod and SourceMod support |
Counter-Strike: Source server requirements
CS:S was built for 2004 hardware, so almost anything runs it. Valve’s own baseline for a Source server is 512 MB of RAM and 1 GB for 60 slots. A typical 20 to 32-player community server with SourceMod fits in 1–2 GB.
- RAM: 1–2 GB.
- CPU: single-thread speed counts most. One server is mostly one busy thread.
- OS: Windows or Linux. On Linux the server is a 32-bit binary, so 64-bit systems need the 32-bit libraries.
- Network: upload bandwidth for every player, and a router that lets you forward a port (not possible behind CGNAT).
How to create a CS:S dedicated server on Windows
The install is a SteamCMD download, a config file and a launch shortcut. One detail matters more for CS:S than for other Source games: download it with login anonymous. Valve’s own server list notes that the CS:S server won’t install with a normal Steam account.
- Put SteamCMD in
C:\steamcmd(it’s a free download from Valve) and launch it once. - Install the Counter-Strike: Source server (rerun the same line to update):
steamcmd +force_install_dir C:\css_server +login anonymous +app_update 232330 validate +quit - Create
C:\css_server\cstrike\cfg\server.cfgwith your settings (example below). - Launch with a shortcut or a
.batfile:C:\css_server\srcds.exe -console -game cstrike -port 27015 +maxplayers 24 +map de_dust2 +sv_setsteamaccount YOURTOKEN - Allow it through the Windows firewall when prompted.
-game cstrike is what makes it a CS:S server: cstrike is the game’s folder, and every config, map and plugin for your server lives under it.
Install a Counter-Strike: Source server on Linux
A Linux CS:S server uses the same app ID and folder layout. Make a separate user for it, install the 32-bit libraries your distro needs, then download and start it with srcds_run. Keep it in screen or tmux, or run it as a service, so it keeps going after you log out.
./steamcmd.sh +force_install_dir ~/css +login anonymous +app_update 232330 validate +quit
cd ~/css
./srcds_run -console -game cstrike -port 27015 +maxplayers 24 +map de_dust2 +sv_setsteamaccount YOURTOKEN
For a managed route, LinuxGSM installs CS:S as cssserver and gives you start, stop, update and console commands, plus a dependency check. Or let someone else run the box: Counter-Strike: Source server hosting starts with the server already installed.
Get a GSLT so your server shows up online
Your server needs a Game Server Login Token to be listed on Steam’s master server list, which is what the internet tab of the server browser reads. Without it, the server runs and friends can still connect by IP, but nobody can find it by searching. The token is free.
- Open Steam Game Server Account Management.
- Use app ID 240 (Counter-Strike: Source itself, not the server’s 232330) and add a memo.
- Put the token on the launch line with
+sv_setsteamaccount.
The Steam account must own CS:S, have a registered phone, and not be limited. Unused tokens expire after a long idle period; if the console reports Could not establish connection to Steam servers with result 18 or 106, make a new one.
CS:S server ports
Forward UDP 27015 for players and TCP 27015 for RCON to the machine running the server. UDP 27020 is SourceTV, only needed if you broadcast matches. Change the main port with -port when you run more than one server on the same IP.
| Port | Protocol | Purpose | Change with |
|---|---|---|---|
| 27015 | UDP | Game and server queries | -port |
| 27015 | TCP | RCON | -port |
| 27020 | UDP | SourceTV | +tv_port, or -nohltv to close it |
| 27005 | UDP | Client port | -clientport |
| 26900 | UDP, outgoing | Steam | -sport |
Testing it yourself from inside your network can fool you, because pinging your own public IP fails on some routers and ISPs. Have a friend try to connect, or check from a machine outside your network.
CS:S server.cfg: config and settings
The Counter-Strike: Source server config is cstrike/cfg/server.cfg. It’s a list of console variables, one per line, run when the server starts and on map changes. These are the settings that shape a match; everything else can stay at its default until you have a reason to change it.
// cstrike/cfg/server.cfg
hostname "Dust2 & Office 24/7"
rcon_password "long-random-string"
sv_password "" // set one for a private server
sv_region 4 // 0 US east, 1 US west, 2 S. America, 3 Europe, 4 Asia, 5 Australia, 6 Middle East, 7 Africa
sv_lan 0 // 1 = LAN only, no master server heartbeat
mp_timelimit 30 // minutes per map (0 = no limit)
mp_maxrounds 0 // rounds before the map changes
mp_winlimit 0
mp_roundtime 2 // minutes per round
mp_freezetime 6 // seconds frozen at round start
mp_buytime 1 // minutes to buy after the round starts
mp_startmoney 800
mp_c4timer 45 // seconds from plant to explosion
mp_friendlyfire 0
mp_tkpunish 0
mp_autokick 1 // kick idlers and team killers
mp_autoteambalance 1
mp_limitteams 2 // max players one team can have over the other
sv_alltalk 0
sv_allowdownload 1
sv_downloadurl "" // fast download URL for custom maps
Change a value live from the server console, then copy it into the file so it survives a restart. Use mp_restartgame 3 after changing round settings mid-map. The tickrate is fixed on current CS:S, so a -tickrate launch option does nothing.
Maps and the map cycle
The server ships with the official maps. cs_ maps are hostage rescue (cs_office, cs_italy, cs_assault, cs_militia, cs_havana, cs_compound) and de_ maps are bomb defusal (de_dust2, de_dust, de_inferno, de_nuke, de_train, de_aztec, de_cbble and more). The rotation is set by mapcycle.txt, one map name per line without the .bsp, and mapcyclefile lets you point the server at a different file.
Custom maps and fast download
- Put the
.bspincstrike/mapsand add its name to the map cycle. - Upload the same files to a web server and set
sv_downloadurlto its address, keepingsv_allowdownload 1. - Change to the map with
changelevel mapnameand join from a PC that doesn’t have it, to test the download.
Skip step 2 and players who don’t have a custom map get a crawling in-game download or drop out when the server changes to it.
Bots on a CS:S server
Yes, you can play with bots in Counter-Strike: Source, and on your own server you control how many and how good. You add them in the server console or over RCON. A quota keeps teams full and steps aside as humans join.
| Command | Effect |
|---|---|
bot_add, bot_add_ct, bot_add_t |
Add a bot, optionally to a team |
bot_difficulty 2 |
Skill for new bots: 0 easy, 1 normal, 2 hard, 3 expert |
bot_quota 10 with bot_quota_mode fill |
Keep 10 players in the game; a bot leaves when a human joins |
bot_quota_mode match |
Keep a humans-to-bots ratio instead (quota 1 = one bot per human) |
bot_join_after_player 0 |
Let bots play on an empty server |
bot_knives_only |
Knife-only bots, a classic warm-up |
bot_kick |
Remove all bots |
Plugins, admin and community game modes
Admin tools and custom modes on CS:S come from MetaMod:Source and SourceMod. Zombie mod, gun game, surf, jailbreak and deathmatch servers are all SourceMod plugins plus their own maps. Extract MetaMod, then SourceMod, into cstrike, so the folders land at cstrike/addons/metamod and cstrike/addons/sourcemod.
- Restart and run
meta listin the server console; SourceMod should be listed.sm versionconfirms it. - Add your admin line,
"STEAM_0:1:12345" "99:z", toaddons/sourcemod/configs/admins_simple.iniand runsm_reloadadmins. - Drop plugin
.smxfiles inaddons/sourcemod/pluginsand check them withsm plugins list.
Watch plugin versions. A plugin compiled for a different SourceMod version can load without complaint and then fail at runtime, so it looks like one feature quietly stopped working. The SourceMod error log is the first place to look.
CS:S server commands for admins
These work in the server console or via RCON (rcon_password yourpassword in your game console, then rcon <command>).
| Command | Use |
|---|---|
status |
Map, players, Steam IDs and the server’s address |
changelevel de_inferno |
Switch map |
kick <name> |
Kick a player |
banid |
Add a Steam ID to the ban list; writeid saves permanent bans to banned_user.cfg |
removeid <SteamID> / removeip <IP> |
Unban by Steam ID or IP, then writeid / writeip |
listid |
List banned Steam IDs |
mp_restartgame 1 |
Restart the match in one second |
exec server.cfg |
Reload your config |
How to connect to a Counter-Strike: Source server
To connect, open the developer console in CS:S and type connect plus the server’s IP and port. To find a server, use the server browser’s Internet tab and search by name, or the Favorites tab for one you’ve added. A password-protected server asks for the password on join.
connect 203.0.113.25:27015
Give friends your public IP; players on the same network use the server’s local IP. If people search the browser and can’t find you, the token is the first thing to check.
LAN servers, Hamachi and playing with friends
For a LAN party, launch with +sv_lan 1. A LAN server sends no heartbeat to the master server and skips Steam authentication, and players on the same network find it on the browser’s LAN tab. Old guides use Hamachi or a similar virtual LAN to play with friends over the internet. You don’t need that with a dedicated server: forward the port, keep sv_lan 0, and friends connect online by IP.
A note on v34: that’s the old Source 2006 build of CS:S that Valve replaced in June 2010, and in February 2025 the game moved to the Team Fortress 2 engine branch. The server you download through SteamCMD today is the current Steam version, and this guide covers that one only, not v34 or non-Steam builds.
Common CS:S server problems
| Problem | Likely cause | Fix |
|---|---|---|
| Server not in the internet browser | No GSLT, an expired one, or sv_lan 1 |
Add a token with +sv_setsteamaccount; set sv_lan 0 |
| “Could not establish connection to Steam servers” | The server can’t reach Steam, or the token was rejected | Check outbound internet and the token; regenerate it on result 18 or 106 |
| Server not responding | Port 27015 not forwarded or blocked, or no map loaded yet | Always launch with +map; check the forward and firewall from outside |
| Cannot find LAN server | Players on a different subnet or network, or the firewall drops broadcast replies | Join by local IP with connect; allow srcds through the firewall |
| SteamCMD won’t install app 232330 | Logged in with a Steam account | Use +login anonymous |
| Players can’t join after a patch | A CS:S update came out and the server is still on the old version | Stop the server, rerun the SteamCMD line, restart |
| Players drop when the map changes | Custom map with no fast download | Set up sv_downloadurl |
| A plugin feature silently stopped | Plugin built for another SourceMod version | Update the plugin and SourceMod; check the error log |
Skip the setup: rent a CS:S server
Doing it yourself means a machine that never sleeps, a port forward, a token to keep alive, a fast download host for custom maps and a SourceMod install to check after every update. If you’d rather spend the time playing, Counter-Strike: Source server hosting on GameTeam has a server running in minutes at a fixed address. You pay per GB of RAM, from $0.49/GB a week or $1.99/GB billed monthly, with unlimited slots, so the player count is whatever CS:S and your config allow. DDoS protection is included and you get a 72-hour money-back window. The built-in AI copilot handles the server.cfg and plugin work: tell it “make it 5v5 with 2-minute rounds, friendly fire on and de_dust2, de_inferno and cs_office in the map cycle” and it writes the config and map cycle, then restarts. Ask “why did the gun game plugin stop working?” and it reads the SourceMod log and names the plugin.
FAQ
Is a Counter-Strike: Source dedicated server free?
Yes. The server is a free anonymous SteamCMD download and the token is free. You pay only for the machine and connection, or for a host.
How many players can a CS:S server have?
Most community servers run 16 to 32, set with +maxplayers. Competitive 5v5 needs 10 plus room for spectators.
How do I make a CS:S server for friends only?
Set sv_password in server.cfg and share the IP and password. With sv_lan 1 it’s limited to your local network instead.
Can I play Counter-Strike: Source with bots on my server?
Yes. bot_add adds one, bot_quota keeps a set number, and bot_difficulty sets skill from 0 (easy) to 3 (expert).
How do I unban a player?
removeid with their Steam ID, or removeip with their IP, then writeid or writeip so it sticks after a restart.
Is CS:S still active?
Yes. Community servers still run every mode from 24/7 Dust2 to zombie and surf, and Valve updated the game as recently as February 2025, when it moved CS:S to the Team Fortress 2 engine branch.
Where are the CS:S server files?
In the cstrike folder of your install: cfg/ for server.cfg, maps/ for maps and addons/ for MetaMod and SourceMod.
Hosting more than one Source game? See our Team Fortress 2 dedicated server guide and Left 4 Dead 2 dedicated server guide.
