CS2 Dedicated Server Guide: Setup & Hosting 2026
Servers

CS2 Dedicated Server Guide: Setup, Hosting, Ports, and Configs

To host a CS2 server, install SteamCMD (App ID 730), generate a Steam GSLT, open UDP 27015, configure server.cfg, and launch via VPS.

CS2 Dedicated Server Guide: Setup, Hosting, Ports, and Configs

CS2 matches feel great when the server is stable. They fall apart fast when lag, weak configs, bad routing, or random host issues get in the way.

To host a CS2 dedicated server in 2026, install SteamCMD, download App ID 730, create a GSLT from Steam, open UDP 27015, create server.cfg, and launch the server with ./cs2.sh on Linux or cs2.exe on Windows. A home PC works for quick private games, but VPS or dedicated hosting is better for public servers, community matches, plugins, and long-term uptime.

This guide walks you through the full setup on Windows, Linux, Docker, VPS, and dedicated hardware. You will learn the right specs, ports, configs, GSLT setup, security steps, plugins, and upgrade signs before your CS2 server starts frustrating players.

CS2 Server Requirements, OS, and Ports

Hardware Requirements for CS2 Servers

Use casePlayersCPU (modern x86)RAMStorage (SSD / NVMe)Network upload*
Friends / practice server6–102 cores @ 3.5+ GHz4 GB80 GB minimum10 Mbps
Public classic server (24 slots, few mods)16–244 cores @ 3.5+ GHz8 GB80–100 GB25 Mbps
Busy 32-slot + plugins + workshop maps24–32+6–8 cores @ 3.7+ GHz (strong single)16 GB+100 GB+ NVMe50 Mbps+

Quick takeaways

  • Prioritise strong single-thread performance to keep server frame time stable during fights, utility usage, and map changes.
  • Budget 4–8 GB RAM for a light instance, and more if you stack plugins, bots, demos, and workshop maps.
  • Always pick SSD, and NVMe when you run several CS2 servers and store demos or logs.
  • Treat the first row as lab gear. For real public play, start at row two or three.

Supported OS (What Actually Works Well)

OS typeSupported versionsBest use
WindowsWindows 10/11, Windows Server 2019/2022Small setups, admins who live in Windows
LinuxUbuntu 20.04/22.04, Debian 11+, EL9 (64-bit)Most production CS2 server hosting

CS2 Ports and Firewall Rules

PurposePort / protocolNotes
Game traffic27015 UDPMain player traffic
Query / RCON (optional)27015 TCPRemote console / queries
GOTV / spectator (optional)27020 UDPTV or spectator stream

Home hosting

  • Forward 27015/UDP from the router to your PC’s static LAN IP.
  • Keep TCP 27015 closed unless you know you need RCON or query tools.

VPS / Dedicated box

  • Open the ports in the provider firewall and in the OS firewall (ufw/iptables or Windows Defender Firewall).
  • Block unused ports and use a provider with DDoS filtering if the server will be public.

How CS2 Dedicated Servers Work: Subtick, Slots, and Resource Planning

You do not need to be a netcode engineer, but a basic mental model of CS2 helps you size your server and read player complaints.

Ticks and subtick

  • CS:GO used fixed “ticks” (for example 64 per second) where the server processed input on each tick.
  • CS2 uses a subtick networking model that records action timing between server updates. The server uses timing data to process actions more precisely than old fixed-tick-only behavior.
  • Result:
    • More consistent server-side timing when the server stays healthy.
    • Fewer server-side causes of perceived delay during fights.

You do not need to chase old CS:GO-style tickrate flags. Focus on:

  • Clean CPU headroom.
  • Stable network.
  • Good server config.

Slots and player counts

  • “Slots” = total player seats for a match (including you and any reserved slots).
  • More slots = more:
    • Physics and movement to track.
    • Shots, nades, and traces to compute.
    • Network packets per second.

Practical rules of thumb:

  • Pure casual server, few plugins:
    • As a cautious planning rule, reserve one strong CPU core for roughly 8–12 active players, then validate with real load testing.
    • A strong 4-core server may handle a 20–24 slot light server if plugins, bots, demos, and background tasks stay minimal.
  • Plugin-heavy, workshop, or multi-mode:
    • Treat 8–10 players per strong core as a safer starting point, then test under real load.
    • Give memory room as well: 8–16 GB for a busy public box.

Tie this into your CS2 server config:

  • Keep slot counts realistic for your CPU.
  • Add plugins step by step and watch CPU, RAM, and network graphs.
  • When one server stays full and you see high load, spin up a second instance on fresh hardware instead of squeezing more into a single node.

Start with a dedicated plan that gives enough CPU headroom, RAM, NVMe storage, and bandwidth for your slot count, then add more instances or upgrade once your community grows.

