Counter-Strike: Global Offensive (CS:GO) and Counter-Strike 2 (CS2) are competitive tactical first-person shooters. This guide covers everything needed to host a dedicated CS:GO or CS2 server on Linux or Windows.
Note: CS2 replaced CS:GO in September 2023. Most concepts apply to both, but CS2 uses Source 2 engine with some differences. This guide covers both versions.
27015 (UDP)csgo/logs/ or cs2/logs/server.cfgsrcds_run (Linux) or srcds.exe (Windows)# Install dependencies (Ubuntu/Debian)
sudo apt update
sudo apt install lib32gcc-s1 lib32stdc++6 steamcmd
# Or manual install
mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
Download SteamCMD from: SteamCMD for Windows
# Run SteamCMD
./steamcmd.sh
# Login anonymously
login anonymous
# Set install directory
force_install_dir ./csgo-server
# Install CS:GO dedicated server
app_update 740 validate
# Exit
quit
# Run SteamCMD
./steamcmd.sh
# Login (may require Steam account with CS2)
login anonymous
# Set install directory
force_install_dir ./cs2-server
# Install CS2 dedicated server
app_update 730 validate
# Exit
quit
Create csgo/cfg/server.cfg or cs2/cfg/server.cfg:
// Server Information
hostname "My CS:GO/CS2 Server"
sv_password "" // Server password (leave blank for public)
sv_region "1" // 0=US East, 1=US West, 2=South America, 3=Europe, etc.
// RCON Configuration
rcon_password "YourSecurePassword"
sv_rcon_banpenalty 0
sv_rcon_maxfailures 5
// Server Settings
sv_cheats 0
sv_lan 0
sv_pure 1 // File consistency checking (0=off, 1=on, 2=strict)
sv_pure_kick_clients 1
sv_minrate 128000
sv_maxrate 0 // 0=unlimited
// Game Settings
mp_autoteambalance 1
mp_limitteams 1
mp_teamcashawards 1
mp_playercashawards 1
mp_maxmoney 16000
mp_startmoney 800
mp_buytime 90
mp_buy_anywhere 0
mp_freezetime 15
mp_friendlyfire 0
mp_c4timer 40
mp_roundtime 5
mp_roundtime_defuse 1.92
mp_maxrounds 30
mp_overtime_enable 1
mp_overtime_maxrounds 6
mp_overtime_startmoney 10000
// Competitive Settings (5v5)
mp_match_end_restart 1
mp_halftime 1
mp_warmuptime 30
mp_do_warmup_period 1
mp_warmup_pausetimer 1
// Communication
sv_alltalk 0
sv_deadtalk 0
sv_full_alltalk 0
sv_talk_enemy_dead 1
sv_talk_enemy_living 0
// Voting
sv_vote_issue_kick_allowed 0
sv_vote_issue_changelevel_allowed 0
sv_vote_issue_nextlevel_allowed 0
// SourceTV (GOTV)
tv_enable 1
tv_delay 90
tv_advertise_watchable 1
tv_name "GOTV"
tv_title "Source TV"
tv_autorecord 1
tv_allow_camera_man 1
// Logging
log on
sv_logbans 1
sv_logecho 1
sv_logfile 1
sv_log_onefile 0
// Execute additional configs
exec banned_user.cfg
exec banned_ip.cfg
mp_maxrounds 30
mp_roundtime 1.92
mp_roundtime_defuse 1.92
mp_freezetime 15
mp_buytime 90
mp_startmoney 800
mp_maxmoney 16000
mp_timelimit 0
sv_alltalk 0
sv_talk_enemy_dead 1
sv_deadtalk 0
mp_maxrounds 15
mp_roundtime 3
mp_roundtime_defuse 3
mp_freezetime 15
mp_buytime 90
mp_startmoney 1000
mp_maxmoney 16000
sv_alltalk 0
mp_autoteambalance 1
mp_limitteams 2
List maps to rotate through:
de_dust2
de_mirage
de_inferno
de_nuke
de_overpass
de_vertigo
de_ancient
de_anubis
#!/bin/bash
cd /path/to/csgo-server
./srcds_run -game csgo \
-console \
-usercon \
+ip 0.0.0.0 \
+game_type 0 \
+game_mode 1 \
+mapgroup mg_active \
+map de_dust2 \
-port 27015 \
+tv_port 27020 \
-tickrate 128 \
+maxplayers 10 \
+sv_setsteamaccount YOUR_GSLT_TOKEN
#!/bin/bash
cd /path/to/cs2-server
./game/bin/linuxsteamrt64/cs2 \
-dedicated \
-console \
+ip 0.0.0.0 \
+map de_dust2 \
-port 27015 \
+maxplayers 10 \
+sv_setsteamaccount YOUR_GSLT_TOKEN \
+game_type 0 \
+game_mode 1
@echo off
cd C:\csgo-server
srcds.exe -game csgo -console -usercon +ip 0.0.0.0 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 -port 27015 -tickrate 128 +maxplayers 10 +sv_setsteamaccount YOUR_GSLT_TOKEN
pause
-game csgo - Specify game (CS:GO only, not needed for CS2)-console - Enable server console-usercon - Enable user console input+ip 0.0.0.0 - Bind to all network interfaces+game_type 0 - Classic game type+game_mode 1 - Competitive mode (0=casual, 1=competitive, 2=wingman)+mapgroup mg_active - Map group (active duty maps)+map de_dust2 - Starting map-port 27015 - Server port-tickrate 128 - Server tickrate (64 or 128, CS:GO only)+maxplayers 10 - Maximum players+sv_setsteamaccount TOKEN - Game Server Login Token (GSLT)Required for public servers to appear in server browser!
The standard plugin framework for Source engine servers.
# Both extract to csgo/ or cs2/ folder
cd /path/to/csgo-server/csgo
wget https://mms.alliedmods.net/mmsdrop/...
tar -xzf mmsource-...tar.gz
wget https://sm.alliedmods.net/smdrop/...
tar -xzf sourcemod-...tar.gz
# Edit addons/sourcemod/configs/admins_simple.ini
"STEAM_0:1:12345678" "99:z" // Your Steam ID
For practicing smokes, flashes, and aim.
Competitive match plugin with knife rounds, veto, and more.
Retake game mode - defenders defend bombsite, attackers retake.
Player ranking and statistics system.
Built into SourceMod. Access with !admin or sm_admin in chat.
# In server.cfg or startup parameters
host_workshop_collection 123456789 // Workshop collection ID
workshop_start_map 123456789 // Workshop map ID
# Install 32-bit libraries
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install lib32gcc-s1 lib32stdc++6
# CS:GO specific
sudo apt install libsdl2-2.0-0:i386
# CS2 specific
sudo apt install libtinfo5:i386
# Check what's using port 27015
sudo netstat -tulpn | grep 27015
sudo lsof -i :27015
# Kill existing process or change port
./srcds_run -game csgo -port 27016 ...
+sv_setsteamaccount YOUR_TOKENsv_lan 0 in server.cfgsudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27020/udp # SourceTV
connect your.server.ip:27015top or htopsv_minrate 128000
sv_maxrate 0 // unlimited
host_thread_mode 2
// Player client commands
rate 786432
cl_interp 0
cl_interp_ratio 1
cl_updaterate 128
cl_cmdrate 128
./steamcmd.sh
login anonymous
force_install_dir /path/to/csgo-server
app_update 740 validate
quit
sv_use_steam_voice 1
sv_voiceenable 1
voice_loopback 1 // Hear yourself (testing)
+game_type 0 +game_mode 1 -tickrate 128 +maxplayers 10
exec gamemode_competitive.cfg
+game_type 0 +game_mode 0 +maxplayers 20
exec gamemode_casual.cfg
+game_type 1 +game_mode 2 +maxplayers 20
mp_respawn_on_death_t 1
mp_respawn_on_death_ct 1
mp_respawnwavetime 3
mp_timelimit 10
mp_dm_bonus_length_max 30
+game_type 1 +game_mode 0 +maxplayers 12
mp_ggprogressive_round_restart_delay 3
mp_timelimit 20
mp_maxrounds 3
+game_type 0 +game_mode 2 +maxplayers 4
exec gamemode_competitive.cfg
mp_maxrounds 16
mp_overtime_maxrounds 4
Download surf maps and configure:
sv_airaccelerate 150
sv_staminajumpcost 0
sv_staminalandcost 0
sv_accelerate 10
sv_friction 4
sv_enablebunnyhopping 1
sv_autobunnyhopping 1
sv_airaccelerate 1000
sv_staminajumpcost 0
sv_staminalandcost 0
Use arena plugin and configure multiple arenas on one map.
# Bind server to specific CPU cores
taskset -c 0,1,2,3 ./srcds_run -game csgo ...
# Run with higher priority
nice -n -10 ./srcds_run -game csgo ...
# Increase network buffers (Linux)
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
#!/bin/bash
# update_csgo.sh
cd /home/steam/steamcmd
./steamcmd.sh +login anonymous +force_install_dir /path/to/csgo-server +app_update 740 validate +quit
# Kill and restart server
killall -9 srcds_linux
sleep 5
cd /path/to/csgo-server
./srcds_run -game csgo +map de_dust2 ...
Last updated: November 2024 | Covers CS:GO & CS2