For a private Counter-Strike 2 group, start a Competitive dedicated server with 10 slots, a non-empty sv_password, VAC enabled, and a Steam Game Server Login Token (GSLT) on the launch command. Keep identity, access, and general server behavior in server.cfg; put round limits, overtime, buy time, warmup, and other Competitive rules in gamemode_competitive_server.cfg. That split prevents the game mode from overwriting your settings after a map change.
The configuration below is a practical 5v5 baseline. You can adapt it for Casual, Wingman, Deathmatch, workshop maps, spectators, or a public browser listing without mixing passwords, exposing RCON, or chasing rules that reset every time the server loads a new map.
What is the best CS2 server configuration for a private group?
Use Competitive mode, cap the process at 10 players, require a join password, leave sv_cheats at 0, and create a separate long RCON password. Put the GSLT on the startup command or in your hosting panel, never in a configuration file that you may share. This gives a closed 5v5 server with standard bomb-defusal pacing and a predictable ruleset.
- Mode: Competitive, selected with
+game_alias competitiveor thegame_type 0/game_mode 1pair. - Player cap: Start with 10 slots. Competitive is documented as a 10-slot mode even though the dedicated-server launch cap can be set as high as 64.
- Access: Set a non-empty
sv_passwordfor friends-only play. Leave it empty only when you intentionally want a public server. - Security: Keep VAC enabled, use
sv_cheats 0, and make the RCON password different from the join password. - Identity: Set a recognizable
hostnameinserver.cfg. - Match rules: Place round, overtime, economy, freeze-time, buy-time, and warmup commands in
gamemode_competitive_server.cfg. - Bots: Set
bot_quota 0when every slot should be human-controlled.
This is a starting preset rather than a universal competition standard. Change one rule at a time and record the change so your group knows which behavior is intentional.
How do CS2 server configuration files interact?
game/csgo/cfg/server.cfg is read when a map loads, but the selected mode’s server configuration can run afterward and overwrite values. Mode-specific overrides therefore belong in gamemode_<mode>_server.cfg, such as gamemode_competitive_server.cfg or gamemode_casual_server.cfg.
What belongs in server.cfg?
Use it for the server’s identity, access control, security, team behavior, and settings that should apply regardless of the selected mode:
// server.cfg
hostname "Private Group CS2"
sv_password "CHANGE_THIS_GROUP_PASSWORD"
rcon_password "USE_A_LONG_UNIQUE_ADMIN_PASSWORD"
sv_cheats 0
sv_hibernate_when_empty 1
sv_allow_votes 1
bot_quota 0
mp_autokick 0
mp_autoteambalance 1
mp_limitteams 2
mp_friendlyfire 1
sv_deadtalk 0
Replace both example passwords before the first launch. Do not paste the RCON password into a group chat, and do not use the same text for RCON and player access.
What belongs in gamemode_competitive_server.cfg?
Put rules that define a Competitive match in the mode file so they survive later map loads:
// gamemode_competitive_server.cfg
mp_maxrounds 24
mp_overtime_enable 1
mp_overtime_maxrounds 6
mp_overtime_startmoney 10000
mp_match_can_clinch 1
mp_roundtime 1.92
mp_roundtime_defuse 1.92
mp_freezetime 15
mp_startmoney 800
mp_maxmoney 16000
mp_buytime 20
mp_warmuptime 60
In this preset, mp_maxrounds 24 is MR12, mp_roundtime_defuse 1.92 is 115 seconds, and mp_overtime_maxrounds 6 creates MR3 overtime blocks. Those values are practical choices from a configuration guide, not requirements for every group.
Why does a setting work on the first map and then disappear?
That symptom means a later configuration stage won. If mp_maxrounds, buy time, or warmup changes after a map transition, remove that command from server.cfg and place it in the matching mode file. Keep only one authoritative copy of each rule; duplicate commands make it difficult to tell which value was applied.
How do I install and launch a dedicated CS2 server?
SteamCMD installs the dedicated server under app ID 730. The following workflow is aimed at a Linux host, where the supplied cs2.sh wrapper is used to start the game server.
- Install SteamCMD and download or update app ID 730 with validation enabled when repairing an installation.
- From the server directory, create
game/csgo/cfg/server.cfg. - Create
game/csgo/cfg/gamemode_competitive_server.cfgand add the mode rules shown above. - Create a startup script outside the game installation directory. Keeping the script elsewhere prevents an update from replacing your launch settings.
- Launch the wrapper with the dedicated-server flag, RCON support if required, the game port, GSLT, map, and mode.
./cs2.sh -dedicated -usercon -port 27015 -maxplayers 10
+sv_setsteamaccount YOUR_32_CHARACTER_GSLT
+game_alias competitive +map de_dust2
The mode and GSLT arguments must be present before the server begins the map session. If you prefer the numeric form, use +game_type 0 +game_mode 1 instead of +game_alias competitive. Read the startup console to confirm the resolved mode and map.
The -usercon flag enables authenticated RCON connections. Omit it if you do not need RCON and will administer the server through a local panel console instead.
What is the difference between Competitive, Casual, Wingman, Deathmatch, Arms Race, and Custom?
Choose the mode according to the number of players and the type of session you want, not simply the map you plan to use.
| Mode | Values or alias | Best use | Main trade-off |
|---|---|---|---|
| Competitive | 0/1, competitive |
Private 5v5 practice or matches | Longer, structured rounds; documented as a 10-slot mode |
| Casual | 0/0, casual |
Larger relaxed groups | More players and less strict rules |
| Wingman | 0/2, wingman |
Two-versus-two sessions | Small maps and a shorter format |
| Deathmatch | 1/2, deathmatch |
Warmups and aim practice | Constant respawns create more server work |
| Arms Race | 1/0, armsrace |
Weapon-progression sessions | Different objective loop from bomb or hostage play |
| Custom | 3/0, custom |
Plugin-owned rules | Requires ongoing plugin maintenance |
For Casual, create gamemode_casual_server.cfg rather than reusing the Competitive file. A mode can load successfully while still ignoring rules intended for another mode, so match the filename to the mode you launch.
How do I set slots, teams, bots, and friendly fire?
Use -maxplayers to set the process-level cap, then respect the mode’s own limits. A Competitive server launched with -maxplayers 10 is the clearest 5v5 configuration. The dedicated server supports a launch cap of up to 64, but increasing it does not turn Competitive into a 64-player mode.
Human-only matches
bot_quota 0 prevents the server from filling empty places with bots. If you want temporary practice opponents, raise the quota deliberately and remove it again before a serious match.
Team balance
mp_autoteambalance 1 keeps team sizes even, while mp_limitteams 2 allows a small manual difference before the game blocks another join. Decide whether that behavior suits your group’s scrims; a fixed roster may prefer stricter balancing.
Friendly fire and communication
mp_friendlyfire 1 enables team damage. Keep it enabled only when players understand the consequence, particularly during warmups. sv_deadtalk 0 prevents dead players from talking to living players; change it only if your group accepts the information leak.
Do I need a GSLT, and why is my server not showing in the browser?
A public or browser-listed server needs a valid Steam Game Server Login Token created for app 730. The token is tied to the Steam account that created it, is 32 characters in the cited 2026 guidance, and should remain secret. Do not reuse one token on multiple servers.
Put the token on the launch line with +sv_setsteamaccount or enter it in the hosting panel’s token field. Do not place it in server.cfg. Without a valid token, the process may still run for direct LAN or console connections, but it will not register normally in the public browser.
If the server is missing from the browser, first verify the token and then test the network path from outside the host. A direct command such as connect your.public.ip:27015 distinguishes a listing problem from a server or firewall problem.
Which ports should I open for game traffic, RCON, and GOTV?
Forward only the services you actually use. The commonly documented assignments are:
| Port and protocol | Purpose | When it is needed |
|---|---|---|
| UDP 27015 | Game traffic and Steam browser queries | Always for internet players and normal listing |
| TCP 27015 | RCON when -usercon is enabled |
Only when remote RCON is required |
| UDP 27020 | Common GOTV port via tv_port |
Only when spectators or relays are enabled |
Firewall rules must allow the protocol as well as the port. Opening TCP 27015 does not make game traffic work, because normal player traffic uses UDP.
How do I use RCON safely?
Launch with -usercon, open TCP 27015 if the connection comes from outside the host, and set a long, unique rcon_password. Keep the join password separate so a leaked player password cannot also grant administrative access.
RCON is password-authenticated remote control, not encryption. Prefer a local control-panel console when one is available, restrict the TCP rule to trusted source addresses where practical, and remove the port forwarding when you no longer need remote administration.
Should I enable GOTV for a private group?
Enable GOTV only when you need spectators, delayed viewing, or recorded demos. It adds relay and recording work to the server, while a normal 10-slot Competitive session does not need it.
tv_port 27020
tv_delay 105
tv_autorecord 1
The cited Competitive convention uses a 105-second delay. tv_autorecord 1 writes demo files for later review, so monitor disk space and establish a retention policy if the server runs for many matches.
How do I add official and workshop maps?
For a repeatable official rotation, define a map group and launch the group through your server controls. To start one official map immediately, use a command such as +map de_dust2 on the launch line.
Workshop content uses the workshop ID rather than a local filename:
host_workshop_map <id>loads one workshop map.host_workshop_collection <id>loads a collection.
A valid GSLT is important for workshop downloads. If a map does not arrive, confirm that the ID is correct, the collection is accessible, and the server has the token assigned at startup.
How should I tune performance and maintenance?
The lightest common workload is a private 10-slot Competitive server with no bots and no plugins. CPU and memory demand rise with bots, plugin timers, high-respawn modes such as Deathmatch and Retakes, larger player counts, and GOTV spectators.
Plugin servers
Metamod:Source together with CounterStrikeSharp is a common CS2 plugin stack. Plugins can add useful administration and match features, but they introduce another compatibility surface. Keep a record of installed versions and disable nonessential plugins when diagnosing a crash or rule conflict.
Updates
Valve updates can revert the gameinfo.gi search-path edit or break plugins. Back up the configuration and plugin directories, update the game with SteamCMD validation, then test a private map before inviting players. If the server fails after an update, check disk space, rerun validation, and review plugin compatibility before changing unrelated settings.
Voting behavior
Valve’s August 8, 2024 release notes added sv_vote_to_changelevel_rndmin and changed level-change voting windows in official Casual, Deathmatch, and Arms Race modes. If your group relies on votes, verify the behavior in the mode you actually run rather than assuming Competitive and Casual use identical windows.
What should I check when something fails?
The server is not listed
- Confirm that the GSLT was created for app 730 and is present on the launch line or panel.
- Verify that UDP 27015 is reachable from outside the host.
- Try
connect <ip>:27015directly. A successful direct connection points to a browser-registration or query-path issue.
Rules reset after a map change
Move mode-specific commands from server.cfg into the matching gamemode_<mode>_server.cfg. Check for a second copy of the command in another configuration file.
The wrong mode loads
Place the mode arguments before the map load, use either the alias or the documented numeric pair, and read the resolved mode in the startup console. A map name alone does not select Competitive.
RCON does not connect
Confirm -usercon, open TCP 27015, and verify that the RCON password is distinct and spelled exactly as configured. If a local panel console works but remote RCON does not, the remaining problem is usually the TCP firewall or port-forwarding rule.
A workshop map will not download
Check the workshop map or collection ID and confirm that a valid GSLT is assigned. Review the startup log for a download or permission error before changing game rules.
The server stops starting after an update
Run SteamCMD validation, confirm free disk space, and test with plugins disabled. Restore the last known-good configuration only after confirming that the base server starts cleanly.
What is a sensible first-day setup checklist?
- Install app 730 and create a startup script outside the installation directory.
- Set
hostname, a strong join password, a separate RCON password, andsv_cheats 0. - Set
-maxplayers 10,+game_alias competitive, and a known map. - Add the GSLT to the launch command if the server needs browser registration or workshop downloads.
- Put the MR12, overtime, economy, buy-time, freeze-time, and warmup commands in
gamemode_competitive_server.cfg. - Forward UDP 27015; add TCP 27015 only for RCON and UDP 27020 only for GOTV.
- Join by direct IP, change maps, and verify that every rule remains in effect.
- Invite the group only after the password, team behavior, and bot policy have been tested.
Frequently Asked Questions
Can friends connect if the server is not in the Steam browser?
Yes. Players who know the public address can use the in-game console with connect ip:27015 when UDP 27015 is reachable. Browser visibility is a registration convenience; it is not required for a direct connection.
Why does setting -maxplayers 64 not create a 64-player Competitive match?
The launch option sets the dedicated process cap, while each game mode applies its own supported rules and slot behavior. Competitive is documented as a 10-slot mode, so a larger process cap does not override that mode design.
Can I run a LAN-only server without forwarding ports to the internet?
Yes. Players on the same local network can connect to the host’s private address, and an internet-facing firewall rule is unnecessary for that LAN-only use. Friends outside the network need a reachable UDP game port or a hosted network path.
What is the practical difference between a join password and an RCON password?
The join password admits a player to the game; RCON authenticates administrative commands over TCP. Treat RCON as a separate privileged credential and never distribute it with the password used by ordinary players.
How much disk space should I reserve when using GOTV recording?
The server writes a demo file for each recorded session, so usage grows with match count and session length rather than player count alone. Check the demo directory periodically and remove or archive old files before the host runs out of space.