Create Your CS2 Game Server Login Token (GSLT)

What a GSLT Is and When You Need It

A Game Server Login Token (GSLT) authenticates your public CS2 server through a qualifying Steam account. Valve uses it to:

  • Tie the server identity to a qualifying Steam account.
  • List your server in the community browser.
  • Authenticate your public server with Steam services.

You can skip a GSLT when:

  • You run a local test server with sv_lan 1.
  • You do short-term LAN matches with friends, and nobody needs the public browser.

You must use a GSLT when:

  • You want a public CS2 community server that shows in the server list.
  • You want the server to authenticate correctly with Steam services.
  • You plan to host a long-term public or semi-public Counter-Strike 2 server.

If you ask “how to host a CS2 server that shows up for everyone,” you need a valid token.

Step-by-Step: Create a GSLT for Counter-Strike 2

You create every GSLT from your own Steam account.

Before you start, make sure:

  • Your account owns Counter-Strike 2.
  • Your account is not banned or locked.
  • You have a phone number linked to the account.

Steps

  1. Open the Game Server Account page
  2. Enter the CS2 app ID
    • App ID for CS2 is 730.
    • Put 730 into the App ID of the base game field.
  3. Add a memo name
    • Use a short label you understand later, for example:
      • CS2-Dust2-EU-1
      • CS2-Practice-Friends
    • If you run several CS2 servers, memo names keep tokens apart.
  4. Create and copy the token
    • Click Create.
    • Steam shows a long string of characters in the token list.
    • Copy the token value and paste it into a password manager or a local note for now.
  5. Respect token limits
    • Steam currently allows up to 1000 game server accounts per qualifying Steam account.
    • You can delete old ones if you move or rebuild servers.

If a token gets banned:

  • Check Valve’s GSLT ban guidance and remove any prohibited server modifications first.
  • Fix the root cause before you create or reuse a token, or you risk another token penalty.

Where to Place the Token in Your Launch Command

The safest common method is to feed the token through your CS2 server launch command.

Recommended option – Launch argument

Add the token to your launch command, for example:

./cs2.sh -dedicated -port 27015 +map de_dust2 +sv_setsteamaccount YOUR_GSLT_TOKEN

This works well when:

  • You manage the server through systemd or a game panel.
  • You keep the launch string in one private admin-controlled place.
  • You want to swap tokens per instance on the same host.

Avoid putting the GSLT in public configs

Do not store your GSLT in public GitHub repos, shared screenshots, or copied server.cfg examples.

This keeps:

  • Your token private.
  • Your launch command responsible for server identity.

Good practices

  • Treat the token like a password:
    • Do not post it in Discord, GitHub, or public screenshots.
    • Store it in a password manager, secret manager, or private admin notes.
  • Use one GSLT per public server.
  • If you sell or give away a box, revoke any tokens bound to that machine.
  • Use one GSLT per public server instance and revoke tokens you no longer control.

Handle the GSLT well so your public server can authenticate correctly and remain eligible for server-list visibility.

How to Host a CS2 Private Server on Your Own PC (Fastest Method)

When a Home CS2 Private Server Makes Sense

Hosting on your own PC works when:

  • You want a one-off night with friends.
  • You want to test a CS2 server config, plugin, or new map.
  • You do short practice sessions or dry runs before moving to real CS2 servers.

You should not treat this as a long-term CS2 community server:

  • Your PC must stay on the whole time.
  • Home upload speed and bufferbloat can make your friends lag.
  • Router port rules break when the ISP resets or changes your IP.

Use this path to learn and test. When people start asking “is the server up?” more than once a week, move to a VPS or dedicated CS2 server host.

Fast Private Lobby From the CS2 Client

The fastest way to play privately is inside the CS2 client:

  1. Launch CS2 from Steam.
  2. Click Play and create a Private Match or local lobby.
  3. Pick your map and mode.
  4. Invite friends through the Steam friends list.

Pros:

  • No SteamCMD.
  • No config files.
  • Port work may not be needed for some Steam lobby sessions, but NAT, CGNAT, and firewalls can still block connections.

Limits:

  • The server dies when you close CS2.
  • You have little control over CS2 server config.
  • It is not a standalone Counter-Strike 2 dedicated server that random players can find in the browser.

Use this for quick sessions. For full control and repeatable settings, step up to a real dedicated CS2 private server.

Port Forwarding for a CS2 Private Server

If you want friends to connect by IP to a server running on your PC, you need a port forward.

Basic flow:

  1. Give your PC a static local IP
    • Open your router admin page.
    • Reserve an IP for your PC’s MAC address (for example, 192.168.1.50).
  2. Create a port forwarding rule
    • External port: 27015 UDP.
    • Internal IP: your PC’s local IP.
    • Internal port: 27015.
    • Protocol: UDP (or UDP+TCP if you want to be safe).
  3. Start your server (client host, or a separate CS2 server instance).
  4. Tell friends to open the console and run: connect YOUR_PUBLIC_IP:27015

