Rust Dedicated Server Setup (Linux + SteamCMD)
This guide walks through standing up a Rust dedicated server on Linux with SteamCMD. Rust's dedicated server uses Steam app 258550 (separate from the Rust client app 252490) and is launched via the RustDedicated binary in batch/headless mode.
Steam Login: The Rust dedicated server install supports anonymous SteamCMD login — no Steam account required for the install itself. Players connecting still need to own Rust on their own Steam account.
Step 1: Install SteamCMD
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt install -y steamcmd
Step 2: Pull the Rust Server Build
steamcmd +force_install_dir /home/steam/rust_server +login anonymous +app_update 258550 validate +quit
Rust's dedicated-server build is updated frequently — typically alongside the monthly client patch. Re-run the SteamCMD update on every patch day before restarting the server.
Step 3: Create the steamclient.so Symlink
Like other Steam-based dedicated servers, Rust needs a steamclient.so symlink to start cleanly:
mkdir -p ~/.steam/sdk64
ln -s ~/.local/share/Steam/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
If your steamcmd is at a different path, adjust the source side of the symlink. The destination is what RustDedicated looks for.
Step 4: Launch RustDedicated
The launch command is a Linux shell script. Common production form:
#!/bin/bash
cd /home/steam/rust_server
./RustDedicated -batchmode -nographics \
+server.port 28015 \
+server.queryport 28016 \
+rcon.port 28017 \
+rcon.password "CHANGE_THIS_PASSWORD" \
+rcon.web 1 \
+server.level "Procedural Map" \
+server.seed 12345 \
+server.worldsize 3500 \
+server.maxplayers 50 \
+server.hostname "My Rust Server" \
+server.identity "myserver" \
-logfile "output.log"
Flag breakdown
| Flag | Purpose |
|---|---|
-batchmode -nographics | Headless server mode — required on a Linux box without a display |
+server.port 28015 | UDP game port (default 28015) |
+server.queryport 28016 | UDP query / Steam server browser |
+rcon.port 28017 | TCP RCON port |
+rcon.password | Mandatory — without it RCON is wide open or not bound |
+rcon.web 1 | Modern web-RCON (legacy console RCON is deprecated) |
+server.level "Procedural Map" | Map type. "Procedural Map" generates from seed; alternatives include "Barren", "HapisIsland", "SavasIsland", or custom map URLs |
+server.seed | Numeric seed for procedural generation. Combined with worldsize, this fully determines the map |
+server.worldsize | Map size in meters. Common values: 3000-4500. Larger maps significantly increase memory and disk usage |
+server.maxplayers | Player slot count |
+server.hostname | Display name in browser |
+server.identity | Save folder name under server/ directory — keeps multiple servers on one host separate |
-logfile | Output log path. Useful for diagnostics |
Step 5: Open Required Ports
| Port | Protocol | Purpose |
|---|---|---|
| 28015 | UDP | Game traffic |
| 28016 | UDP | Query / Steam browser |
| 28017 | TCP | RCON |
If hosting multiple Rust servers on one host, increment by 5 between instances (e.g., second server on 28020/28021/28022) so the three-port block doesn't overlap.
Step 6: First Boot Verification
- Server takes 5-15 minutes to generate the procedural map on first boot. Subsequent boots load the saved map and start in 1-3 minutes.
- Watch
output.logforServer startup completeor equivalent ready line. - The server should appear in the in-game Modded / Community browser if ports are forwarded and queryport is reachable.
Step 7: Wipe Schedule (Important for Rust)
Rust's culture revolves around regular wipes (resetting the map). Most public servers wipe the map weekly or biweekly — communicate your wipe schedule clearly in the server description and the Discord. Wiping is just deleting server/myserver/save/ and restarting; players expect this.
Common Boot Failures
| Symptom | Likely cause | Fix |
|---|---|---|
steamclient.so: cannot open shared object file | Symlink missing | Re-do Step 3 |
| Server boots but doesn't appear in browser | Query port not forwarded / firewall blocking | Open 28016/UDP; check provider firewall |
| "Map generation hung" | Bad seed | Pick a different seed, restart |
| Out-of-memory during map gen | worldsize too large for RAM | Lower +server.worldsize or upgrade RAM |
| RCON not connecting | +rcon.password empty or port not forwarded | Set password; forward 28017/TCP |
Mods and Plugins
Vanilla Rust supports server-side configuration but no mod loading. For modded Rust, use a community modding framework (Oxide / uMod is the most common). Modded Rust is a separate ecosystem with its own install steps; vanilla servers don't load mods at all.
Hardware Notes
Rust is CPU-bound on the server side. Single-thread performance and disk I/O matter most. NVMe storage helps significantly because of the frequent autosave writes during high player activity. Memory usage scales with server.worldsize — a 4500 map with 100+ players uses substantially more RAM than a 3000 map with 30 players. Watch your actual usage and upsize if you spike.
Related Reading
- Official: Rust Wiki — Creating a server (Facepunch)
- Official: Valve Developer Community — Rust Dedicated Server
Quick Start with Supercraft
Supercraft hosts Rust dedicated servers with steamclient.so symlink, RustDedicated launch script, automatic Rust patch updates, and panel-driven access to all key cvars (worldsize, seed, maxplayers, RCON, wipe schedule). NVMe storage is standard. Wipe one click.