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.
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:
- Rust: 258550 โ see how to set up a Rust server
- Valheim: 896660 โ see how to set up a Valheim server
- Palworld: 2394010 โ see how to set up a Palworld server
- ARK: Survival Ascended: 2430930 (Windows-only) โ see how to set up an ASA server
- 7 Days to Die: 294420
- Project Zomboid: 380870
- Satisfactory: 1690800
- Enshrouded: 2278520 (Windows-only)
- Unturned: 1110390
- Don't Starve Together: 343050
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.