Two common blockers:

  • CGNAT: Some ISPs put you behind carrier-grade NAT. You cannot host from home in that setup without a tunnel service.
  • Locked ISP routers: Some providers ship routers that hide or block port forwarding. In that case, a cloud server is easier than fighting the firmware.

Simple Security Rules for Home Hosting

Keep home hosting as safe as you can:

  • Set a server password in your config so only invited players join.
  • Do not expose RCON to the internet:
    • Avoid binding RCON on 0.0.0.0 from your home network.
    • If you must use RCON, restrict it to localhost and use a strong password.
  • Close the port when you stop playing:
    • Disable the port forward in the router after each session.
    • Shut down the server process before you browse or game elsewhere.

Treat this as a temporary lab. For always-on CS2 servers, use real hosting with firewalls and DDoS protection in front of you.

How to Host a CS2 Dedicated Server on Windows (SteamCMD)

When You Should Use Windows for Your CS2 Server

Pick Windows when:

  • You already manage only Windows machines.
  • You feel comfortable with .bat files, services, and the Windows GUI.
  • You want a local dev box that also runs other Windows tools.

Windows works well for:

  • One or two CS2 servers on a single machine.
  • Testing plugins and configs before you move to Linux.

For many large CS2 community servers, Linux is preferred because it is easier to automate and usually has less desktop overhead. Many providers run production CS2 server hosting on Linux images because they are easier to automate and maintain.

Install SteamCMD and Download CS2 Server Files

  1. Create a folder for SteamCMD
    • Example: C:\SteamCMD\
    • Example server folder: C:\CS2-server\
  2. Download SteamCMD for Windows
  3. Run SteamCMD
    • Open Command Prompt.
    • cd C:\SteamCMD
    • Run: steamcmd.exe
  4. Install the CS2 server

Inside the SteamCMD prompt:

force_install_dir "C:\CS2-server\"

login anonymous

app_update 730 validate

quit

  • 730 is the app ID for Counter-Strike 2.
  • An anonymous SteamCMD login may be enough to download server files, but GSLT creation requires a qualifying Steam account.

You now have a bare server install in C:\CS2-server\.

Basic CS2 Server Launch Script on Windows

Create a simple .bat file to start the server the same way every time.

  1. In C:\CS2-server\, create start_CS2_competitive.bat.
  2. Paste something like this (single line or broken for readability):

cd /d "C:\CS2-server\game\bin\win64"

CS2.exe -dedicated -usercon -ip 0.0.0.0 -port 27015 ^

+map de_mirage +game_type 0 +game_mode 1 ^

+sv_setsteamaccount YOUR_GSLT_TOKEN

pause

This preset gives you a basic 5v5 competitive server on Mirage.

For a quick deathmatch preset, make another file:

cd /d "C:\CS2-server\game\bin\win64"

CS2.exe -dedicated -usercon -ip 0.0.0.0 -port 27015 ^

+map de_inferno +game_type 1 +game_mode 2 ^

+sv_setsteamaccount YOUR_GSLT_TOKEN

pause

Tune IP and port if you run several instances. Keep the -usercon flag so you can use RCON tools.

Add server.cfg on Windows

By default, CS2 reads configs from a path like:

C:\CS2-server\game\csgo\cfg\

Create a file named server.cfg there and add a simple CS2 server config:

hostname "My CS2 Server"

sv_password "" // set a password for private nights

rcon_password "ChangeThisNow"

sv_lan 0

sv_cheats 0

sv_region 255

mp_maxrounds 30

mp_freezetime 15

mp_roundtime_defuse 1.92

mp_autoteambalance 1

mp_limitteams 1

sv_minrate 128000

sv_maxrate 786432

sv_mincmdrate 64

sv_minupdaterate 64

This gives you:

  • A clear server name.
  • RCON access if you choose to use remote tools.
  • Basic competitive timings.
  • Conservative starting rate settings to test under real traffic.

Later in the article you can plug this into a deeper config section with more mp_, sv_, and plugin options.

Update and Restart Routine

You need a quick way to keep your server current.

1. Create an update script

In C:\SteamCMD\, create update_CS2_server.bat:

@echo off

echo Updating CS2 server...

steamcmd.exe ^

+login anonymous ^

+force_install_dir "C:\CS2-server\" ^

+app_update 730 validate ^

+quit

echo Done. Press any key to exit.

pause

2. Update safely

  • Stop the running server window first.
  • Run update_CS2_server.bat.
  • Wait for “fully installed” to show.
  • Start your start_CS2_*.bat again.

