CS:GO ยท Server setup

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

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.

  1. Go to the Steam GSLT page

    Visit steamcommunity.com/dev/managegameservers while signed in on an eligible Steam account.

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

  3. 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.

  1. 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.

  2. Paste your GSLT

    First deploy, the panel prompts for your GSLT โ€” it injects into the launch line as +sv_setsteamaccount <token>.

  3. 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.2 legacy opt-in automatically.

  4. 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 _override suffix (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 include 128tick if you're running 128 โ€” some client filters require it.
  • mp_maxrounds โ€” 24 MR12 (modern), 30 MR15 (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
Casual00gamemode_casual.cfg
Competitive01gamemode_competitive.cfg
Wingman02gamemode_competitive2v2.cfg
Scrim Comp 5v501+ exec scrim.cfg
Arms Race10gamemode_armsrace.cfg
Demolition11gamemode_demolition.cfg
Deathmatch12gamemode_deathmatch.cfg
Custom (SM plugin)30gamemode_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.
  1. Download the matching pair

  2. Extract both into csgo/

    Both archives contain an addons/ folder. Drop into csgo/ โ€” they merge cleanly into csgo/addons/metamod/ and csgo/addons/sourcemod/.

  3. Register Metamod with the engine

    Open csgo/gameinfo.txt, find SearchPaths, add:

    Game_LowViolence    csgo_lv
    Game                csgo
    Game                |gameinfo_path|addons/metamod    // <-- add this line
    Game                csgo_imported
    Game                csgo_core

    Indent with tabs. Save. Restart. Console should show Metamod:Source version 1.11.X Loaded.

  4. 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 version in 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.

  1. Drop Get5 into plugins/

    Extract the release ZIP into csgo/addons/sourcemod/ โ€” it merges into plugins/, configs/, translations/.

  2. 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 / .unpause in 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

  1. 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.

  2. Find the server

    Community Servers browser โ†’ filter by name or map. First registration takes 2-5 minutes.

  3. Or direct connect

    Enable Developer Console (Settings โ†’ Game โ†’ Enable Developer Console = Yes), press ~, type:

    connect YOUR-SERVER-IP:27015
  4. 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 (not anonymous)
  • 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_region wrong for your location
  • sv_lan 1 set 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 128 in server.cfg
  • Client must also set cl_updaterate 128 cl_cmdrate 128 rate 786432
  • Check stats or net_graph 1 in-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.vdf is 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 (.txt files in csgo/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 -usercon in 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 configs
  • csgo/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.