LinuxGSM

Command-line tool for dedicated game servers

Game Servers ★ 4.9k stars Medium setup MIT

LinuxGSM is a free, open-source command-line tool for deploying and managing dedicated game servers on Linux. It automates installation, updates, backups, and monitoring for many games.

Key features

  • Supports 100-plus games
  • Automated install and updates
  • Backups and monitoring
  • Email and alert integrations

Pros & cons

Strengths

  • Huge game coverage
  • Lightweight CLI approach

Trade-offs

  • No graphical interface
  • Per-game configuration needed

LinuxGSM replaces

Last reviewed Sep 13, 2026 · 818 words

LinuxGSM is a bash script from 2012 that has quietly outlived most of the web panels built to replace it. You get one executable per game server, named after the game (cs2server, valheimserver, mcserver), and that one file installs the game through SteamCMD, starts it inside tmux, watches it, updates it, backs it up, and pages you when it dies. No panel, no database, no Docker, MIT licence, about 512 MB of overhead before the game itself. If you are comfortable at a shell prompt and run a handful of servers for friends, it is the most reliable way I know to do it. If you are hosting for people who need a web button, skip to the last two sections.

Install is four commands and a coffee

sudo adduser --disabled-password cs2server
sudo -iu cs2server
curl -Lo linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh cs2server
./cs2server install

The installer checks for missing packages (it prints the apt line for you), pulls SteamCMD, downloads the game, and drops a default config. The convention of one Linux user per game server is not optional in my book: it isolates each install, lets a rogue mod only wreck its own home directory, and makes sudo -iu the entire access model. Counter-Strike 2 lands at around 30 GB on disk, so check the volume before you press go.

From there the verbs are the same for every one of the 100-plus supported games: ./cs2server start, stop, restart, details (ports, config paths, status), console (attach to the tmux session, detach with Ctrl+B then D), update, validate, backup. ./cs2server details is the first thing to run after install, because it prints the exact UDP ports to forward.

Monitor plus cron is the whole high-availability story

*/5 * * * * /home/cs2server/cs2server monitor > /dev/null 2>&1
*/30 * * * * /home/cs2server/cs2server update > /dev/null 2>&1

monitor checks that the tmux session exists and that the game answers a query, and restarts it if either fails. Every 5 minutes is the documented cadence. update checks SteamCMD for a new build and only restarts when there is one, which for games that push updates on a Tuesday means the server is back before anyone in Europe notices. Alerts on restart or failed update go to Discord, Slack, Telegram, Pushover, Gotify, email, and a few more, configured with a handful of lines in lgsm/config-lgsm/cs2server/cs2server.cfg. That file is also where you set the map, the max players, the RCON password, and the game-specific startup parameters. Edit the instance config, never _default.cfg, because the latter is overwritten on ./cs2server update-lgsm.

Backups and mods are covered; the game itself decides how well

./cs2server backup tars the whole server directory into backups/, optionally stopping the server first, and prunes by age. For most Steam games that is fine because reinstalling from SteamCMD is free and only the config and world data matter. For Minecraft-style worlds and modded Valheim saves, run the backup more often than you think, from cron, and ship the tarball off the box. Mod installs (./cs2server mods-install) cover the common cases: Metamod and SourceMod for Source titles, Oxide for Rust, and so on. Anything outside the list you install by hand in the game directory, which LinuxGSM does not mind.

What a panel gives you that a script cannot

Nothing here has a login page. If the people running the server are not you, and they need to restart a map or whitelist a player without SSH, you want Pterodactyl: per-server Docker containers, a web console, user accounts, and a much larger operational footprint (a Laravel panel, a database, a daemon per node). For a Minecraft-only house, Crafty Controller is lighter and more focused. LinuxGSM is also the wrong fit if you want everything in Docker; it expects a real user account and a real filesystem, and although community images exist, the update and monitor logic assumes it owns the host.

The trade in the other direction deserves naming: a panel adds an attack surface and a second thing to update, while a LinuxGSM box is one user, one script, and SSH. For a private server with 5 to 20 regular players, that is the right amount of infrastructure.

What I'd do

One VPS or spare box per game family, one Linux user per instance, LinuxGSM with monitor on a 5-minute cron and update on a 30-minute cron, Discord alerts, nightly backups to off-box storage. Add Pterodactyl only when someone other than you needs to click a button. The games category has the rest of the options, but this script has been the boring default since before most of them existed, and boring is what you want from a thing that keeps a Friday night running.

Compare LinuxGSM

5 head-to-head comparisons.

Similar game servers apps