This routine keeps your CS2 dedicated server in sync with Valve patches after you stop the running server and apply the update.

On a dedicated box, you can run the same flow through RDP, or shift the whole job to a Linux server with systemd timers once you outgrow Windows.

How to Host a CS2 Dedicated Server on Linux (SteamCMD)

Why Many Production CS2 Servers Run on Linux

Many production CS2 dedicated server setups use Linux for three practical reasons:

  • Lower desktop overhead: Linux can use fewer background resources than a full Windows desktop setup.
  • Easier automation: Systemd, shell scripts, and cron make updates and restarts simple.
  • Hosting fit: Most VPS and bare metal providers offer Linux images that work well for game server hosting.

If you want to run several CS2 servers, add mods, and keep them online 24/7, build your main stack on Linux and keep Windows for local testing only.

Install Dependencies and SteamCMD

Example below uses Ubuntu / Debian. For RHEL / Alma / Rocky, adjust package names.

1. Create a non-root user

sudo adduser --disabled-password --gecos "" cs2server

2. Install 32-bit libraries and basic tools

sudo dpkg --add-architecture i386

sudo apt update

sudo apt install -y lib32gcc-s1 ca-certificates curl tar screen

3. bLog in as the cs2server user

sudo -iu cs2server

4. Install SteamCMD

mkdir ~/steamcmd && cd ~/steamcmd

curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

You now have steamcmd.sh in ~/steamcmd for the cs2server user. After installing, create the required Steam SDK symlink or the server will fail to start:

mkdir -p ~/.steam/sdk64

ln -s ~/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so

Install CS2 Server Files on Linux

1. Create a folder for the server

mkdir -p ~/cs2-server

2. Run SteamCMD and install the server

cd ~/steamcmd./steamcmd.sh +login anonymous +force_install_dir "/home/cs2server/cs2-server" +app_update 730 validate +quit 

Key points:

  • App ID 730 is Counter-Strike 2.
  • Plan for at least 80 GB of disk space, with 100 GB+ safer for updates, logs, demos, and Workshop maps. Note: the base CS2 download is approximately 60 GB, so budget the remainder for growth.
  • Files land under /home/cs2server/cs2-server/ with the game folder inside.

You can repeat this command later for updates.

Systemd Service for a CS2 Dedicated Server

Use a systemd unit so the CS2 server starts on boot and restarts if it crashes.

1. Create a start script as the cs2server user

nano ~/cs2-server/start_cs2.sh

Example:

#!/bin/bash

cd /home/cs2server/cs2-server/game

./cs2.sh -dedicated -usercon -ip 0.0.0.0 -port 27015 +map de_mirage +game_type 0 +game_mode 1 +sv_setsteamaccount YOUR_GSLT_TOKEN

Then:

chmod +x ~/cs2-server/start_cs2.sh

2. Create the systemd unit as root

sudo nano /etc/systemd/system/CS2.service

Example unit:

[Unit]

Description=CS2 Dedicated Server

After=network-online.target

Wants=network-online.target

[Service]

User=cs2serverGroup=cs2serverWorkingDirectory=/home/cs2server/cs2-serverExecStart=/home/cs2server/cs2-server/start_cs2.sh

Restart=on-failure

RestartSec=5

LimitNOFILE=100000

[Install]

WantedBy=multi-user.target

3. Enable and start

sudo systemctl daemon-reload

sudo systemctl enable CS2.service

sudo systemctl start CS2.service

sudo systemctl status CS2.service

After testing the corrected start script, your CS2 dedicated server can boot with the OS and restart after crashes.

Firewall and UFW / iptables Settings

You must allow traffic to your game ports on the Linux firewall and any cloud firewall.

For UFW (Ubuntu):

sudo ufw allow 22/tcp # SSH

sudo ufw allow 27015/udp # CS2 game

sudo ufw allow 27015/tcp # RCON / queries if needed

sudo ufw allow 27020/udp # GOTV if you use it

sudo ufw enable

sudo ufw status

If you work with raw iptables, the simplest rules look like:

sudo iptables -A INPUT -p udp --dport 27015 -j ACCEPT

sudo iptables -A INPUT -p tcp --dport 27015 -j ACCEPT

sudo iptables -A INPUT -p udp --dport 27020 -j ACCEPT

Combine this with the provider firewall. On a hosted dedicated server, open the same ports in the provider firewall and keep everything else locked down.

Easier Alternative: LinuxGSM

LinuxGSM can install, start, stop, restart, update, validate, back up, monitor, and open the console for a CS2 server. Use it if you want less manual scripting and a simpler maintenance workflow. Start from LinuxGSM's CS2 server page for the one-line installer and cron examples.

Update Script on Linux

You want updates to be predictable and fast.

1. Create an update script as root or run it through a tightly scoped systemd timer

