Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS:GO dockerized dedicated server + client tuning

A self-contained, portable CS:GO (legacy) dedicated server


0. The CS:GO / CS2 situation, verified

App ID What it is State
740 Counter-Strike Global Offensive - Dedicated Server Still served anonymously, frozen at buildid 12426148, last updated 2023-10-13. This is the final real CS:GO server, not CS2.
4465480 Counter-Strike: Global Offensive (standalone legacy client) Free, released, Windows + Linux. The 2026 unlisted re-release.
730 Counter-Strike 2 The current game. Also carries the csgo_legacy beta branch.

1. Quick start (server)

cd ~/Desktop/csgo_server
cp .env.example .env
$EDITOR .env                        # at minimum set RCON_PASSWORD

./scripts/lanparty.sh check         # pre-flight: firewall, WARP, disk, docker
./scripts/lanparty.sh firewall open # open 27015/udp+tcp and 27020/udp (sudo)

docker compose up -d
docker compose logs -f              # first run downloads ~14 GB (~35 GB on disk)

When the log says Connection to Steam servers successful and the map has loaded:

./scripts/lanparty.sh info          # prints the exact connect string to share

Everyday commands:

docker compose restart              # apply cfg/ changes (bind-mounted)
docker compose up -d --build        # apply scripts/ or Dockerfile changes
docker compose down                 # stop (keeps the 35 GB download)
docker compose down -v              # stop AND delete the game files
docker attach csgo-server           # live server console (Ctrl-P Ctrl-Q to detach)

2. How to connect?

The normal way - direct connect

  1. Everyone enables the console once: Settings > Game > Enable Developer Console > Yes.

  2. Press ~ (tilde) in game.

  3. Type:

    connect 192.168.202.26:27015
    
  4. If SV_PASSWORD is set in .env, guests type this first, then connect:

    password yourpassword
    connect 192.168.202.26:27015
    

The lazy way - LAN server browser

With SV_LAN=1 the server broadcasts itself. Guests go to Play -> Browse Community Servers -> LAN tab and it appears with no typing. This only works if everyone is on the same subnet

The lazier way - Steam friends list

The client autoexec.cfg sets cl_join_advertise 2, so once one is in the server, their Steam friends can right-click > Join Game and get pulled straight in.

Spectating

SourceTV is on. Anyone can watch without taking a player slot:

connect 192.168.202.26:27020

Running admin commands

From inside the game, once connected:

rcon_password yourrconpassword
rcon mp_warmup_end          // skip warmup, start the match
rcon exec practice          // nade practice mode (infinite nades, trajectories)
rcon exec live              // back to match rules, knife round, LIVE
rcon changelevel de_mirage
rcon status                 // who's connected
rcon bot_quota 6            // pad out the teams with bots

Requirememts

Minimal server requirements: 2 cores, 4 GB RAM, 40 GB disk, wired ethernet. Then:


3. Weapon skins, knives, gloves and agents

Enabled by default via ENABLE_SOURCEMOD=1 in .env. Set it to 0 for a vanilla server.

What installs automatically

scripts/install-sourcemod.sh pulls and installs, on first start:

Component Version Why
MetaMod:Source 1.11.0-git1156 plugin loader, ships metamod.2.csgo.so
SourceMod 1.11.0-git6970 plugin platform, about 65 MB
PTaH v1.1.4 ships PTaH.ext.2.csgo.so, required by the skin plugin
kgns/weapons v1.7.8 the skin changer itself
Chat Also What it does
!ws !ws in console as sm_ws, or the buyammo1 bind weapon skin menu: skin, float, StatTrak, name tag
!knife !kf, or the buyammo2 bind knife model and its skin
!nametag custom name tag on the current weapon
!seed pattern seed, the thing that decides fade percentage and case hardened blue
!wslang each player picks their own skin list language
!wsreset <player> admin only, root flag wipes someone's saved skins and knife

There is no !skin and no !skins. Those are commands from other plugins.

Gloves and agents come from two more plugins, both installed and verified loaded:

Chat Plugin What it does
!gloves kgns/gloves v1.0.5 glove model and skin, with float
!glove same alias
!gllang same glove list language
!agents Mazepa Agent Selector agent model menu, 46 legacy agents
!agent same alias
!tp same third person, disabled by default, see below

Enjoy!

P.S. This project was made with the help of AI

About

Dockerized csgo server. Made with some help of AI

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages