Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversHalloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
VGSources
Blog

How to Install SteamCMD on a VPS for Game Servers (Ubuntu/Debian Guide)

A complete Ubuntu/Debian walkthrough for installing SteamCMD on a VPS, downloading a dedicated server with its app ID, configuring ports, creating a systemd service, and troubleshooting updates or connectivity.
Length10 min Posted Quest giverVGSources Team
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install SteamCMD on a Linux VPS by preparing the operating system, creating a separate non-root steam account, adding the distribution’s 32-bit runtime, downloading Valve’s SteamCMD archive, and using the target game’s dedicated-server app ID with app_update. Run the finished server under systemd, then open only the TCP and UDP ports that the game documents.

This guide uses Ubuntu or Debian commands and an illustrative server directory. The executable name, startup arguments, license requirements, ports, RAM, CPU, storage, and player capacity belong to the individual game, not to SteamCMD itself.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What SteamCMD does

SteamCMD is Valve’s command-line distribution tool for dedicated Steam game servers. Steam Support states that “All Steam game servers now use SteamCMD to download and update game server files.” It downloads a server build, validates its files, and retrieves later patches without requiring the graphical Steam client.

SteamCMD is not the game server process. It is the installer and updater. After it finishes, a separate executable in your server directory listens for players. Keeping those roles separate makes patching repeatable and lets you run the game process continuously under a service manager.

Check these requirements before connecting to the VPS

Choose a supported Linux image

Use a current 64-bit Ubuntu or Debian image unless the game’s own documentation specifies another distribution. SteamCMD still needs 32-bit compatibility libraries on many Linux installations. The package name and availability depend on the exact release, so record the distribution version before installing anything.

Confirm the VPS can run the game

SteamCMD itself uses little storage, but a dedicated server may need several gigabytes for its files, updates, logs, workshop content, and backups. CPU, memory, disk I/O, bandwidth, latency, and maximum player count are game-specific. Check the selected title’s dedicated-server requirements and leave free disk space for a second copy or a rollback during updates.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Collect the game’s dedicated-server app ID

Find the app ID in the game’s official dedicated-server documentation or its Steam documentation. Do not assume that the consumer game’s app ID is the server app ID. In the commands below, APPID means the documented server app ID and must be replaced before execution.

Plan credentials and access

  • Have an administrator account with sudo access for operating-system changes.
  • Plan to run SteamCMD and the game as a dedicated account named steam, not as root.
  • Determine whether the game supports anonymous server downloads. Some titles require a paid license and a Steam account; Steam Guard can also request an email code during login.
  • Keep SSH access restricted to administrators and decide where backups and server logs will live.

Prepare Ubuntu or Debian

Log in over SSH as an administrator and update the host. These commands are the standard maintenance step documented for Ubuntu and Debian VPS deployments:

sudo apt-get update -y
sudo apt-get upgrade -y

Install the 32-bit runtime before switching to the service account:

sudo apt-get install lib32gcc1

lib32gcc1 is the package name documented for the Ubuntu/Debian procedure. Package names can change between releases; if APT reports that it is unavailable, use the package search for your exact OS release and install the distribution’s 32-bit GCC runtime rather than forcing an unrelated package. Confirm installation with:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
dpkg -l | grep -E 'lib32gcc|gcc.*i386'

If the VPS image has multi-architecture support disabled and your release requires it, follow that release’s package-manager instructions before retrying the installation. Do not copy a package from a different distribution.

Create a dedicated Steam user

A separate account limits the damage if a game process is compromised. Vultr’s 2025 SteamCMD procedure recommends this arrangement, and it also keeps downloaded files from being owned by root.

sudo adduser steam
sudo su - steam

Answer the account prompts, then work from the new login shell. The remaining commands should run as steam unless they are explicitly prefixed with sudo. The steam account normally should not have administrative privileges.

Download and initialize SteamCMD

Create a private directory in the Steam user’s home directory, download Valve’s Linux archive, extract it, and perform a first initialization:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
mkdir -p ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar xf steamcmd_linux.tar.gz
./steamcmd.sh +quit

The first launch downloads or updates SteamCMD’s own files and exits. Check that the shell returns without an error and that the directory contains steamcmd.sh and the SteamCMD runtime files. If wget is missing, install it as an administrator with your distribution’s package manager, then return to the steam shell.

Download a dedicated game server

Create a destination directory and use SteamCMD’s repeatable command sequence:

mkdir -p ~/servers/example
~/steamcmd/steamcmd.sh 
  +force_install_dir ~/servers/example 
  +login anonymous 
  +app_update APPID validate 
  +quit
  1. +force_install_dir ~/servers/example selects the directory that will contain the game server.
  2. +login anonymous attempts an anonymous download. Use the game’s documented account-login method instead when anonymous access is not permitted.
  3. +app_update APPID validate downloads the app and checks the installed files. Replace APPID with the server app ID.
  4. +quit closes SteamCMD after the operation completes.

For a real deployment, use a descriptive path such as ~/servers/my-game rather than example. Keep the path free of shell metacharacters and make sure the steam account owns it:

ls -la ~/servers/example
du -sh ~/servers/example

A successful run ends with SteamCMD reporting that the app is up to date or has been installed. Validation may take longer than a normal patch because it checks the existing files. If the command stops for credentials, read the game’s server instructions: some downloads require a licensed Steam account, and Steam Guard may send a code to the account’s email address.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Start the server manually first

Do one foreground launch before creating a service. The exact executable and arguments differ by title; inspect the game’s documentation and the files SteamCMD installed. From the server directory, run the documented binary as steam:

cd ~/servers/example
./server_binary --your-game-specific-options

Here, server_binary and the options are illustrative names inside a command template. Replace them with the actual executable and arguments for the selected game. A first launch may create configuration files, generate a world, or ask you to accept an end-user license. Stop it with the game’s documented shutdown command or Ctrl+C only after it has finished initialization.

Check the console for a listening message, then test from a client on the same network or through the game’s server browser. A process that starts successfully but is unreachable usually has a port, provider-firewall, bind-address, or game-configuration problem rather than a SteamCMD problem.

Open the right VPS and Linux firewall ports

Ports are controlled by the game. Steam Support lists TCP 27015 and UDP 27015 as the default dedicated/listen-server port, but those defaults are not a universal rule. The game’s own server guide takes precedence and may specify separate gameplay, query, RCON, and voice ports.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Traffic Protocol and example What to verify
Gameplay/listen TCP 27015 and UDP 27015 are Steam’s commonly listed defaults Use the title’s documented port and protocol if different
Server query/browser Game-specific TCP or UDP port Required for discovery in a server browser
RCON/administration Game-specific port, often optional Open only if you use remote administration; protect the password
Voice or auxiliary services Game-specific UDP or TCP ranges Consult the game’s complete port table

Apply the same intentional rule set in both places: the VPS provider’s network firewall and the Linux host firewall. A rule in only one layer is insufficient. The final list should contain the game’s documented gameplay, query, RCON, and voice ports, with the correct protocol for each. Do not broadly expose every Steam client or download range just because Steam Support lists those ranges for other functions.

A Steam Community hosting example opens both TCP and UDP for its game-specific ports, illustrating why copying only a TCP rule can leave a server invisible or unjoinable. After changing rules, verify from outside the VPS network and inspect the server process’s listening sockets with your distribution’s socket tool.

Run the server with systemd

Once the manual launch works, let systemd start the process at boot, restart it after a crash, and provide a consistent working directory. Create the unit as an administrator:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo nano /etc/systemd/system/example-server.service

Use a unit like this, replacing the executable name and arguments with the selected game’s documented command:

[Unit]
Description=Example dedicated game server
After=network-online.target
Wants=network-online.target

