How to Set Up a CS2 Dedicated Server: Step-by-Step Guide
Quick answer
To set up a CS2 dedicated server, install app 730 with SteamCMD using an anonymous login, create a Game Server Login Token (GSLT) for App ID 730 on Steam's game server account management page, and launch cs2 with -dedicated, +sv_setsteamaccount, +game_type, +game_mode and +map. Players connect on port 27015. Settings go in server.cfg and the gamemode server configs under game/csgo/cfg, workshop maps load with host_workshop_map or host_workshop_collection, and plugins run on Metamod:Source and CounterStrikeSharp. CS2 servers run at 64 tick with sub-tick.
What do you need to run a CS2 dedicated server?
You need SteamCMD, the Counter-Strike 2 server files, a Game Server Login Token and a 64-bit Windows or Linux machine with plenty of disk space. The dedicated server is part of Steam app 730, the same ID as the game, and SteamCMD downloads it with an anonymous login, so you never type your own Steam credentials on the server. The download is large: plan for roughly 60 GB for the install itself, plus room for updates and workshop maps.
CS2 is lighter on memory than survival or roleplay servers but sensitive to CPU speed. A 10-player competitive match runs comfortably in a few gigabytes of RAM, while community servers with 32 or more slots, plugins and big workshop maps need more headroom. Every tick has to finish on time, so a fast CPU core matters more than a high core count. Players connect on port 27015 by default, which carries game traffic over UDP and RCON over TCP.
- SteamCMD, logged in anonymously
- Steam app 730 installed into its own folder
- A GSLT created for App ID 730
- Port 27015 open for UDP and TCP, plus 27020 UDP if you use CSTV
- Roughly 60 GB of disk before workshop maps
- Your SteamID64 for admin access
How do you install and launch the server with SteamCMD?
In SteamCMD, point force_install_dir at an empty folder, log in with login anonymous and run app_update 730 validate; the same command updates the server later. On Windows the executable is cs2.exe in the game/bin/win64 folder, while on Linux you start the cs2.sh script in the game folder. Both take -dedicated as the first argument, which tells the engine to run without a client.
A typical launch line adds -port 27015, -maxplayers with your slot count, -usercon to allow RCON, +sv_setsteamaccount with your token, +game_type and +game_mode for the ruleset, and +map with the first map, for example de_inferno. Keep sv_lan at 0 for an internet server. After every Counter-Strike 2 update, run app_update 730 again before restarting, because players on the new version cannot join a server still running the old one.
What is a GSLT and how do you get one?
A Game Server Login Token, or GSLT, is a key from Steam that ties a public server to a Steam account, and a CS2 server needs one to run as a normal internet server. On Steam's game server account management page, enter App ID 730, add a memo such as the server name, and copy the token it generates. Pass it at launch with +sv_setsteamaccount. Each running server needs its own token, and the account that creates it must be in good standing.
Treat the token like a password and follow Valve's rules for community servers. Valve can ban the tokens of servers that break its guidelines, and a banned token stops working. Valve's server rules have long prohibited giving players items they do not own, such as weapon skins, knives or gloves. If your server relies on plugins, read Valve's current server operation guidelines before you open it to the public.
Which game_type and game_mode combinations does CS2 use?
CS2 picks its ruleset from two launch values, game_type and game_mode, and each pair loads a matching config file shipped with the game. The combinations below come from the game's own mode definitions; if you set nothing, you get casual. A mode change takes effect on the next map load, and most owners pin both values in the launch line so an automatic restart always comes back in the right mode.
Custom, game_type 3 with game_mode 0, is the blank canvas for surf, bhop, minigame and other community modes, because it applies none of the matchmaking rules. Retake, practice and many other community formats start from competitive or casual instead and change the rest through configs and plugins.
| Mode | game_type | game_mode | Default slots | Config it executes |
|---|---|---|---|---|
| Casual | 0 | 0 | 20 | gamemode_casual.cfg |
| Competitive | 0 | 1 | 10 | gamemode_competitive.cfg |
| Wingman | 0 | 2 | 4 | gamemode_competitive2v2.cfg |
| Arms Race | 1 | 0 | 16 | gamemode_armsrace.cfg |
| Deathmatch | 1 | 2 | 16 | gamemode_deathmatch.cfg |
| Custom | 3 | 0 | Set by you | gamemode_custom.cfg |
How do server.cfg and the gamemode configs work together?
server.cfg in game/csgo/cfg holds the settings that should apply everywhere: the hostname, sv_password for private servers, rcon_password and general options. The mode's own config runs on every map load and can override the same variables, which is why a value set only in server.cfg sometimes seems to be ignored. The fix is to put mode-specific settings, such as round count, round time, overtime and buy time, in the mode's server file, for example gamemode_competitive_server.cfg, which runs right after the default mode config.
Valve's own files can be replaced by any update, so never edit gamemode_competitive.cfg itself; your _server.cfg files and server.cfg are yours to keep. For map rotations and custom mode definitions, the game's gamemodes.txt points server owners to a gamemodes_server.txt file, created from the example Valve ships, where you can define your own map groups.
- hostname: the name shown in the server browser
- sv_password: a join password for private matches
- rcon_password: a long, unique remote console password
- sv_hibernate_when_empty: lets an empty server idle
- mp_autoteambalance and mp_limitteams: team balancing rules
- tv_enable: CSTV for spectators and demos
- mp_maxrounds, mp_roundtime, mp_freezetime: match pacing, ideally in the mode's _server.cfg
How do you add workshop maps and collections?
Workshop content is loaded by ID, not by file name. The ID is the number at the end of the map's or collection's Steam Workshop page address. Launch with +host_workshop_map and a map ID to start on a single map, or +host_workshop_collection and a collection ID to load a whole rotation. The server downloads the files through Steam, and players download the maps automatically when they join.
Inside a collection, ds_workshop_listmaps shows the maps the server has, and ds_workshop_changelevel followed by a map name switches to one of them; the regular changelevel command is meant for built-in maps. A collection you control is the cleanest way to run surf, aim, retake or fun-map rotations, because a map you add to it on Steam joins the rotation once the server reloads the collection. Budget disk space, since big community maps add up quickly.
How do you install Metamod:Source and CounterStrikeSharp?
Metamod:Source is the plugin loader that sits between the CS2 engine and server plugins, and CounterStrikeSharp is a framework on top of it that lets plugins be written in C# on .NET. CS2 needs a Metamod:Source 2.x development build: extract its addons folder into game/csgo, open game/csgo/gameinfo.gi and add the line Game csgo/addons/metamod directly below the Game_LowViolence csgo_lv line. Restart and type meta list in the console to confirm it loaded.
For CounterStrikeSharp, download the with-runtime package the first time, since it bundles the .NET runtime the framework needs, and extract it into game/csgo so it lands in addons/counterstrikesharp. Each plugin goes into its own folder under addons/counterstrikesharp/plugins. Admins are defined in addons/counterstrikesharp/configs/admins.json, where each entry pairs a SteamID with permission flags that start with an at sign, such as @css/root for full access or @css/kick and @css/ban for moderators.
Plan for updates. A CS2 update can overwrite gameinfo.gi, which silently removes the Metamod line and unloads every plugin until you add it back, and larger game patches can break plugins until their authors ship fixes. Run meta list after every update, keep Metamod and CounterStrikeSharp current, and test new plugins on a copy before loading them on your main server.
How do you set up practice, retake and surf servers?
A practice server is competitive or casual with cheats enabled and economy limits removed, saved as a config you can exec on demand. Typical lines include sv_cheats 1, sv_infinite_ammo 1, ammo_grenade_limit_total 5, sv_grenade_trajectory_prac_pipreview 1 and sv_showimpacts 1, plus mp_buy_anywhere 1, a high mp_maxmoney and mp_startmoney, a long mp_buytime, mp_freezetime 0 and a long mp_roundtime_defuse. Remove bots with bot_kick and skip warmup with mp_warmup_end.
Retake servers drop players into post-plant situations again and again, and they run on plugins rather than stock settings: a retakes plugin for CounterStrikeSharp handles spawns, bomb plants and weapon allocation, and it needs spawn data for every map in rotation. Surf servers use the Custom mode with workshop surf maps, raise sv_airaccelerate far above the default (values around 150 are common), set sv_staminajumpcost and sv_staminalandcost to 0, and add a timer plugin for records. Bhop servers also enable sv_enablebunnyhopping and sv_autobunnyhopping.
| Server type | Base mode | Key settings | Plugins |
|---|---|---|---|
| Practice | Competitive or casual | sv_cheats 1, infinite ammo, grenade trajectory preview, no freeze time | Optional practice-mode plugin |
| Retake | Competitive or casual | Short rounds, automatic bomb plant | Required: a retakes plugin with map spawn data |
| Surf | Custom (3 / 0) | High sv_airaccelerate, stamina costs at 0 | Timer plugin recommended |
| Deathmatch / aim | Deathmatch (1 / 2) or Custom | Instant respawn, free weapon choice | Optional, for weapon menus and stats |
| 5v5 scrims | Competitive (0 / 1) | Match rules in gamemode_competitive_server.cfg | A match plugin for ready-up and pauses |
How do you manage a CS2 server with RCON?
RCON lets you send console commands to the server from outside, over TCP on the game port. Set rcon_password in server.cfg, launch with -usercon, and connect with an external RCON client, a Discord bot or your hosting panel's web console. Everyday commands include status for players and their IDs, changelevel for built-in maps, mp_restartgame 1 to restart a match, mp_warmup_end to skip warmup, kickid with a user ID, and say for announcements.
Keep the RCON password long and unique and share it with as few people as possible. For day-to-day moderation, prefer plugin-based admin commands tied to CounterStrikeSharp flags, so staff never need the master password, and removing someone's access is as simple as deleting their entry from admins.json.
How much performance does a CS2 server need, and is 128 tick possible?
CS2 servers run at 64 tick, and there is no 128-tick option to chase: Valve's sub-tick system timestamps shots and movement between ticks, so the server knows exactly when an action happened instead of rounding it to the nearest tick. Guides that recommend a -tickrate 128 launch option are carried over from CS:GO. What decides how a server feels is whether every tick is processed on time, which comes down to single-core CPU speed, stable networking and well-behaved plugins.
Memory rarely limits CS2: a single match needs little, and extra RAM mainly buys room for plugins, workshop maps and additional server instances. Disk space matters more, because the install is large and every update is a big download. CS2 server hosting at TheCrewHost runs on Ryzen 9 9950X processors with DDR5 memory and NVMe storage in İstanbul, keeps latency low for players in Türkiye and includes free DDoS protection. If you want full root access to run several instances yourself, a VPS is the flexible alternative.
Set up a CS2 dedicated server in 8 steps
- 1
Install SteamCMD and the server
Set an empty folder with force_install_dir, log in anonymously and run app_update 730 validate, or rent a managed CS2 server that arrives with the files installed.
- 2
Create your GSLT
On Steam's game server account management page, create a token for App ID 730, label it with the server name and keep it private.
- 3
Write server.cfg
In game/csgo/cfg, set hostname, rcon_password and, for private matches, sv_password; put mode-specific round settings in the matching gamemode _server.cfg file.
- 4
Pick the mode and first map
Choose game_type and game_mode from the table, for example 0 and 1 for competitive, and pick a start map such as de_inferno or a workshop map ID.
- 5
Open the ports
In your firewall, allow 27015 over UDP and TCP for game traffic and RCON, plus 27020 over UDP if you enable CSTV.
- 6
Launch the server
Start cs2 with -dedicated, -port 27015, -maxplayers, -usercon, +sv_setsteamaccount, +game_type, +game_mode and +map, then check the console for token or port errors.
- 7
Add plugins and admins
Install Metamod:Source and CounterStrikeSharp, confirm with meta list, add plugins one at a time and list your admins with their flags in admins.json.
- 8
Connect and stay updated
Join from the console with connect followed by your IP and port, then rerun app_update 730 after every CS2 update and recheck the Metamod line.
Frequently Asked Questions
Can a CS2 server run at 128 tick?
No. CS2 servers run at 64 tick, and Valve's sub-tick system records the exact moment of each shot and movement input between ticks, so there is no 128-tick mode like the one CS:GO community servers used to offer. Launch options and configs that promise 128 tick come from CS:GO guides. For the smoothest play, focus on a fast CPU, a server location close to your players and lean plugins.
Do I need a GSLT for a CS2 server?
Yes, for any server meant for internet play. The token links the server to a Steam account and is passed with +sv_setsteamaccount at launch. It is free to create on Steam's game server account management page using App ID 730. Use one token per server instance, keep it private, and stay within Valve's server rules, because tokens used by rule-breaking servers can be banned.
How much disk space and RAM does a CS2 server need?
Plan for about 60 GB of disk for the server files alone; with room for updates and workshop maps, 70 GB or more is a comfortable minimum. RAM is less critical: a 10-player match runs in a few gigabytes, while larger community servers with plugins and workshop rotations need more headroom. Single-core CPU speed has the biggest effect on how smoothly ticks are processed.
How do players join my CS2 server?
Players enable the developer console in the game settings, open it and type connect followed by the server IP and port, for example 27015. Public servers can also be found through the in-game community server browser. If you set sv_password, players need that password too. If connections fail, check that UDP port 27015 is open and that the server runs the same CS2 version as the players.
Why can't anyone join after a CS2 update?
Because the server is still on the old version. Valve updates usually require the server to match the client, so run app_update 730 through SteamCMD and restart. If the server comes back but your plugins are missing, the update most likely replaced gameinfo.gi and removed the Metamod line; add it back and restart. Big game updates can also break CounterStrikeSharp or individual plugins until new builds are released.
Can I use SourceMod plugins on CS2?
Not plugins written for CS:GO. CS2 runs on the Source 2 engine, and its community server ecosystem is built on Metamod:Source 2.x and frameworks such as CounterStrikeSharp, whose plugins are written in C#. Many popular CS:GO plugin ideas, including admin tools, retakes, practice modes and match management, have been rebuilt for CS2 on these frameworks, so look for a CS2 version instead of porting old SourcePawn code.
