--- title: "CS 1.6 Server Setup Checklist: From Empty VPS to Public Server" excerpt: "An ordered checklist for standing up a public CS 1.6 server: OS prep, engine and game DLL, Metamod and AMXX, non-Steam support, security, and the go-live verification." category: "installation" tags: "checklist, server-setup" image: "" read_time: "8 min read" ---

This is the order, not a tutorial for each step — each phase links to its full guide. Follow it top to bottom on a fresh VPS and you will not paint yourself into a corner, which is what happens when people install AMXX before Metamod or open the firewall before setting an RCON password. Treat every checkbox as "done and verified" before moving on.

1. Prepare the OS

sudo dpkg --add-architecture i386 && sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 libc6:i386
sudo adduser --disabled-password --gecos "" steam

Full detail: the SteamCMD install guide.

2. Install the base server (App 90)

3. Replace the engine and game logic

4. Metamod and AMX Mod X

Order is load-bearing: engine → game DLL → Metamod → AMXX → ReAPI. Installing out of order is how you get bad load.

5. Admins and core plugins

6. Non-Steam support (if you want it)

7. Configure and secure

hostname "My CS 1.6 Server"
sv_lan 0
rcon_password "a-long-random-string"
sv_maxrate 25000
sv_minrate 15000
sv_rcon_maxfailures 5

8. Firewall and go-live

sudo ufw allow 27015/udp

Pre-launch verification

Run this list in the server console before you advertise the IP. Every one must pass:

version               // must include a ReHLDS version: line
regamedll_version     // prints a version
meta list             // every plugin RUN
amxx plugins          // every plugin running
status                // correct map, slots, public IP

Then, from a second machine, connect YOUR_IP:27015 and play a full round including a map change — the map change is where a bad delta.lst or a missing asset shows up. Confirm the server appears in the internet list (needs sv_lan 0 and a reachable UDP port); if it does not, that is a master-list problem, not a config one. When all of that holds, the server is genuinely public-ready.

Why the order is not negotiable

The temptation is to skip ahead — install AMXX before Metamod, open the firewall before setting a password, add plugins before the engine is stable. Each shortcut has a specific cost. AMXX before Metamod cannot load, because Metamod is what loads it. ReAPI before ReGameDLL fails, because ReAPI hooks functions that only exist in ReGameDLL. A public port before an RCON password is a window in which anyone scanning the internet list can try to seize your console. The dependency chain — engine, then game DLL, then loader, then AMXX, then anything that hooks the game — is the same chain that determines what crashes when something is wrong, which is why every troubleshooting guide asks "did you install in order" first.

Post-launch, keep it running

Launching is not the end. Three things separate a server that survives its first week from one that does not. Put it under a process supervisor (systemd) so a crash restarts it and a reboot brings it back — hlds_run restarts the inner binary but not the whole service. Keep the Valve .bak files you made when swapping the engine and game DLL; they are your only fast rollback. And watch the logs for the first few days:

tail -f /home/steam/hlds/cstrike/addons/amxmodx/logs/*.log
tail -f /home/steam/hlds/debug.log

A repeating warning on every map change is a real problem that has not crashed you yet — a stale delta.lst, a plugin erroring quietly, a missing asset. Fix those while the server is small, because they get exponentially harder to diagnose once there are thirty players and a full plugin set to bisect. A server that boots clean, cycles its whole mapcycle with players on it, and logs nothing repeating is one you can safely walk away from.