How to Install a CS 1.6 Server with LinuxGSM

August 13, 2025 Daemon666 8 min read 8 просмотров

LinuxGSM is a bash management script that wraps the whole lifecycle of a game server — install, start, stop, update, backup and monitor — behind one command. For CS 1.6 it drives SteamCMD to download app 90 and then manages the hlds process for you. The CS 1.6 server code in LinuxGSM is csserver. This guide installs it from scratch on a Debian/Ubuntu box.

1. Create a dedicated user

LinuxGSM refuses to run as root and it is right to — a game server should never run with root privileges. Create a service user first:

sudo adduser csserver
sudo su - csserver

Everything below runs as this unprivileged user, in its home directory.

2. Install dependencies

CS 1.6 is a 32-bit engine, so you need i386 libraries plus the tools LinuxGSM uses (tmux, curl). On a 64-bit Debian/Ubuntu host, enable i386 and install:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y curl wget tmux lib32gcc-s1 lib32stdc++6

LinuxGSM's own dependency checker will tell you exactly what is missing later, but these cover a standard CS 1.6 server. The 32-bit libs are the ones people forget, and their absence produces a silent failure to start.

3. Download LinuxGSM and create the instance

Fetch the bootstrap script and hand it the CS 1.6 server code. This does not download the game yet — it creates a tailored csserver management script:

wget -O linuxgsm.sh https://linuxgsm.sh
chmod +x linuxgsm.sh
./linuxgsm.sh csserver

You now have a csserver script in the home directory. Every operation from here is ./csserver <command>.

4. Install the server

Run the install command. LinuxGSM checks dependencies, then invokes SteamCMD to pull down app 90:

./csserver install

This is the step that runs app_update 90 under the hood — the same download covered manually in the SteamCMD guide. It downloads the full CS 1.6 server files into serverfiles/. If the cstrike folder comes down incomplete (a known Steam quirk on app 90), run ./csserver install again — it resumes rather than restarts.

5. Configure the server

LinuxGSM keeps its settings separate from the game's own configs. The management config — ports, start parameters — lives here:

lgsm/config-lgsm/csserver/csserver.cfg

Copy the settings you want to override out of _default.cfg (never edit _default.cfg directly) into csserver.cfg. The in-game settings — hostname, rcon, cvars — still live in the normal server.cfg under serverfiles/cstrike/. LinuxGSM's startparameters line is where you set the map, maxplayers and port, mirroring the HLDS command-line parameters.

6. Start and monitor

./csserver start
./csserver details
./csserver monitor

start launches HLDS inside a tmux session; details prints the ports, IP and query status; monitor checks the server is alive and responding to A2S queries, restarting it if not. Add ./csserver monitor to cron every few minutes and LinuxGSM becomes a self-healing watchdog. To reach the live console, ./csserver console attaches to the tmux session — detach with the tmux prefix, not Ctrl-C, or you kill the server.

7. Update and back up

LinuxGSM wraps the maintenance jobs too. ./csserver update re-runs SteamCMD to pull any CS 1.6 update, ./csserver backup archives the server files, and ./csserver restart cycles the process cleanly. Put update and backup on their own cron schedules so the server stays current and recoverable without you logging in. Everything LinuxGSM does is still plain SteamCMD and hlds underneath — the script just gives each step a memorable command and a log under log/.

Troubleshooting

  • "[ FAIL ] Checking dependencies" — a required library is missing. Let the installer list them, then apt install the named packages. The 32-bit libs are the usual culprit.
  • Server installs but will not start — almost always missing lib32gcc-s1 or lib32stdc++6. Check log/console/csserver-console.log for a loader error.
  • "Counter Strike is not installed" — the SteamCMD download did not finish; the cstrike folder is incomplete. Re-run ./csserver install.
  • Refuses to run as root — by design. Switch to the unprivileged csserver user.
  • Console detach kills the server — you pressed Ctrl-C inside the tmux console. Detach with the tmux prefix key sequence instead.

Verification

Run ./csserver details and confirm it reports the server running with a query port responding. From another machine, add the server's IP and port in the CS browser (favourites, add by address) and confirm it appears with the right map and player count. Then run ./csserver monitor and confirm it reports the server healthy. Once monitor passes, wire it into cron so LinuxGSM restarts the server automatically if it ever dies.

Участники: Daemon666 ✦
Поделиться: