--- title: "server.cfg for CS 1.6: A Complete, Commented Example" excerpt: "A full, line-by-line server.cfg for CS 1.6 covering identity, rates, gameplay, logging and downloads — with an explanation of when it actually executes." category: "installation" tags: "server.cfg, config" image: "" read_time: "8 min read" ---

server.cfg is where a CS 1.6 server's personality lives: its name, its rules, its network rates, its logging. The engine executes it automatically at startup and again on every map change, which is both convenient and a trap — anything you want applied once (like maxplayers) does not belong here. This is a complete, commented file you can adapt, with an explanation of what each block does and why.

When server.cfg runs

The engine auto-executes cstrike/server.cfg after it loads a map. So it runs at boot and at every map change. That means:

The file

Create /home/steam/hlds/cstrike/server.cfg:

// ---- Identity ----
hostname "My CS 1.6 Server | example.com"
sv_contact "admin@example.com"

// ---- Passwords / access ----
rcon_password "use-a-long-random-string-here"
sv_password ""                 // set to make the server private
sv_rcon_banpenalty 15          // minutes banned after too many bad rcon tries
sv_rcon_maxfailures 5          // wrong rcon attempts before a temp ban

// ---- Master list / network mode ----
sv_lan 0                       // 0 = appear on the internet list. MANDATORY for public.
sv_region 255                  // 255 = world; or a numeric region code

// ---- Network rates ----
sv_maxrate 25000
sv_minrate 15000
sv_maxupdaterate 101
sv_minupdaterate 30
sv_maxcmdrate 101
sv_mincmdrate 30
sv_timeout 60

// ---- Gameplay ----
mp_timelimit 30                // minutes per map
mp_maxrounds 0                 // 0 = use timelimit instead of round count
mp_freezetime 3
mp_roundtime 3
mp_startmoney 800
mp_buytime 0.25                // minutes (0.25 = 15 seconds)
mp_c4timer 35
mp_friendlyfire 0
mp_autoteambalance 1
mp_limitteams 2
mp_autokick 0                  // 0 = do not auto-kick idlers/TKers
mp_flashlight 1
mp_footsteps 1
mp_tkpunish 0

// ---- Voice ----
sv_voiceenable 1
sv_alltalk 0                   // 0 = teams cannot hear each other

// ---- Downloads (custom maps/sounds) ----
sv_allowdownload 1
sv_allowupload 1
sv_downloadurl ""              // fast HTTP redirect; leave empty to use slow UDP download

// ---- Logging ----
log on
mp_logmessages 1
mp_logdetail 3                 // log damage + kills (needed by stats plugins)
sv_log_onefile 0
sv_logbans 1
sv_logecho 1

// ---- Execute the map cycle ----
mapcyclefile "mapcycle.txt"

The blocks that matter most

sv_lan 0

The single most important line. With sv_lan 1 the server never heartbeats the master list and rejects Steam clients with a LAN error. Public servers must have sv_lan 0.

Rates

The rate block controls how much bandwidth and how many updates the server allows per client. sv_maxupdaterate 101 and sv_maxcmdrate 101 are the modern defaults for a good connection; the min values stop a client from starving itself into rubber-banding. Do not set the max absurdly high — it does not add smoothness beyond the engine's real tick rate, it just wastes bandwidth.

Logging detail

mp_logdetail 3 is required if you run a stats plugin — stats parse damage and kill log lines, and at lower detail those lines are not written. If your stats plugin "records nothing", check this first.

sv_downloadurl

Leave it empty and clients pull custom maps over the slow in-game UDP channel; point it at an HTTP server hosting your cstrike/ files and downloads are far faster. It is worth setting the moment you run custom maps.

Common errors

Verification

Start the server and, in the console, echo a few values back to confirm the file executed:

sv_lan
mp_timelimit
sv_maxupdaterate

Each should return the value you set. Force a map change and re-check — the values should persist because the file re-executes. Once the config is stable, wire the whole thing into a systemd service and open the right firewall ports, and the server is ready for players.