Skip to main content
Back to Category

SteamCMD Installation: Steam Game Server Management Tool

SteamCMD installation on Linux, game server download and update, automatic update script, anonymous login and common issues.

Read time: 12 min Game Server Setup
steamcmdsteamgame serverlinuxinstallationupdate

Table of Contents

Introduction

SteamCMD (Steam Console Client) is a command-line Steam client developed by Valve. It is used to download, update, and manage game server files. Dedicated server setup for CS2, Garry's Mod, Rust, ARK, Palworld, and many more games is done through SteamCMD. This guide covers SteamCMD installation on Linux, usage, and automatic update configuration.

System Requirements

ResourceMinimum
OSUbuntu 20.04+ / Debian 11+
RAM512 MB
Disk500 MB (SteamCMD) + game server space
Architecture64-bit (32-bit libraries required)

Installation Methods

Method 1: APT Installation (Ubuntu/Debian)

hljs bash
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd

With APT installation, SteamCMD is installed to /usr/games/steamcmd and you need to accept the license agreement.

Manual installation provides more control:

hljs bash
sudo apt update
sudo apt install -y lib32gcc-s1 lib32stdc++6 wget tar

sudo adduser steam --disabled-login --gecos ""
sudo su - steam

mkdir -p ~/steamcmd && cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
rm steamcmd_linux.tar.gz

Verify installation:

hljs bash
./steamcmd.sh +quit

Manual installation allows you to create separate users for each game server and manage permissions better.

Basic Usage

SteamCMD Command Structure

hljs bash
./steamcmd.sh +login <user> +force_install_dir <dir> +app_update <app_id> +quit

Anonymous Login

Most game servers can be downloaded with anonymous login:

hljs bash
./steamcmd.sh +login anonymous +quit

Account Login

Some game servers require a Steam account:

hljs bash
./steamcmd.sh +login username +quit

If Steam Guard is enabled, you'll need to enter a verification code. The token is cached after the first login.

GameApp IDAnonymous Login
Counter-Strike 2730Yes
Garry's Mod4020Yes
Rust258550Yes
ARK: Survival Evolved376030Yes
Palworld2394010Yes
Unturned1110390Yes
Terraria (tShock)105600Yes
Team Fortress 2232250Yes
Valheim896660Yes
Project Zomboid380870Yes
7 Days to Die294420Yes
Satisfactory1690800Yes
V Rising1829350Yes
Enshrouded2278520Yes

Game Server Download Examples

CS2 Server

hljs bash
./steamcmd.sh \
  +force_install_dir ~/cs2-server \
  +login anonymous \
  +app_update 730 validate \
  +quit

Rust Server

hljs bash
./steamcmd.sh \
  +force_install_dir ~/rust-server \
  +login anonymous \
  +app_update 258550 validate \
  +quit

Palworld Server

hljs bash
./steamcmd.sh \
  +force_install_dir ~/palworld-server \
  +login anonymous \
  +app_update 2394010 validate \
  +quit

Automatic Update Script

To automatically update multiple game servers:

hljs bash
nano ~/steamcmd/update_all.sh
hljs bash
#!/bin/bash
STEAMCMD="/home/steam/steamcmd/steamcmd.sh"
LOG_FILE="/home/steam/update.log"

echo "========================================" >> $LOG_FILE
echo "$(date): Update started" >> $LOG_FILE

$STEAMCMD +force_install_dir /home/steam/cs2-server \
  +login anonymous +app_update 730 +quit >> $LOG_FILE 2>&1

$STEAMCMD +force_install_dir /home/steam/rust-server \
  +login anonymous +app_update 258550 +quit >> $LOG_FILE 2>&1

echo "$(date): Update completed" >> $LOG_FILE
hljs bash
chmod +x ~/steamcmd/update_all.sh
crontab -e
0 4 * * * /home/steam/steamcmd/update_all.sh

SteamCMD Script Files

You can write commands to a script file:

hljs bash
nano ~/steamcmd/cs2_update.txt
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login anonymous
force_install_dir /home/steam/cs2-server
app_update 730 validate
quit

Run:

hljs bash
./steamcmd.sh +runscript ~/steamcmd/cs2_update.txt

Beta Branch Installation

To install a beta version of a game:

hljs bash
./steamcmd.sh \
  +force_install_dir ~/game-server \
  +login anonymous \
  +app_update APP_ID -beta BETA_NAME \
  +quit

Workshop Content Download

To download Steam Workshop content:

hljs bash
./steamcmd.sh \
  +login anonymous \
  +workshop_download_item APP_ID WORKSHOP_ID \
  +quit

Downloaded files are located at:

~/steamcmd/steamapps/workshop/content/APP_ID/WORKSHOP_ID/

Common Issues and Solutions

32-bit library error

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

Insufficient disk space

hljs bash
df -h
rm -rf ~/steamcmd/steamapps/downloading/*
rm -rf ~/steamcmd/steamapps/temp/*

Download errors

hljs bash
./steamcmd.sh +force_install_dir ~/game-server \
  +login anonymous \
  +app_update APP_ID validate \
  +quit

Connection timeout

hljs bash
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
./steamcmd.sh +login anonymous +quit

Security Recommendations

  1. Separate users: Create a separate Linux user for each game server
  2. Don't use root: Never run SteamCMD as root
  3. Firewall: Only open necessary ports
  4. Updates: Update regularly
  5. Backups: Regularly backup server files
hljs bash
sudo adduser cs2 --disabled-login --gecos ""
sudo adduser rust --disabled-login --gecos ""
sudo adduser ark --disabled-login --gecos ""

Conclusion

SteamCMD is the essential tool for game server management on Linux. With anonymous login, you can easily download most game servers, and with automatic update scripts, keep your servers up to date. REXE VDS powerful infrastructure lets you run SteamCMD-based game servers smoothly.