[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/servers/example
ExecStart=/home/steam/servers/example/server_binary --your-game-specific-options
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Save the file, then load and enable it:

sudo systemctl daemon-reload
sudo systemctl enable --now example-server.service
sudo systemctl status example-server.service

systemctl status shows whether the process is running and the most recent failure. Follow its live journal while troubleshooting:

sudo journalctl -u example-server.service -f

Do not put sudo inside ExecStart; systemd already launches the command as the account named by User. If the game needs environment variables, a separate environment file, or a graceful stop command, add those according to the game’s service documentation. Keep the unit’s working directory aligned with the path used in the manual test.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Patch the server safely

SteamCMD uses the same app_update flow for updates. Schedule maintenance, stop the game process when the title requires it, and update the files as the steam user:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo systemctl stop example-server.service
sudo su - steam
~/steamcmd/steamcmd.sh 
  +force_install_dir ~/servers/example 
  +login anonymous 
  +app_update APPID validate 
  +quit
exit
sudo systemctl start example-server.service

Replace APPID with the same app ID used for the initial installation. The validate option checks for missing or damaged files while applying the patch. If the game requires a licensed account, use its documented login method instead of anonymous login. Back up configuration, world, save, and database files before a major update; SteamCMD’s validation does not replace those backups.

After restarting, inspect the journal and connect with a client running the same game version. If a patch changes configuration syntax or startup arguments, apply the game developer’s migration instructions before reopening the public port.

Troubleshoot the common failure points

Symptom Likely cause Action
steamcmd.sh exits immediately with a library error Required 32-bit runtime is missing or the package does not match the OS release Install the 32-bit GCC runtime offered by that release, then rerun ./steamcmd.sh +quit
SteamCMD cannot download the app anonymously The title requires a licensed account or has a different server distribution method Read the game’s dedicated-server instructions and use the required account; be ready for a Steam Guard email code
Files are installed in an unexpected directory +force_install_dir was omitted, misspelled, or run from a different account Run the full command with an absolute or clearly expanded path and check ownership with ls -la
Service fails but the manual command works Wrong WorkingDirectory, executable path, permissions, or arguments in the unit Compare ExecStart with the tested command, run systemctl daemon-reload, and read journalctl -u example-server.service
Players cannot see or join the server Incorrect protocol, closed provider firewall, closed host firewall, wrong bind address, or an unlisted query port Compare every port with the game’s documentation and check both firewall layers and listening sockets
Server stops after an SSH session closes It was launched interactively rather than under systemd Stop the foreground process and use the systemd unit with enable --now
Updates appear successful but the game still reports an old build Wrong app ID or installation directory, or the running process was not restarted Confirm the path and app ID, stop the service, rerun app_update APPID validate, and start it again

Security and maintenance checklist

  • Run SteamCMD and the game as steam, never as root.
  • Keep the VPS operating system patched and remove unused packages and services.
  • Use SSH keys, restrict administrative SSH access, and avoid exposing management ports to the whole internet.
  • Open only the game’s required TCP and UDP ports; keep RCON closed unless needed and protect its credential.
  • Back up saves, worlds, configuration, and databases separately from the installed binaries.
  • Monitor disk usage, memory pressure, CPU load, and systemd journal growth.
  • Test a backup restore and a patch procedure before a scheduled event or community launch.
  • Document the app ID, install path, startup arguments, port map, account requirements, and recovery contact.

How to compare VPS options for a game server

Price alone does not determine whether a VPS is suitable. Compare these properties for the specific game and region:

Decision area Questions to answer
Operating system and libraries Is the preferred Ubuntu or Debian release supported, and can it provide the required 32-bit runtime?
Compute and storage Does the plan meet the game’s CPU, memory, disk, and I/O requirements with room for updates and backups?
Network quality Is the location close to players, and are the required UDP/TCP ports permitted by the provider?
Persistence and recovery Are snapshots, block storage, automated backups, and console recovery available?
Operations Can you obtain useful network and system metrics, abuse notifications, and support for firewall or boot issues?
Account and patch workflow Can the server reach Steam’s download service, and can you schedule maintenance without violating provider limits?

There is no authoritative universal RAM, bandwidth, or player-capacity number for “a Steam server.” Those values vary by title, map, mods, simulation load, and provider. Measure the selected game under its expected player load rather than applying a generic VPS size.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Installation sequence at a glance

  1. Choose a supported 64-bit Ubuntu or Debian VPS and record its release.
  2. Update packages and install the release’s 32-bit runtime; the documented Ubuntu/Debian command is sudo apt-get install lib32gcc1.
  3. Create the non-root steam account and switch to it.
  4. Download and initialize SteamCMD in ~/steamcmd.
  5. Create a server directory and run force_install_dir, login, app_update APPID validate, and quit.
  6. Launch the game manually once and verify its files, configuration, ports, and external connectivity.
  7. Create a systemd unit with the correct user, working directory, executable, and arguments.
  8. Open the game’s documented ports in both firewall layers.
  9. Stop the service for patches, rerun the validated SteamCMD update command, and restart it.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More quests from Patch Notes

  1. How to Set Up a RedM (RDR2) Server in 2026: License Key, txAdmin and server.cfg, Step by StepBlog11min
  2. Best RedM (RDR2) Server Hosting in 2026: Comparing Four Hosts on Slots, Memory and PriceBlog10min
  3. How to Host a Mindustry Server in 2026: server-release.jar, Port 6567 and the Commands That MatterBlog7min
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.