How to Install a CS 1.6 Dedicated Server on Windows 10/11

June 10, 2025 Daemon666 8 min read 12 преглеждания

A Windows CS 1.6 server is the fastest way to get something running, and it is perfectly fine for a LAN, a test box, or a small public server. It is not what you want for a busy 32-slot public — Windows HLDS is measurably slower per tick than hlds_linux and the tooling around it is worse. But the install is short and the failure modes are well understood.

1. Download SteamCMD

Grab steamcmd.zip from Valve's developer wiki and extract it to a path with no spaces and no non-ASCII characters — for example C:\steamcmd. Paths like C:\Users\Bogdan\Desktop\Neue Ordner\ break the HLDS console in ways that are not worth debugging.

Run it once so it self-updates:

C:\steamcmd\steamcmd.exe +quit

2. Install App 90

Open cmd.exe (not PowerShell — the + arguments are fine either way, but PowerShell mangles some quoting) and run:

C:\steamcmd\steamcmd.exe +force_install_dir C:\hlds ^
  +login anonymous ^
  +app_set_config 90 mod cstrike ^
  +app_update 90 validate ^
  +quit

Run it a second time. App 90's anonymous download is notorious for finishing the base Half-Life content and skipping cstrike\ on the first pass. When it is complete you must have:

C:\hlds\hlds.exe
C:\hlds\cstrike\liblist.gam
C:\hlds\cstrike\dlls\mp.dll

If mp.dll is missing, the mod did not install and no amount of configuration will help.

3. Configure the server

Create C:\hlds\cstrike\server.cfg with Notepad (save as All Files, not server.cfg.txt — Explorer hides the extension by default, and this trips people up every single time):

hostname "My CS 1.6 Server"
rcon_password "a-long-random-password"
sv_lan 0
sv_password ""

mp_timelimit 30
mp_autoteambalance 1
mp_friendlyfire 0
mp_freezetime 3

sv_maxrate 25000
sv_minrate 15000
sv_maxupdaterate 101
sv_minupdaterate 30

log on

Turn on file extensions in Explorer (View → Show → File name extensions) before you do anything else. A server.cfg.txt is the single most common reason server.cfg settings do not apply.

4. Create a start batch file

C:\hlds\start.bat:

@echo off
cd /d C:\hlds
hlds.exe -console -game cstrike -insecure -port 27015 +map de_dust2 +maxplayers 20 +sv_lan 0
pause

-console gives you the plain text console instead of the old MFC dialog window; it is far easier to read and to copy errors out of. Drop -insecure if you want VAC (it does very little for CS 1.6 today, but it removes the "not VAC secured" warning). pause keeps the window open so you can actually read the crash message instead of watching it vanish.

5. Windows Firewall

Windows will pop a prompt the first time hlds.exe binds a socket, and people reflexively click Cancel. Add the rules explicitly instead. Open an Administrator PowerShell:

New-NetFirewallRule -DisplayName "HLDS UDP 27015" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow
New-NetFirewallRule -DisplayName "HLDS TCP 27015" -Direction Inbound -Protocol TCP -LocalPort 27015 -Action Allow

UDP 27015 is the game. TCP 27015 is RCON. If your server is at home behind a router, you also need to forward both to the machine's LAN IP — see running a server behind NAT.

6. Optional: run it as a service

HLDS has no service mode. If you want it to survive a reboot without a logged-in session, the practical options are Task Scheduler (trigger: At startup, run whether user is logged on or not, working directory C:\hlds) or a supervisor such as NSSM. Task Scheduler is enough for most people; just remember to set Start in to C:\hlds or HLDS will not find cstrike and will die with Could not find liblist.gam.

Common errors

  • Could not launch game. Please ensure you have the latest version — you launched hlds.exe from the wrong working directory. Always cd /d C:\hlds first.
  • Couldn't allocate dedicated server IP port 27015 — another HLDS instance is running, or a Steam client is holding the port. Check with netstat -ano | findstr 27015 and kill the PID.
  • Server visible on LAN onlysv_lan 1, or your router is not forwarding UDP 27015. The internet list needs sv_lan 0 and a reachable public UDP port.
  • Console window closes instantly — you started it without pause and it crashed. Add pause, rerun, read the last line.
  • Antivirus quarantines hlds.exe — several engines flag Metamod/AMXX DLLs as trojans (false positive). Exclude C:\hlds before you install plugins.

Verification

In the HLDS console type status. You should see the map name, players : 0 active (20 max), and your public IP. Then from a CS 1.6 client on another machine:

connect YOUR_PUBLIC_IP:27015

If it connects, the port is open and the mod loaded. To check the server is reaching the internet list, run heartbeat in the console and look for master-server traffic; if it never appears, read why a server does not show in the internet list.

Where to go next

Windows HLDS can run the modern stack too: ReHLDS on Windows, then Metamod-r and AMX Mod X 1.9. If you plan to actually grow the server, weigh the platforms first: Windows vs Linux for a CS 1.6 server.

Сътрудници: Daemon666 ✦
Сподели: