LinuxGSM
Command-line tool for dedicated game servers
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
Mindustry
Game ServersTower-defense and factory game with servers
Replaces Factorio
Lichess
Game ServersOpen-source chess server and platform
Replaces Chess.com
OpenRCT2
Game ServersOpen-source remake of RollerCoaster Tycoon 2
Replaces RollerCoaster Tycoon
papermc-docker
Game ServersContainerized Minecraft Java server image
Replaces Minecraft Realms
ArchiSteamFarm
Game ServersTool for farming Steam cards from multiple accounts
Replaces Idle Master
2048
Game ServersSelf-hostable browser version of the 2048 sliding puzzle
Replaces Mobile puzzle games