GamingAugust 4, 20264 min read

How to Run Any SteamCMD Game Server on a Linux VPS

Learn the one workflow behind every Steam dedicated server: install SteamCMD, log in anonymously, install by App ID, open ports, and run it as a systemd service.

NBy Nxeon

Almost every dedicated game server on Steam โ€” Rust, Valheim, Palworld, ARK, CS2, 7 Days to Die โ€” installs through the same tool: SteamCMD. Learn the workflow once and you can host practically any of them. This guide teaches the universal pattern, then points you at the game-specific details.

What SteamCMD is

SteamCMD is Valve's command-line version of the Steam client, built for headless servers. It downloads and updates dedicated server files by App ID, usually with an anonymous login (no Steam account needed for the server itself). Master these two concepts and the rest is detail.

Step 1: A clean, secure base

Start on Ubuntu 22.04/24.04 or Debian 12. Never run game servers as root โ€” create a dedicated user, and if this is a fresh box, harden it first (see securing your first Linux VPS):

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

Step 2: Install SteamCMD and its 32-bit libraries

SteamCMD needs 32-bit libraries even on a 64-bit system:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 steamcmd

Step 3: Install a server by App ID

This is the command you'll reuse for every game. Switch to the steam user and install into a per-game directory. The two variables are the install dir and the App ID:

sudo su - steam
steamcmd +force_install_dir ~/valheim +login anonymous +app_update 896660 validate +quit

+force_install_dir must come before +login, or SteamCMD ignores it. validate verifies file integrity โ€” always include it.

{{SCREENSHOT}}

Common dedicated-server App IDs

Here are the anonymous-login App IDs used throughout these guides:

Step 4: Windows-only servers on Linux

A few games (ARK: Survival Ascended, V Rising, Enshrouded, Sons of the Forest) ship only Windows server binaries. You can still host them on Linux: force SteamCMD to download the Windows files, then run them under Proton or Wine:

steamcmd +@sSteamCmdForcePlatformType windows \
  +force_install_dir ~/asa +login anonymous +app_update 2430930 validate +quit

If Proton feels fiddly for these specific games, a Windows VPS runs the .exe directly.

Step 5: Open the right ports

Every game uses different ports โ€” open exactly what your game needs on both the OS firewall and any provider-level firewall:

sudo ufw allow 2456:2458/udp   # example: Valheim
sudo ufw reload

Forgetting the provider firewall is the single most common reason a running server is unreachable. If players still can't connect, work through diagnosing 'connection refused' errors.

Step 6: Run it as a systemd service

A service keeps the server alive across crashes and reboots. The template is the same for every game โ€” only User, ExecStart, and the description change:

# /etc/systemd/system/gameserver.service
[Unit]
Description=Game Dedicated Server
After=network-online.target

[Service]
Type=simple
User=steam
ExecStart=/home/steam/start.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now gameserver
sudo journalctl -u gameserver -f

Step 7: Keep it updated

Games patch constantly, and an outdated server often blocks players. Re-run the same +app_update command to update, and automate it entirely with keeping a SteamCMD server updated automatically.

FAQ

What is SteamCMD used for?

It's Valve's command-line Steam client for installing and updating dedicated game server files by App ID, without a graphical Steam install. It's how nearly every Steam game server is deployed on Linux.

Do I need a Steam account for a dedicated server?

Usually not โ€” most dedicated servers install with +login anonymous. A few games need a Game Server Login Token (GSLT) to appear publicly, but the file download itself is anonymous.

How do I run a Windows-only game server on Linux?

Force the Windows platform in SteamCMD with +@sSteamCmdForcePlatformType windows, then run the resulting .exe under Proton or Wine. Alternatively, use a Windows VPS.

Why is my game server unreachable even though it's running?

Almost always a firewall gap โ€” the game's ports aren't open on the provider-level firewall, or the wrong protocol (TCP vs UDP) is allowed. Open exactly the ports your game documents on both firewalls.

Every command here works out of the box on an Nxeon box โ€” full root, NVMe, and one-click OS images. Start on game server hosting or compare VPS pricing.

#steamcmd#dedicated server#linux#vps#game servers#seobatch

Deploy your first server in under a minute

Creating an account is free and takes no card details. You pay when you deploy โ€” choose a billing term and pay from your wallet or by card at checkout.