Content:

#!/bin/bash

set -e

# Stop server

systemctl stop CS2.service

# Update files

cd /home/cs2server/steamcmd

./steamcmd.sh +login anonymous +force_install_dir "/home/cs2server/cs2-server" +app_update 730 validate +quit

# Start server

systemctl start CS2.service

Then:

chmod +x ~/cs2-server/update_cs2.sh

2. Run updates

Run the update script as root or through a tightly scoped systemd timer.

You now have a one-command update path. On a dedicated host, you can tie this to cron, systemd timers, or Ansible and keep several CS2 servers current with less manual work.

How to Run a CS2 Server in Docker

When Docker Helps for CS2 Server Hosting

Docker adds structure when:

  • You want clean separation between the CS2 server and the host OS.
  • You plan to run more than one CS2 server on the same machine.
  • You move between home labs, VPS, and dedicated CS2 server hosting and want the same config everywhere.

With containers, you bake most of the logic into a docker-compose.yml and treat each CS2 server as a unit you can bring up or down in seconds.

Pull or Build a CS2 Docker Image

The common pattern:

  • Base image: a SteamCMD image (Debian / Ubuntu based).
  • Layer: CS2 server files and an entry script that runs app_update 730 on start.

Key rules:

  • Keep GSLT and RCON passwords out of the image.
  • Pass them as environment variables or from a .env file.
  • Never push tokens or secrets to public registries.

You can either:

  • Use a maintained CS2 server image only if it has recent updates, a clear Dockerfile history, documented volume paths, and no embedded secrets.
  • Or build your own Dockerfile starting from cm2network/steamcmd and add your CS2 install script.

For production, building your own image keeps you in control of updates, secrets, and security.

Example docker-compose.yml for a CS2 Dedicated Server

Example layout:

# Modern Docker Compose usually does not require a version field.

services:

CS2:

image: your-registry/CS2-server:latest

container_name: CS2-main

restart: unless-stopped

environment:

CS2_GSLT: "${CS2_GSLT}"

CS2_HOSTNAME: "My CS2 Server"

CS2_RCON_PASSWORD: "ChangeThisNow"

CS2_MAP: "de_mirage"

CS2_GAME_TYPE: "0"

CS2_GAME_MODE: "1"

CS2_PORT: "27015"

volumes:

- ./CS2-data:/home/steam/CS2-server

ports:

- "27015:27015/udp"

- "27015:27015/tcp"

- "27020:27020/udp

command: >

/home/steam/entrypoint.sh

Notes:

  • ./CS2-data holds configs, workshop content, and logs. You keep this on the host even if you rebuild the image.
  • Environment values control map, mode, and basic CS2 server config.
  • The entry script reads env vars and builds the final launch command.

A simple entrypoint.sh inside the image might:

  1. Run SteamCMD app_update 730.
  2. Write server.cfg values from env if missing.
  3. Start the CS2 binary with -dedicated and the right ports.

Handling Updates in Docker

You have two layers to keep current:

1. Image updates

If you use a tagged image from a registry:

docker compose pull

docker compose up -d

This pulls newer images and recreates the container with your same volumes and env vars.

2. Game updates inside the container

A common pattern:

The entry script runs:

./steamcmd.sh +login anonymous \

+force_install_dir "/home/steam/CS2-server" \

+app_update 730 validate \

+quit

  • every time the container starts.

You trigger updates by:

  • docker compose restart CS2

This can keep the CS2 game build current without rebuilding the entire image, as long as the entry script and volume paths are maintained correctly.

On a dedicated host, you can tie this to a simple cron job, systemd timer, or external runner.

Port and Firewall Rules in Container Setups

Two main networking modes:

  • Bridge (default):
    • Container runs on a private Docker network.
    • You publish ports with ports: "27015:27015/udp".
    • The host firewall only needs to open the host side of the mapping.
  • Host networking:
    • Container shares the host network stack.
    • CS2 listens directly on the host IP.
    • Easier for some tools, but less isolation.

For most CS2 servers, bridge mode works well:

1. In docker-compose.yml, publish only what you need: Ports:

- "27015:27015/udp"

2. On the host, open the same port: sudo ufw allow 27015/udp

Keep RCON bound to the container and only accessible over VPN or a private admin network. On a dedicated server, combine this with upstream DDoS filtering and rate limits to reduce exposure while keeping the required CS2 ports reachable.

How to Host a CS2 Server on a VPS or Dedicated Server

Hosting Options at a Glance

Use the quick comparison first, then read the breakdown below to choose the best fit. For a broader comparison across game titles and providers, see our guide to the best dedicated game server hosting.

