Install a CS 1.6 Server on Ubuntu 24.04 LTS

November 5, 2025 Daemon666 8 min read 11 преглеждания

Ubuntu 24.04 LTS (Noble) is a fine host for a CS 1.6 server, but it is a pure 64-bit release that ships none of the 32-bit runtime HLDS is built against. Nearly every "installed but won't start" report on 24.04 comes from that gap. This guide is the 24.04-specific path; for the platform-agnostic detail see the general SteamCMD guide.

1. Create an unprivileged user

Do not run a 20-year-old network binary as root.

sudo adduser --disabled-password --gecos "" steam
sudo su - steam

2. Enable i386 and multiverse, then install the runtime

On 24.04 the package names are the current ones — lib32gcc-s1, not the old lib32gcc1:

sudo dpkg --add-architecture i386
sudo add-apt-repository multiverse
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 libc6:i386 \
  libncurses6:i386 libcurl4:i386 ca-certificates tar wget

The full reasoning and per-package breakdown is in the 32-bit library guide. Skip these and the server dies with ./hlds_linux: No such file or directory — which is the kernel reporting the missing 32-bit ELF loader, not a missing binary.

3. Install SteamCMD

Ubuntu packages SteamCMD in multiverse, which is the tidy option on 24.04:

sudo apt install -y steamcmd

That installs the steamcmd wrapper. (If you prefer the tarball, the manual method in the general guide works identically on 24.04.) Run it once so it self-updates:

steamcmd +quit

4. Download App 90

steamcmd +force_install_dir /home/steam/hlds \
  +login anonymous \
  +app_set_config 90 mod cstrike \
  +app_update 90 validate \
  +quit

Run the exact same command a second time. App 90's anonymous download regularly finishes the base Half-Life files and skips cstrike/ on the first pass; the second pass fills it in. If you see Error! App '90' state is 0x402 after update job., that means the download was interrupted — just re-run and SteamCMD resumes.

5. Verify the files exist

ls /home/steam/hlds/cstrike/liblist.gam
ls /home/steam/hlds/hlds_run /home/steam/hlds/hlds_linux

All three must be present. liblist.gam is what tells the engine which game library to load; if it is missing, the mod did not download and you repeat step 4.

6. Minimal config and first start

Create /home/steam/hlds/cstrike/server.cfg with at least a hostname, an rcon password, and sv_lan 0 (a full annotated file is in the server.cfg guide). Then:

cd /home/steam/hlds
./hlds_run -game cstrike -strictportbind -ip 0.0.0.0 -port 27015 \
  +map de_dust2 +maxplayers 20 +sv_lan 0

sv_lan 0 is mandatory to appear on the master list; with sv_lan 1 the server never heartbeats and Steam clients are refused.

7. Firewall with ufw

24.04 ships ufw. Open the game port for both protocols (UDP is gameplay, TCP is RCON):

sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp

Details and the optional HLTV/query ports are in which ports to open.

Why 24.04 needs this when older boxes did not

Old CS 1.6 tutorials assume a 32-bit or multilib-by-default distro, which is why they never mention the i386 packages. 24.04 dropped all of that: it is 64-bit only and installs no 32-bit userland at all. The HLDS binary has not changed — it is still the same 2003-era 32-bit ELF — so the fix is to add back the runtime it expects. This is a one-time step per host; once the i386 libraries are present, ReHLDS, ReGameDLL, Metamod and every AMXX module reuse them.

Harden the box while you are here

24.04 ships ufw disabled by default. If you enable it, set a default-deny inbound policy and then open only what you need, or you will lock yourself out of SSH:

sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw enable

Run the server as the unprivileged steam user (step 1), keep the OS patched, and put the launch behind a systemd unit rather than a login shell so a dropped SSH session never takes the server down with it.

Common errors on 24.04

  • ./hlds_linux: No such file or directory — the i386 runtime is missing even though the file is clearly there. Install the packages in step 2. This is the number-one 24.04 issue.
  • error while loading shared libraries: libstdc++.so.6: cannot open shared object file — you have the 64-bit libstdc++6 but not lib32stdc++6. Add the 32-bit one.
  • steamcmd: command not found — multiverse is not enabled. Run add-apt-repository multiverse and apt update.
  • SteamCMD complains it cannot find a 32-bit loader — the steamcmd package pulls i386 deps, but if you added the repo after installing, run sudo apt install --reinstall steamcmd.
  • Server starts but nobody finds itsv_lan is 1, or the provider blocks inbound UDP. Confirm the bind with ss -lunp | grep 27015.

Verification

ss -lunp | grep 27015

should show hlds_linux bound to the UDP port. Type status in the console for the map, hostname, and slot count, then from another machine run connect YOUR_IP:27015. Once you spawn, the base install is done. Next, put it behind a systemd service so it survives reboots, and upgrade the engine to ReHLDS.

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