--- 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.
The engine auto-executes cstrike/server.cfg after it loads a map. So it runs at boot and at every map change. That means:
maxplayers does not — it is a launch-time value; set it with +maxplayers on the command line.server.cfg re-applies an old value over your live edit. Change the file, not just the live cvar.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 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.
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.
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.
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.
server.cfg.txt (Windows hides the extension), or it is not in cstrike/. It must be cstrike/server.cfg exactly.maxplayers in cfg does nothing — it is a launch-time parameter. Use +maxplayers on the command line.sv_lan is 1. Set it to 0.mp_logdetail is too low or log is off. Set log on and mp_logdetail 3.server.cfg re-executes on map change and overwrites your live edit. Change it in the file.steam user.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.