OptionBest forMain prosMain limitsWhen to move up
Home PCOne-off nights, small CS2 private serverNo extra cost, fast to tryWeak upload, no 24/7, port forwarding, security riskYou want a stable CS2 community server that stays online without you
Generic VPS1–2 light CS2 community serversLow entry cost, Linux access, works well with SteamCMD / DockerShared CPU, noisy neighbors, weaker DDoS protectionYou see high var, random lag spikes, or already pay for more than one VPS
Game panel hostFirst CS2 server hosting, “click and play” setupsSimple UI, presets, support, fast startLimited control, shared hardware, higher long-term billYou want root access, custom Docker stacks, or more than one busy server
Generic bare metal dedicated boxGrowing groups, several CS2 servers, serious adminsFull hardware control, predictable resources, better routing options, and firewall controlHigher monthly cost, you manage the stackYou want stronger single-thread CPUs, NVMe, and better network for your region
Dedicated server with DDoS protectionLong-term Counter-Strike 2 server hosting at scaleHigh-clock Intel or AMD CPUs, NVMe storage, high-bandwidth network options, DDoS protection, and room for CS2 servers plus voice, stats, and monitoringHigher commitment than a VPS, you still own the setup decisionsYour community fills several servers and you want one dedicated host you fully control

CS2 Server Config and Game Modes (server.cfg, Game Type, Game Mode)

Where CS2 Stores Config Files

You need to know where your configs live before you tune a CS2 server.

Typical paths:

  • Windows (SteamCMD install): C:\CS2-server\game\csgo\cfg\server.cfg
  • Linux (SteamCMD under /home/cs2server):/home/cs2server/cs2-server/game/csgo/cfg/server.cfg
  • Docker (volume): ./CS2-data/game/csgo/cfg/server.cfg on the host, mounted into the container.

You can also create mode-specific configs (for example gamemode_competitive_server.cfg) in the same cfg folder to override match settings.

Core CS2 Server Config: server.cfg Template

Start with a clean base. Then stack mode-specific configs on top.

// Identity

hostname "My CS2 Community Server"

sv_tags "CS2,community,retakes"

// Access

sv_lan 0

sv_password "" // set for a CS2 private server

rcon_password "ChangeThisNow"

// Rates (start point, tune per host)

sv_minrate 128000

sv_maxrate 786432

sv_mincmdrate 64

sv_minupdaterate 64

// Basic rules

mp_autoteambalance 1

mp_limitteams 1

mp_maxrounds 30

mp_freezetime 15

mp_roundtime_defuse 1.92

// Chat / MOTD

sv_motd_enabled 1

sv_motdfile "motd.txt"

Load this once at server start. For mode-specific tweaks, push them into the matching _server.cfg files so updates do not wipe them.

CS2 Game Modes Cheat Sheet

CS2 still uses the game_type and game_mode pair under the hood.

Common values:

Modegame_typegame_modeNotes
Casual0010v10 style public play
Competitive01Standard 5v5
Wingman022v2 small maps
Deathmatch12Fast respawn, frag focus
Custom30Surf, bhop, custom logic

Launch examples:

Competitive 5v5: +game_type 0 +game_mode 1 +map de_mirage

Casual: +game_type 0 +game_mode 0 +map de_inferno

Deathmatch: +game_type 1 +game_mode 2 +map de_anubis

Custom (for CS2 custom server setups): +game_type 3 +game_mode 0 +map de_dust2

You can bake these into separate start scripts so you switch modes without editing long command lines each time.

Map Rotation and Basic CS2 Server Config for Map Cycles

CS2 still follows the mapgroup idea from CS:GO.

Simple approach:

  1. Define a mapgroup in a config file (for example mapcycle_competitive.cfg or use gamemodes_server.txt style).
  2. Tell the server which group and start map to use in launch options.

Example mapgroup style snippet:

mapgroup mg_competitive

{

maps

{

de_mirage ""

de_inferno ""

de_anubis ""

de_nuke ""

}

}

Then you start the CS2 server with:

+map de_mirage +mapgroup mg_competitive

You can keep:

  • One classic pool (active duty maps).
  • One workshop pool for custom aim maps (handled via host_workshop_collection).

Keep each list short so players do not get lost in endless votes.

Workshop Maps and CS2 Custom Servers

How CS2 Uses Workshop Maps

CS2 changed how custom maps reach clients:

  • For most CS2 Workshop map setups, map delivery is handled through Steam Workshop rather than old CS:GO-style FastDL workflows.
  • The CS2 server pulls maps from the Steam Workshop.
  • Clients download maps through Steam as they join.

For Workshop collections, use the required Steam auth/API key and keep it private. You get it from the Steam developer page after you sign in.

This model can reduce manual file work, but you must manage collections, map IDs, and auth keys with care.

Host Workshop Collection and Start Map

