How to set up a CS:GO server from scratch
Full setup walkthrough for a Counter-Strike: Global Offensive Legacy dedicated server: deploy via SteamCMD with a GSLT, configure server.cfg, set 128-tick launch options, install Metamod:Source + SourceMod, add plugins (Retakes, Surf Timer, KZTimer, MGE, DM), set up Get5 for matchmaking, and fix the common errors. Perfect for community servers, PUGs, and practice pick-up games still running on the Source 1 engine.
- What you need first
- CS:GO today โ the Legacy branch
- Get a Game Server Login Token (GSLT)
- Deploy the server (1-click)
- File layout & where things go
- Launch options (128-tick, Workshop, startmap)
- Core
server.cfgsettings - Gamemodes โ Competitive, Casual, DM, Arms Race
- Install Metamod:Source + SourceMod
- Popular plugins (Retakes, Surf, KZ, MGE, Get5)
- Connect and test
- Common errors and fixes
What you need first
Get these in order before deploying:
- An active CS:GO plan on Fatality Servers. See our CS:GO hosting plans if you haven't signed up yet.
- A Steam account that owned CS:GO before the CS2 transition โ the Legacy branch is accessible only to accounts that had CS:GO in their library before it was replaced by CS2. New Steam accounts can't download the CS:GO server binary.
- A GSLT (Game Server Login Token) โ required for the server to show in the public browser. See the GSLT section.
- A basic SFTP client (FileZilla, WinSCP).
- A decision on tickrate โ 128-tick is standard for community / PUG / practice servers, 64-tick is the Valve default.
Sizing note: CS:GO is much lighter than CS2. A 10-slot 128-tick competitive server fits comfortably in 2 GB RAM on a single Ryzen core; a 32-slot surf or deathmatch server with SourceMod + a dozen plugins fits in 3-4 GB. Our Community plan is already oversized for typical community use.
CS:GO today โ the Legacy branch
CS2 replaced CS:GO as the "main" Counter-Strike in October 2023. The CS:GO server binaries still work through Steam's Legacy branch, but with caveats:
- SteamCMD can only download the CS:GO dedicated server if your Steam account had CS:GO registered prior to the switch. New accounts get CS2 only.
- No further Valve patches. The CS:GO binary is frozen at the last pre-CS2 build.
- Matchmaking / ranked play servers no longer work โ Valve's MM backend only accepts CS2. Community servers, PUG lobbies, surf, KZ, retakes, DM, and Get5 tournaments all still function normally.
- Workshop still serves CS:GO maps. Custom map downloads work.
If you want a modern competitive experience, see the CS2 setup guide instead. CS:GO is for communities still running 128-tick SourceMod stacks that haven't all been ported to CS2 yet.
Get a Game Server Login Token (GSLT)
Without a GSLT, your server will not appear in the browser and clients disconnect after 5 minutes.
-
Go to the Steam GSLT page
Visit steamcommunity.com/dev/managegameservers while signed in on an eligible Steam account.
-
Create a token for App ID 730
Note: CS:GO Legacy uses App ID 730 for the GSLT (same namespace as CS2), but the dedicated server App ID for SteamCMD downloads is 740. Token goes under 730.
-
Save the 32-char token
Copy it immediately. Regenerating invalidates the old token.
GSLTs can be revoked. If Valve detects the token being used across multiple servers concurrently, or if the backing account gets a VAC / game ban, the token dies. Keep one GSLT per server, on a clean account.
Deploy the server (1-click)
Our CS:GO template runs SteamCMD with the Legacy opt-in flag to pull the dedicated server (App ID 740), writes a 128-tick starter config, asks for your GSLT on first boot, and opens UDP 27015 on your plan's IP.
-
Pick the CS:GO template at checkout
On the CS:GO hosting page, pick a plan sized for your slot count and mode (10 for PUG / comp, 16 for wingman / MGE, 20-32 for DM / surf / KZ). Pick the location closest to your playerbase.
-
Paste your GSLT
First deploy, the panel prompts for your GSLT โ it injects into the launch line as
+sv_setsteamaccount <token>. -
Wait for SteamCMD to finish
CS:GO dedicated server is ~30 GB. First install takes 8-15 minutes depending on source speed. Our template uses the
-beta 1.38.7.2legacy opt-in automatically. -
Confirm the server is listening
Console should show something like:
Server is hibernating VAC secure mode is activated Connection to Steam servers successful. Public IP is YOUR-IP. Assigned anonymous gameserver Steam ID [A:1:12345:6789]. Connected to Steam Coordinator. Game Coordinator version 1.38.7.2, client connected: no (public beta)VAC secure mode is activated + a Steam ID assignment = GSLT registered correctly.
File layout & where things go
CS:GO uses the classic Source 1 file tree:
csgo/ โ main game content folder
โโโ cfg/
โ โโโ server.cfg โ main server config
โ โโโ autoexec.cfg โ runs at server start (before server.cfg)
โ โโโ gamemode_competitive.cfg
โ โโโ gamemode_casual.cfg
โ โโโ gamemode_deathmatch.cfg
โ โโโ gamemode_armsrace.cfg
โ โโโ skirmish/ โ sub-modes (retakes, wingman variants)
โโโ addons/ โ (later) Metamod + SourceMod
โ โโโ metamod/
โ โโโ sourcemod/
โโโ maps/ โ .bsp map files
โโโ maps/workshop/<id>/ โ Workshop maps (auto-downloaded)
โโโ sounds/, models/, etc.
Launch options (128-tick, Workshop, startmap)
CS:GO reads settings from the launch command line (+cvar value) AND from server.cfg. Launch line wins on conflict.
A typical 128-tick competitive launch line:
./srcds_run -game csgo -console -usercon
-tickrate 128
-secure
+sv_setsteamaccount YOUR-32-CHAR-GSLT
+game_type 0 +game_mode 1
+mapgroup mg_active
+map de_dust2
+hostport 27015
+maxplayers_override 10
+exec server.cfg
-net_port_try 1
Options you should know:
-game csgoโ required, selects the CS:GO mod inside SRCDS.-console/-userconโ headless mode + enables RCON over the game port.-tickrate 128โ default is 64. Set this explicitly for 128-tick.-secureโ enables VAC. Leave on unless you have a specific reason.+sv_setsteamaccountโ your GSLT.+game_type N +game_mode Nโ sets gamemode (see Gamemodes section).+mapgroup mg_activeโ Valve's current competitive map pool. Other options:mg_bomb,mg_hostage,mg_de_inferno(single-map), etc.+map <mapname>โ starting map. Stock comp pool:de_dust2,de_mirage,de_inferno,de_nuke,de_overpass,de_vertigo,de_anubis.+maxplayers_overrideโ slot count. CS:GO requires_overridesuffix (legacy quirk).+host_workshop_collection <id>โ pre-download a whole Workshop collection on first boot.
128-tick matters most for hitreg and movement feel. Clients connecting to a 128-tick server should set cl_updaterate 128, cl_cmdrate 128, rate 786432 in their CS:GO client config. Most modern PUG clients do this automatically โ FACEIT client, ESEA client, Get5 spectators โ but casual players on defaults will still feel the 64-tick client cap.
Core server.cfg settings
server.cfg lives at csgo/cfg/server.cfg. Flat list of cvar "value":
// --- Server identity ---
hostname "My CS:GO Server [EU] - 128t PUG"
sv_tags "128tick,competitive,europe,pug,fatalityservers"
sv_region 3 // 0=US-E 1=US-W 2=SA 3=EU 4=Asia 5=AU 6=ME 7=Africa
// --- Passwords / auth ---
sv_password "" // empty = public
rcon_password "change-me-to-something-very-strong"
sv_cheats 0
sv_lan 0
// --- Match / round defaults ---
mp_maxrounds 24 // MR12; set 30 for MR15 (pre-2023 format)
mp_overtime_enable 1
mp_overtime_maxrounds 6
mp_overtime_startmoney 10000
mp_roundtime 1.92
mp_roundtime_defuse 1.92
mp_roundtime_hostage 1.92
mp_freezetime 15
mp_buytime 20
mp_c4timer 40
mp_startmoney 800
mp_maxmoney 16000
mp_friendlyfire 1
mp_teamname_1 ""
mp_teamname_2 ""
// --- Warmup ---
mp_warmuptime 60
mp_warmup_pausetimer 0
// --- Tech / net (128-tick values) ---
sv_maxrate 786432
sv_minrate 196608
sv_mincmdrate 128
sv_maxcmdrate 128
sv_minupdaterate 128
sv_maxupdaterate 128
sv_client_min_interp_ratio 1
sv_client_max_interp_ratio 1
sv_timeout 60
// --- Voice / comms ---
sv_voiceenable 1
sv_alltalk 0
sv_deadtalk 1
sv_full_alltalk 0
// --- Logging ---
log on
sv_logbans 1
sv_logecho 1
sv_logfile 1
sv_logflush 0
// --- Quality-of-life ---
mp_autokick 0
mp_match_end_restart 1
mp_match_end_changelevel 0
mp_endmatch_votenextmap 1
mp_do_warmup_period 1
mp_halftime 1
Values most people want to tweak:
hostnameโ 64 chars.sv_tagsโ server browser filter. Always include128tickif you're running 128 โ some client filters require it.mp_maxroundsโ24MR12 (modern),30MR15 (classic).sv_pureโ adjust for community servers that allow client-side customization (custom crosshair pack, etc.)
Gamemodes โ Competitive, Casual, DM, Arms Race
Same game_type / game_mode matrix as CS2, but with CS:GO's original values:
| Mode | game_type |
game_mode |
Config loaded |
|---|---|---|---|
| Casual | 0 | 0 | gamemode_casual.cfg |
| Competitive | 0 | 1 | gamemode_competitive.cfg |
| Wingman | 0 | 2 | gamemode_competitive2v2.cfg |
| Scrim Comp 5v5 | 0 | 1 | + exec scrim.cfg |
| Arms Race | 1 | 0 | gamemode_armsrace.cfg |
| Demolition | 1 | 1 | gamemode_demolition.cfg |
| Deathmatch | 1 | 2 | gamemode_deathmatch.cfg |
| Custom (SM plugin) | 3 | 0 | gamemode_custom.cfg |
128-tick competitive
+game_type 0 +game_mode 1 +map de_mirage
+mp_maxrounds 24 +mp_overtime_enable 1
Deathmatch
+game_type 1 +game_mode 2 +map de_dust2
+mp_teammates_are_enemies 1 // FFA-style
+mp_respawn_immunitytime 2
+mp_dm_bonus_length_max 30
+mp_dm_bonus_length_min 30
Retakes
Not built-in โ install the SourceMod plugin (see next section). Set mode to Competitive and let the plugin take over rounds.
Surf / KZ / MGE
Custom game type + SourceMod plugin controlling respawns, timers, and map-specific logic. Use +game_type 3 +game_mode 0 to free up Valve's round logic.
Install Metamod:Source + SourceMod
CS:GO ships with no plugin system. You add it with:
- Metamod:Source โ engine hook layer, loaded before the game DLL.
- SourceMod (SM) โ the SourcePawn scripting layer. Almost every CS:GO plugin targets SourceMod.
-
Download the matching pair
- Metamod:Source 1.11+ stable: sourcemm.net/downloads.php
- SourceMod 1.11+ stable: sourcemod.net/downloads.php
- Pick the Linux or Windows build matching your server OS (Linux by default on our infra).
-
Extract both into
csgo/Both archives contain an
addons/folder. Drop intocsgo/โ they merge cleanly intocsgo/addons/metamod/andcsgo/addons/sourcemod/. -
Register Metamod with the engine
Open
csgo/gameinfo.txt, findSearchPaths, add:Game_LowViolence csgo_lv Game csgo Game |gameinfo_path|addons/metamod // <-- add this line Game csgo_imported Game csgo_coreIndent with tabs. Save. Restart. Console should show
Metamod:Source version 1.11.X Loaded. -
SourceMod auto-loads via Metamod
Once Metamod is registered, it scans
csgo/addons/metamod/for plugins including SourceMod. No extra registration needed. After restart:sm versionin console should print SM's version.
Match the Metamod + SM versions. An old Metamod with a new SM (or vice-versa) is a frequent source of "plugin loaded but commands do nothing" bugs. When updating, update both together. SourceMod's release notes always list the minimum compatible Metamod build.
Add admins (SourceMod)
Edit csgo/addons/sourcemod/configs/admins_simple.ini:
; <SteamID or identifier> <flags> <password (optional)>
"STEAM_1:1:12345678" "99:z"
"#192.168.1.100" "abcdef"
"YourNick" "bcdefijmn" "somepassword"
Flag z is root (all permissions). Reload with sm_reloadadmins in console.
Popular plugins (Retakes, Surf, KZ, MGE, Get5)
SourceMod plugins are .smx files (compiled SourcePawn). Drop into csgo/addons/sourcemod/plugins/. Some plugins ship additional .cfg / .txt config files that go in csgo/addons/sourcemod/configs/ or csgo/addons/sourcemod/data/.
Retakes
splewis's Retakes plugin โ defuse-only rounds with a pre-placed bomb. Requires SM 1.11+. Ships as a folder with maps config for each classic map.
Surf Timer
SurfTimer by surftimer community โ zones, ranks, tier system, MySQL-backed leaderboard. Needs a MySQL database โ open a support ticket and we'll provision one.
KZTimer
GOKZ (current standard) or classic KZTimer. Both need MySQL for rank persistence.
MGE / 1v1 Arena
MultiMod Arena โ 1v1 arena auto-matcher, AWP / rifle / pistols modes.
Deathmatch
Franc1sco DM System is the most popular modern option. Better feel than vanilla DM for respawn and weapon menus.
Get5 (match play)
Get5 by splewis โ the tournament plugin. BO1/BO3/BO5 series, map veto, pause/resume, knife rounds, Discord webhooks.
-
Drop Get5 into plugins/
Extract the release ZIP into
csgo/addons/sourcemod/โ it merges intoplugins/,configs/,translations/. -
Load a match JSON
In RCON console:
sm_plugins list // confirm get5 loaded get5_loadmatch matches/my-match.json // or get5_loadmatch_url <URL>Get5 starts warmup, runs the map veto, then the match. Use
.pause/.unpausein chat for tactical pauses.
Don't stack competing gamemodes. Retakes + MGE + DM on one server will make everyone's day worse โ they hook the same round events. Run one primary plugin per server; our panel lets you spawn multiple CS:GO instances under a single subscription if you want all three modes in your community.
Connect and test
-
Launch CS:GO (Legacy branch on Steam)
CS:GO can still be installed from the Steam library on eligible accounts via Properties โ Betas โ csgo_legacy.
-
Find the server
Community Servers browser โ filter by name or map. First registration takes 2-5 minutes.
-
Or direct connect
Enable Developer Console (Settings โ Game โ Enable Developer Console = Yes), press
~, type:connect YOUR-SERVER-IP:27015 -
Authenticate as admin
rcon_password <your-rcon-password> rcon status rcon changelevel de_inferno sm_admin // if SourceMod admin menu is loaded
Common errors and fixes
SteamCMD can't download the CS:GO server
The account running SteamCMD doesn't have CS:GO registered. Options:
- Log in to SteamCMD with an eligible account:
login your-steam-user(notanonymous) - Make sure the Legacy beta flag is passed:
+app_update 740 -beta 1.38.7.2 validate - If you don't have an eligible account, open a ticket โ we can provision pre-built legacy binaries
"VAC secure mode is NOT activated"
GSLT didn't register or is invalid. Check +sv_setsteamaccount YOUR-TOKEN is in the launch line, token is 32 hex chars, and the backing Steam account has no bans.
Server in browser but disconnects after 5 minutes
Classic "no GSLT" symptom โ Valve kicks unauthenticated servers after 5 min. Add/verify your GSLT.
Server doesn't show in browser at all
sv_regionwrong for your locationsv_lan 1set accidentally- Wait 5 minutes for master-list indexing
- Test direct-connect to rule out the server itself
128-tick "doesn't feel 128"
- Confirm launch line has
-tickrate 128 - Confirm
sv_maxcmdrate 128,sv_maxupdaterate 128in server.cfg - Client must also set
cl_updaterate 128 cl_cmdrate 128 rate 786432 - Check
statsornet_graph 1in-game โ "var" column should be < 1.0ms on 128t
Metamod loads but SourceMod doesn't
- Versions don't match โ update both together
- Wrong architecture โ Linux SRCDS is 32-bit, so you need the 32-bit Linux build of SM, not the x64 one
- Check
meta listโ is SourceMod even listed? If not,addons/metamod/sourcemod.vdfis missing
"Bad server response" / plugin commands silent
- Plugin didn't compile for your SM version โ check
csgo/addons/sourcemod/logs/errors_<date>.log - Required gamedata (
.txtfiles incsgo/addons/sourcemod/gamedata/) is missing or outdated - Run
sm plugins listโ status should be "Running", not "Error" or "Disabled"
Workshop maps not downloading
- GSLT is required for Workshop downloads on dedicated โ without it, Steam refuses
- Try manual:
host_workshop_map <workshopid>โ if this fails, it's a GSLT / auth problem - Folder
csgo/maps/workshop/missing write permissions โ reset perms from the panel
RCON silently fails
- Missing
-userconin launch line - Wrong password on client (
rcon_password) - TCP blocked on the game port (RCON uses TCP on the same port)
World saves / backups
CS:GO is stateless. Back up:
csgo/cfg/โ all configscsgo/addons/โ Metamod, SourceMod, plugins, admin lists- Your MySQL database (for rank / timer plugins) โ ticket us if you want automated DB snapshots
All managed CS:GO plans ship with daily auto-snapshots of the full csgo/ tree + 30-day retention.
Stuck on something specific? Email support with your server IP, launch line, and the last 100 lines of console (esp. the Metamod + SM load block) โ we'll usually have an answer within the hour. For broader CS:GO questions, see the FAQ's Games section.