--- 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.
steam user. Never run the server as root.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.
login anonymous, app_update 90 validate — twice, the first pass often skips cstrike/.liblist.gam, hlds_run and hlds_linux all exist, and the server boots to a map.version (it must print a ReHLDS version: line).cs.so — verify with regamedll_version, and copy delta.lst or you will crash on connect.liblist.gam; verify with meta list.plugins.ini; verify with amxx version.cstrike, fun, etc.) and confirm with amxx modules.Order is load-bearing: engine → game DLL → Metamod → AMXX → ReAPI. Installing out of order is how you get bad load.
addons/amxmodx/configs/users.ini by SteamID (or by name+password for non-Steam).SteamIdHashSalt of at least 16 characters, or it refuses to load.server.cfg: hostname, rates, mp_* gameplay, and a long rcon_password.sv_lan 0 — mandatory to appear in the master list.sv_rcon_maxfailures, sv_rcon_minfailures, sv_filterban 1.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
sudo ufw allow 27015/udp
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.
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.
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.