How to Set Up a Rust Dedicated Server in 2026
Rust dedicated servers let you create and control your own survival experience. This guide walks through every step from installing SteamCMD to optimizing performance for hundreds of players.
Why Host Your Own Rust Server?
- >Full control over wipe schedules, gather rates, and server rules
- >Plugin support via Oxide/uMod for unlimited customization
- >Custom maps with unique monuments and terrain
- >No queue times for your community
- >Admin tools to manage players and combat cheaters
What You'll Need
System Requirements
| Component | Minimum | Recommended |
|---|---|---|
| CPU | 4 cores, 3.0 GHz | 6+ cores, 3.5 GHz+ |
| RAM | 8 GB | 16-32 GB |
| Storage | 30 GB SSD | 50-100 GB NVMe SSD |
| Bandwidth | 10 Mbps upload | 50+ Mbps upload |
| OS | Windows 10/11 or Linux | Ubuntu 22.04 LTS / Windows Server |
Player Scaling Guide
| Players | CPU | RAM | Bandwidth | Map Size |
|---|---|---|---|---|
| 10-50 | 4 cores | 8 GB | 10 Mbps | 3000-3500 |
| 50-150 | 6 cores | 16 GB | 25 Mbps | 3500-4000 |
| 150-300 | 8 cores | 32 GB | 50 Mbps | 4000-4500 |
| 300+ | 8+ cores | 64 GB | 100+ Mbps | 4500+ |
---
Step 1: Install SteamCMD
Windows
C:\steamcmdsteamcmd.exe -- it updates itself on first launchLinux (Ubuntu/Debian)
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install lib32gcc-s1 lib32stdc++6 steamcmd -y
Or install manually under a dedicated user:
sudo useradd -m -s /bin/bash rustserver && sudo su - rustserver
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
./steamcmd.sh +quit
---
Step 2: Download Rust Dedicated Server
The Rust dedicated server is free to download via SteamCMD. Its Steam App ID is 258550.
Windows Download
Create update_rust.txt in your SteamCMD folder:
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
force_install_dir C:\rust_server
login anonymous
app_update 258550 validate
quit
Run the script:
C:\steamcmd\steamcmd.exe +runscript C:\steamcmd\update_rust.txt
Linux Download
Create update_rust.txt:
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
force_install_dir /home/rustserver/rust_server
login anonymous
app_update 258550 validate
quit
Run the script:
~/steamcmd/steamcmd.sh +runscript ~/steamcmd/update_rust.txt
Download size: Approximately 5-8 GB. The first download may take 15-30 minutes depending on your connection speed.
---
Step 3: Server Configuration
Server Identity
Rust uses a server.identity concept -- each identity is an isolated folder containing configuration, save data, and logs at server/. This lets you run multiple server instances from the same installation.
Creating server.cfg
Create the configuration file at server/. If the folder does not exist yet, create it manually or start the server once to generate it.
// Server Display Information
server.hostname "My Rust Server | Vanilla | Weekly Wipes"
server.description "Welcome to our Rust server! Rules: No cheating, be respectful."
server.url "https://your-website.com"
server.headerimage "https://your-website.com/banner.png"
// Server Settings
server.maxplayers 100
server.worldsize 4000
server.seed 12345
server.saveinterval 300
server.tickrate 30
server.identity "my_server_identity"
// Gameplay Settings
server.pve false
server.radiation true
server.stability true
server.itemdespawn 300
// Decay Settings
decay.scale 1.0
decay.upkeep true
// Anti-Cheat
server.secure true
server.eac 1
// Network Settings
server.ip 0.0.0.0
server.port 28015
// RCON Settings
rcon.ip 0.0.0.0
rcon.port 28016
rcon.password "your_strong_rcon_password"
rcon.web true
Key Configuration Options
| Setting | Default | Description |
|---|---|---|
server.hostname | Rust Server | Server name shown in browser |
server.maxplayers | 50 | Maximum concurrent players |
server.worldsize | 4000 | Map size in meters (1000-6000) |
server.seed | Random | Map seed for procedural generation |
server.saveinterval | 300 | Auto-save interval in seconds |
server.tickrate | 30 | Server tick rate (10-30) |
decay.scale | 1.0 | Decay multiplier (0 = disabled) |
server.pve | false | Enable PvE mode (no player damage) |
Startup Parameters
Rust uses command-line arguments alongside server.cfg:
| Parameter | Description |
|---|---|
-batchmode | Run without GUI (required for headless) |
-nographics | Disable graphics rendering |
+server.port 28015 | Game port |
+server.identity "name" | Server identity folder name |
+server.seed 12345 | Map seed |
+server.worldsize 4000 | Map size |
+server.maxplayers 100 | Maximum players |
+server.hostname "Name" | Server name |
+rcon.port 28016 | RCON port |
+rcon.password "pass" | RCON password |
+rcon.web true | Enable WebRCON |
+ for ConVars and - for engine arguments. Command-line values override server.cfg settings.---
Step 4: Starting the Server
Windows Start Script
Create start_rust.bat in your server directory:
@echo off
:start
echo Starting Rust Dedicated Server...
RustDedicated.exe -batchmode -nographics ^
+server.port 28015 ^
+server.identity "my_server" ^
+server.hostname "My Rust Server" ^
+server.maxplayers 100 ^
+server.worldsize 4000 ^
+server.seed 12345 ^
+server.saveinterval 300 ^
+rcon.port 28016 ^
+rcon.password "your_rcon_password" ^
+rcon.web true ^
-logfile "output.log"
echo Server crashed or stopped. Restarting in 10 seconds...
timeout /t 10
goto start
Linux Start Script
Create start_rust.sh in your server directory:
#!/bin/bash
SERVER_DIR="/home/rustserver/rust_server"
IDENTITY="my_server"
cd "$SERVER_DIR"
while true; do
echo "Starting Rust Dedicated Server..."
./RustDedicated -batchmode -nographics \
+server.port 28015 \
+server.identity "$IDENTITY" \
+server.hostname "My Rust Server" \
+server.maxplayers 100 \
+server.worldsize 4000 \
+server.seed 12345 \
+server.saveinterval 300 \
+rcon.port 28016 \
+rcon.password "your_rcon_password" \
+rcon.web true \
-logfile "output.log"
echo "Server stopped. Restarting in 10 seconds..."
sleep 10
done
Make the script executable:
chmod +x start_rust.sh
First Launch
On first launch, Rust generates the procedural map (5-15 minutes depending on map size), creates the server identity folder, and loads all entities. Watch for Server startup complete in the console.
---
Step 5: RCON Setup
RCON (Remote Console) lets you administer your server remotely. With rcon.web true, Rust uses WebSocket-based RCON. Connect using your server IP, RCON port (28016), and password with any of these tools:
---
Step 6: Port Forwarding
Required Ports
| Port | Protocol | Purpose |
|---|---|---|
| 28015 | UDP | Game traffic (player connections) |
| 28016 | TCP | RCON (remote administration) |
| 28082 | TCP | Rust+ companion app |
Setup
ipconfig on Windows, ip addr show on Linux)192.168.1.1 or 192.168.0.1Players connect via the server browser, or by pressing F1 and typing client.connect YOUR_IP:28015.
---
Step 7: Map Configuration
Procedural Maps
Rust generates maps using a seed and world size. The same combination always produces the same map.
Map Size Guide
| World Size | Best For |
|---|---|
| 2000 | Small groups (10-25 players) |
| 3000 | Medium pop (25-75 players) |
| 4000 | Full pop (75-200 players) |
| 4500 | High pop (200-300 players) |
| 6000 | Very high pop (300+ players) |
Custom Maps
Custom maps are created with RustEdit and loaded via startup parameters:
+server.levelurl "https://your-host.com/custommap.map"
Custom maps do not use server.seed or server.worldsize -- the map file defines everything.
---
Wipe Schedules and Forced Wipes
Facepunch releases a mandatory update on the first Thursday of every month, requiring a map wipe on all servers. Blueprint wipes (resetting learned crafting recipes) are optional -- most servers BP wipe monthly or bi-monthly.
Performing a Wipe
server//save/ # Map wipe only (keeps blueprints)
rm -f server/my_server/save/*.sav
rm -f server/my_server/save/*.sav.*.map
# Full wipe (map + blueprints)
rm -f server/my_server/save/*.sav
rm -f server/my_server/save/*.sav.*.map
rm -f server/my_server/save/*.db
server.seed for a new map---
Server Admin Commands
Use these commands via RCON or the in-game F1 console.
Player Management
| Command | Description |
|---|---|
ownerid | Grant owner-level admin |
moderatorid | Grant moderator admin |
ban | Ban a player |
unban | Unban a player |
kick | Kick a player |
status | Show server status and player list |
Server Control
| Command | Description |
|---|---|
server.save | Force an immediate world save |
server.writecfg | Save current config to server.cfg |
server.stop | Gracefully shut down the server |
quit | Stop the server immediately |
Gameplay Commands
| Command | Description |
|---|---|
env.time 12 | Set time to noon |
weather.fog 0 | Clear fog |
inventory.give | Give item to yourself |
teleport | Teleport to a player |
teleportpos | Teleport to coordinates |
Performance Optimization
Garbage Collection
Rust runs on Unity and benefits from tuned GC settings to reduce lag spikes:
gc.buffer 2048
gc.incremental_enabled true
gc.incremental_milliseconds 5
Frame Rate and Tick Rate
fps.limit 30
server.tickrate 30
| Tick Rate | CPU Impact | Use Case |
|---|---|---|
| 10 | Very Low | Testing only |
| 15 | Low | Low-pop PvE servers |
| 30 | Standard | Most servers (recommended) |
Linux-Specific Optimizations
# Increase file descriptor limits
ulimit -n 65536
# Set process priority
nice -n -5 ./RustDedicated -batchmode ...
# Pin to specific CPU cores
taskset -c 0,1,2,3 ./RustDedicated -batchmode ...
---
Auto-Update with SteamCMD
Linux Auto-Update Script
#!/bin/bash
SERVER_DIR="/home/rustserver/rust_server"
STEAMCMD_DIR="/home/rustserver/steamcmd"
echo "Stopping Rust server..."
systemctl stop rust
echo "Updating Rust server..."
$STEAMCMD_DIR/steamcmd.sh +login anonymous +force_install_dir $SERVER_DIR +app_update 258550 validate +quit
echo "Starting Rust server..."
systemctl start rust
Cron Job for Automatic Updates
# Add to crontab - update check every day at 4 AM
0 4 * * * /home/rustserver/update_rust.sh >> /home/rustserver/update.log 2>&1
---
Firewall Configuration
Windows Firewall
netsh advfirewall firewall add rule name="Rust Server Game" dir=in action=allow protocol=UDP localport=28015
netsh advfirewall firewall add rule name="Rust Server RCON" dir=in action=allow protocol=TCP localport=28016
netsh advfirewall firewall add rule name="Rust+ Companion" dir=in action=allow protocol=TCP localport=28082
Linux UFW
sudo ufw allow 28015/udp
sudo ufw allow 28016/tcp
sudo ufw allow 28082/tcp
---
Systemd Service (Linux)
Create /etc/systemd/system/rust.service:
[Unit]
Description=Rust Dedicated Server
After=network.target
[Service]
Type=simple
User=rustserver
Group=rustserver
WorkingDirectory=/home/rustserver/rust_server
ExecStart=/home/rustserver/rust_server/start_rust.sh
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure
RestartSec=30
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
Enable and manage:
sudo systemctl daemon-reload
sudo systemctl enable rust
sudo systemctl start rust
sudo systemctl status rust
sudo journalctl -u rust -f
---
Troubleshooting
EAC (Easy Anti-Cheat) Errors
Solutions:
server.secure true and server.eac 1 are setPlayers Cannot Connect
Solutions:
Server startup complete)client.connect :28015 from the F1 consolePoor Server Performance
Solutions:
perf RCON commandserver.maxplayers or server.worldsizegc.buffer 2048Server Crashes on Startup
Solutions:
steamcmd +login anonymous +force_install_dir /path/to/rust_server +app_update 258550 validate +quit
sudo apt install lib32gcc-s1 lib32stdc++6 libsdl2-2.0-0---
Quick Reference
Default Ports
- >Game: 28015 UDP
- >RCON: 28016 TCP
- >Rust+: 28082 TCP
File Locations
- >Server config:
server//cfg/server.cfg - >World saves:
server//save/ - >Server logs:
server//logs/ - >Oxide plugins:
oxide/plugins/(if Oxide installed) - >Oxide config:
oxide/config/(if Oxide installed)
Useful Links
---Conclusion
Your Rust dedicated server is now ready to host players. Remember to keep the server updated (especially on forced wipe days -- first Thursday of each month), monitor performance with RCON tools, and back up your server identity folder regularly.
Next steps:
- >Install Oxide/uMod for plugin support
- >Configure BattleMetrics for advanced server monitoring
- >Set up a Discord bot for server status and chat relay
- >Create custom admin commands for your moderation team