What You Need
Before anything else, make sure you have a Linux server (Debian/Ubuntu recommended), SteamCMD installed, and root or sudo access. CS 1.6 dedicated servers run 32-bit binaries, so on a 64-bit host you need compatibility libraries installed first.
Install 32-Bit Libraries
On 64-bit Debian/Ubuntu, the server will crash immediately without these:
sudo apt update
sudo apt install lib32gcc-s1 lib32stdc++6
Skip this step and you'll get a segfault on launch with no useful error message.
Download the Base Server with SteamCMD
CS 1.6 uses AppID 90 — that is the HLDS (Half-Life Dedicated Server) base, not the CS 1.6 client. Run SteamCMD with anonymous login:
./steamcmd.sh +login anonymous +force_install_dir /home/gameserver/hlds +app_update 90 validate +quit
This downloads vanilla HLDS into /home/gameserver/hlds. After it finishes you should see a cstrike/ subdirectory — that is where all game files live.
Swap in reHLDS
Vanilla HLDS is old and has security holes. reHLDS is a reverse-engineered, hardened replacement maintained by the community. You need to replace two files:
- Go to github.com/rehlds/ReHLDS/releases and grab the latest release archive.
- Extract it. Inside you'll find
hlds_linuxandengine_i486.so. - Back up the originals, then copy the reHLDS versions over:
cp hlds_linux /home/gameserver/hlds/hlds_linux
cp engine_i486.so /home/gameserver/hlds/engine_i486.so
chmod +x /home/gameserver/hlds/hlds_linux
That's the full swap. reHLDS is a drop-in replacement — nothing else changes.
Directory Structure
After setup your layout looks like this:
/home/gameserver/hlds/
├── hlds_linux # reHLDS main binary
├── hlds_run # wrapper script (use this to start the server)
├── engine_i486.so # reHLDS engine
└── cstrike/ # CS 1.6 game files
├── server.cfg # main server config
├── maps/ # .bsp map files
├── mapcycle.txt # map rotation
└── addons/ # Metamod, AMX Mod X go here
Launch the Server
Always use hlds_run, not hlds_linux directly. hlds_run is a wrapper script that automatically restarts the server if it crashes:
./hlds_run -game cstrike -console -port 27015 +maxplayers 20 +map de_dust2
Key flags:
-game cstrike— load the Counter-Strike game-console— run without a GUI (required on headless servers)-port 27015— UDP port players connect to (default, change if needed)+maxplayers 20— player slot limit (max 32 for CS 1.6)+map de_dust2— starting map
Verify It's Working
A healthy server start produces these two lines in the console output:
Connection to Steam servers successful.
VAC secure mode activated.
If you see VAC secure mode disabled instead, check that your firewall allows outbound UDP on ports 27015, 27020, and 27005.
Running in the Background
For a persistent server session, use screen or tmux:
screen -S cs16 ./hlds_run -game cstrike -console -port 27015 +maxplayers 20 +map de_dust2
Detach with Ctrl+A, D. Reattach with screen -r cs16.