Workflow to host CS2 servers with Workshop maps:

  1. Create a Workshop collection
    • Go to the CS2 Workshop in Steam.
    • Create a new collection and add your maps.
    • Copy the collection ID from the URL.
  2. Pick a start map
    • Open the map page in the Workshop.
    • Copy the map ID from its URL.
  3. Add flags to your start command
    • +host_workshop_collection COLLECTION_ID \
    • +host_workshop_map MAP_ID \
    • -authkey YOUR_STEAM_WEB_API_KEY

The CS2 server will download the collection into the game folder and start on the map you picked.

Keep the API key private. Treat it like a password.

Building a CS2 Custom Server with Workshop Maps

You can turn a CS2 server into a focused training or fun server by picking the right Workshop set.

Common custom stacks:

  • Aim maps:
    • Short, tight maps for aim duels and warmups.
    • Use 5–10 maps that people already know.
  • Surf servers:
    • Custom gravity and movement settings.
    • Surf maps in one or more Workshop collections.
  • Practice servers:
    • Lineup maps for grenades.
    • Maps with built-in helpers and markers.

Keep your Workshop lists:

  • Short: 10–20 maps per role so players find what they want fast.
  • Clean: Remove broken maps and low-quality uploads.
  • Grouped: Use one collection for aim, one for surf, one for practice.

A clear CS2 custom server with tight map pools and stable performance stands out in the browser and nudges players to add your server to their favourites. Running that on strong dedicated hardware gives you more predictable resources and room to grow.

CS2 Mods and Plugins: Metamod, CounterStrikeSharp, SimpleAdmin

CS2 Plugin Stack in 2026

Classic CS:GO SourceMod plugins should not be assumed to work on CS2.

The common CS2-native plugin stack is:

  • Metamod:Source as the loader.
  • CounterStrikeSharp as a common CS2 plugin framework.
  • SimpleAdmin and a few support plugins for admin work.

Install Metamod on a CS2 Dedicated Server

  • Download the Linux build for CS2.
  • Drop the addons folder into game/csgo/.
  • Check that gameinfo.gi points to the Metamod addons path (most modern builds handle this for you).

Install CounterStrikeSharp and Test It

  • Copy the runtime build into game/csgo/addons/.
  • Start the CS2 dedicated server.
  • Run meta and css_plugins list in RCON.
  • If you see Metamod and CSS, the stack loads correctly.

Add SimpleAdmin and Core Support Plugins

  • Place SimpleAdmin files inside addons/CounterStrikeSharp/.
  • Add your SteamID64 as admin in the SimpleAdmin config.
  • In game, use !admin to open the menu, change maps, kick or ban problem players.

Safe Starter Plugin List for CS2 Community Servers

Start lean and test after every plugin:

  • SimpleAdmin.
  • A basic stats or killfeed plugin.
  • A light map vote / nominate plugin.

Add more only after you test under live player load. Heavy or unmaintained plugins can crash busy CS2 community servers.

Performance and Stability Tuning for CS2 Dedicated Servers

Rates and Network Settings That Matter

Set these in server.cfg:

  • sv_minrate, sv_maxrate.
  • sv_mincmdrate, sv_minupdaterate.

Use one conservative network preset and keep values consistent across your CS2 servers. Adjust only after checking choke, loss, var, and player feedback.

CPU, RAM, and Disk Tuning

  • Only consider CPU affinity after monitoring shows scheduler contention.
  • Most admins should first reduce plugins, isolate instances, and monitor frame time before pinning processes.
  • Watch load, var, and frame time during peak fights.
  • Rotate logs and prune old demos so disks never hit 100%.

Bandwidth Planning for CS2 Servers

  • Plan bandwidth with real measurements from your server and leave generous headroom for peak packet rate, players, demos, queries, and DDoS filtering.
  • Match slot count to your port speed and monthly traffic cap.
  • Choose a host with enough port speed, monthly traffic, and DDoS filtering for your player count and server count.

Monitoring Your CS2 Server

  • Use top, htop, or a lightweight dashboard.
  • In game, track ping spread, choke, loss, and var.
  • If those spike, reduce slots or move to stronger hardware.

Security and Protection: VAC, RCON, DDoS, Admin Rules

VAC on CS2 Servers

Keep public CS2 community servers VAC-secured. Avoid -insecure unless you run a private test box.

RCON Safety

  • Use long, unique RCON passwords.
  • Avoid exposing RCON on a public IP.
  • If you must, lock access by IP or VPN and use trusted tools only.

DDoS and Abuse Protection

  • Home connections are usually more exposed to disruption and rarely offer game-grade DDoS filtering.
  • A CS2 server host with DDoS filtering can reduce attack-related downtime.
  • Use provider-side DDoS filtering and keep only required game and admin ports open.

Admin Policy and Player Rules

  • Write a short rule set and pin it in MOTD or Discord.
  • Give full admin rights to very few people.
  • Use SimpleAdmin with logs so bans always have evidence.

When to Move Your CS2 Server to Dedicated Hardware

Signs You Outgrew a Home or Low-End VPS

  • Rounds feel delayed even with low ping.
  • Players drop when traffic spikes or events start.
  • CPU sits near 100% during fights or map changes.

What You Gain With Dedicated CS2 Server Hosting

  • More predictable CPU, storage, and network resources, which can help reduce server-side var when configured well.
  • Better routing options, more bandwidth headroom, and room for more CS2 server instances.
  • Space for Docker stacks, stats, voice, and other game servers.

Why RedSwitches Works Well for CS2 Community Servers

  • Dedicated hosting can give you multiple region options, NVMe storage, high-bandwidth network choices, and DDoS filtering depending on the provider and plan. See what a RedSwitches dedicated server includes before you order.
  • You can deploy CS2, then add other game servers if CPU, RAM, storage, and bandwidth headroom allow it

Common CS2 Server Errors and Quick Fixes

CS2 Server Not Showing in the Browser

  • Check GSLT validity, account status, sv_lan 0, and whether the token was created for App ID 730.
  • Confirm firewall and port forwards for 27015 UDP.
  • Verify game_type / game_mode, browser filters, sv_lan 0, GSLT status, and UDP 27015 reachability.

“Failed to Initialize Steam” or Steamworks Errors

Workshop Maps Not Loading

  • Confirm collection ID and map ID in launch options.
  • Add -authkey with a valid Steam Web API key.

Crashes After Adding Plugins

  • Disable plugins and re-enable them one by one.
  • Match Metamod and CounterStrikeSharp versions to the current CS2 build.

High Ping and Packet Loss

  • Test host network and routes first.
  • Watch for live DDoS or bad peering.
  • Move the CS2 server to a closer region or a host with better routing and more predictable resources.

CS2 Server Checklists and Best Practices

Setup Checklist

  • Pick hardware and region.
  • Install OS, SteamCMD, CS2 server.
  • Open ports, set GSLT, create server.cfg.
  • Start one CS2 dedicated server and test with friends.

Ongoing Maintenance Checklist

  • Run CS2 and plugin updates on a schedule.
  • Take backups of configs and key data.
  • Back up GSLT notes, server.cfg, plugin configs, map lists, admin lists, bans, logs, and Docker volumes if you use containers.
  • Rotate logs and demos.
  • Review resource use and adjust slots or servers.

Community Management Checklist

  • Publish clear rules and an appeal path.
  • Run a Discord or forum for feedback.
  • Keep an admin rota for peak times.
  • Track bans and issues so new admins can step in fast.

Pick your closest region, choose CS2-ready dedicated hardware, and move your community to a server setup that can grow with demand.

Frequently Asked Questions

Common questions about cs2 dedicated server guide: setup, hosting, ports, and configs.

Do I need a GSLT for a CS2 private server with friends?
You do not need a GSLT if you host a short-lived CS2 private server on your own PC and friends join via direct IP. You need a GSLT when you want a public CS2 community server to authenticate with Steam services and appear in the server browser.
How many players can a CS2 server handle on 4 cores and 8 GB RAM?
A strong 4-core / 8 GB box may handle: One light 20–24 slot classic server with minimal plugins, bots, demos, and background tasks, or Possibly two smaller 10–12 slot private servers if CPU steal, plugins, Workshop usage, and background tasks stay low.
What is the difference between CS2 dedicated server and CS2 private server?
A CS2 dedicated server runs as its own process, usually on a VPS or dedicated machine, and can stay online 24/7. A CS2 private server runs from your client or home PC, mainly for quick games with friends, with no real uptime or network guarantees.
Can I use old CS:GO server configs on a CS2 server?
You can copy some values, but you should not drop cs:go configs in as-is. CS2 changed cvars, game modes, and uses Source 2. Treat old configs as reference only and rebuild your CS2 server config clean.
How do I join my own CS2 server from the console?
Enable the developer console in settings. Open it and run: connect localhost on the same machine, or connect YOUR_IP:27015 from another PC.
What is the easiest way to host CS2 servers for a clan or community?
If you want minimal Linux work, start with a good game panel host. If you want long-term control and room for several CS2 servers, use a dedicated server and run SteamCMD, LinuxGSM, or Docker on top.
Written by

Fatima J.

Technical Writer

Fatima is a writer who has authored a wide range of technical guides for the RedSwitches blog, covering Linux, servers, and hosting topics, with a focus on making hands-on subjects clear and approachable.

Related Articles

Power Your Next Project With Bare Metal

10 min delivery, zero setup fees, and 24/7/365 human engineers across 20+ global locations.