Everything you need to run a serious Rust server on Linux — from a fresh Ubuntu 22.04 VPS all the way to a tuned, auto-wiping community server with plugins, RCON and zero downtime. No copy-pasting from outdated Reddit threads. Every command was tested on a real server in April 2026.
01 // Requirements & Hardware Reality Check
Rust is one of the heaviest game servers you can run. Facepunch's own documentation states 12 GB RAM minimum — that is a floor, not a target. A 50-slot community server with 20 plugins regularly sits at 18-24 GB during peak. Underpowered Rust servers feel terrible within 15 minutes of population, and players leave.
Use this table as your starting point. Section 05 has an interactive sizing calculator if you want a tighter answer.
| Use case | Recommended VPS | Why |
|---|---|---|
| Friends-only, <10 players, map 3500, no plugins | KVM 2 (8 GB) | Absolute minimum. Do not go lower. |
| Vanilla community, 10-50 players, map 4000-4500 | KVM 4 (16 GB) | The sweet spot. Matches Facepunch's own recommendation with real headroom. |
| Modded with any plugin stack | KVM 4 (16 GB) | Every plugin eats RAM. 16 GB gives you a realistic plugin budget. |
| Heavy modded, 50+ players, 50+ plugins | KVM 8 (32 GB) | Popular community servers hit 25 GB at peak. Headroom matters. |
What you also need:
- Ubuntu 22.04 LTS or 24.04 LTS — 22.04 is still the most battle-tested for Rust in 2026. 24.04 works perfectly; we note the differences as we go.
- Root SSH access — every VPS provider gives you this. If yours does not, get a new provider.
- A Steam account is not required — Rust dedicated is a public, anonymous download.
- A static public IPv4 — most VPS plans include this automatically.
- Basic Linux literacy — you should be able to use
ssh,nanoand read a log file.
Technically yes, but Linux is dramatically more RAM-efficient for Rust and every serious community server runs on Linux. A 50-slot server that needs 20 GB on Windows often runs comfortably in 14 GB on Ubuntu. If you have no Linux experience and absolutely must use Windows, see our Windows hosting guide.
02 // System Preparation
SSH into your server as root (or a user with sudo), then update the system and install the dependencies Rust needs:
apt update && apt upgrade -y
# Rust server needs 32-bit compatibility libraries
dpkg --add-architecture i386
apt update
apt install -y \
curl wget unzip tar ca-certificates htop \
lib32gcc-s1 lib32stdc++6 libsdl2-2.0-0:i386 \
software-properties-common
Create a dedicated user for the server — never run game servers as root:
adduser --disabled-password --gecos "" rust
usermod -aG sudo rust
# Switch to the rust user for the rest of the guide
su - rust
If a Rust server process gets compromised (it happens — plugin exploits, buffer issues), it is contained to that user's permissions. Running as root means a compromised plugin can read your /etc/shadow, your SSH keys and your billing API tokens.
03 // Install SteamCMD
SteamCMD is Valve's command-line tool for downloading and updating dedicated server files. Ubuntu 22.04 and 24.04 both package it directly. You will be prompted to accept the Steam SSA license — type I AGREE.
# On 22.04/24.04 you need the multiverse repo
sudo add-apt-repository multiverse
sudo apt update
# Accept Steam license when prompted
sudo apt install -y steamcmd
# Verify
steamcmd +quit
You should see SteamCMD update itself and exit cleanly. If you see command not found, log out and back in — the PATH entry is added on login.
04 // Download the Rust Server
Rust's Steam app ID is 258550. Create a directory for it and pull the files:
mkdir -p ~/rust-server
cd ~/rust-server
steamcmd \
+force_install_dir /home/rust/rust-server \
+login anonymous \
+app_update 258550 validate \
+quit
First download is ~8 GB and takes 5-15 minutes depending on your VPS network. You will see Success! App '258550' fully installed. when it finishes.
Save this as ~/update.sh — you will run it after every Rust patch (every Thursday) and before every wipe:
cat > ~/update.sh <<'EOF'
#!/bin/bash
steamcmd \
+force_install_dir /home/rust/rust-server \
+login anonymous \
+app_update 258550 validate \
+quit
EOF
chmod +x ~/update.sh
05 // Interactive Server Sizing Tool
Answer three questions and get a concrete VPS plan, suggested tickrate and save interval. No vague advice — the tool gives you the exact Hostinger SKU to buy with a live link.
06 // Configure the Server
Rust reads config from two places: launch parameters passed to the binary, and server.cfg read once at boot. Create the folder and file:
mkdir -p ~/rust-server/server/my_server/cfg
nano ~/rust-server/server/my_server/cfg/server.cfg
A production-ready starter server.cfg covering the settings that actually matter:
# Identity
server.hostname "My Rust Server — HostingBuff.com"
server.description "Vanilla community. Weekly wipe Thursday 19:00 UTC."
server.url "https://hostingbuff.com"
server.headerimage "https://your-domain.com/header.png"
# Gameplay
server.maxplayers 100
server.pve false
# Performance
server.saveinterval 300
server.tickrate 30
fps.limit 256
# Security / anti-cheat
server.secure true
server.eac true
# RCON
rcon.port 28016
rcon.password "CHANGE-ME-LONG-RANDOM-STRING"
rcon.web true
# Network / queue
server.queryport 28017
net.parallelpackets 1
Now the launch script — save as ~/rust-server/start.sh:
#!/bin/bash
cd /home/rust/rust-server
./update.sh || { echo "Update failed"; exit 1; }
exec ./RustDedicated -batchmode \
-server.identity "my_server" \
-server.port 28015 \
-server.queryport 28017 \
-server.level "Procedural Map" \
-server.seed 1337 \
-server.worldsize 4000 \
-server.maxplayers 100 \
-server.hostname "My Rust Server" \
-server.saveinterval 300 \
-server.tickrate 30 \
-rcon.port 28016 \
-rcon.password "CHANGE-ME" \
-rcon.web true \
-logfile /home/rust/rust-server/server.log
chmod +x ~/rust-server/start.sh
-batchmode— disables the Unity window, required for headless.-server.identity— name of the save folder underserver/. Keep it stable across restarts.-server.seed— map seed. Change on every wipe; keepworldsizestable.-server.worldsize— 4000 is the standard. Going above 4500 massively increases RAM use.-server.tickrate 30— network tick. 30 is smooth; 60 is wasteful.-server.saveinterval 300— seconds between autosaves. Higher = less I/O, more data loss if crash.
07 // Firewall & Network
Rust uses three ports. Miss one and either nobody can join, your server won't appear in the browser, or RCON won't work:
| Port | Protocol | Purpose |
|---|---|---|
| 28015 | UDP | Game traffic. Players connect on this port. |
| 28016 | TCP | RCON (admin console over the network, WebRCON dashboards). |
| 28017 | UDP | Server query. Without this your server never shows in the in-game browser. |
sudo ufw allow 28015/udp
sudo ufw allow 28016/tcp
sudo ufw allow 28017/udp
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
Hostinger's panel has a separate firewall layer in addition to Ubuntu's ufw. Go to VPS → Settings → Firewall and allow the same three ports at the panel level, otherwise traffic is dropped before it hits your VPS.
08 // Run as a systemd Service
Running Rust in a screen session works until your SSH drops and the server dies. systemd handles crashes, reboots, logging and clean restarts. Switch back to root for this step:
exit # leaves the rust user, back to root
sudo nano /etc/systemd/system/rust.service
[Unit]
Description=Rust Dedicated Server
After=network.target
[Service]
Type=simple
User=rust
Group=rust
WorkingDirectory=/home/rust/rust-server
ExecStart=/home/rust/rust-server/start.sh
Restart=always
RestartSec=30
# Give the Rust server up to 5 minutes to shut down gracefully on wipe
TimeoutStopSec=300
# Resource limits — prevents runaway plugins from killing the VPS
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now rust
# Watch it start
sudo journalctl -u rust -f
When you see SteamServer Initialized in the log, your server is live. Open the Rust client, press F1 and run client.connect YOUR_IP:28015.
09 // Carbon vs Oxide — Which Modding Framework?
Rust's modding ecosystem in 2026 splits into two camps: Oxide (uMod), the long-standing framework that nearly every plugin historically targeted, and Carbon, a newer drop-in replacement built for performance. Both are free, both are Harmony-patched into the server DLL, and 99% of Oxide plugins work on Carbon unmodified.
| Oxide (uMod) | Carbon | |
|---|---|---|
| Performance | Solid | Measurably faster, especially with many hooks |
| Plugin compatibility | 100% native | ~99% of Oxide plugins work unmodified |
| Update speed after Rust patches | Hours to days | Usually patched within hours |
| Community size | Huge, mature | Growing fast, active Discord |
| Our pick for 2026 | Pick if every plugin you need is Oxide-specific | Recommended default |
Install Carbon (recommended)
sudo systemctl stop rust
su - rust
cd ~/rust-server
# Download and extract Carbon (production branch)
wget https://github.com/CarbonCommunity/Carbon/releases/latest/download/Carbon.Linux.Release.tar.gz
tar -xzf Carbon.Linux.Release.tar.gz
rm Carbon.Linux.Release.tar.gz
exit
sudo systemctl start rust
Carbon auto-creates ~/rust-server/carbon/. Drop plugin .cs files into carbon/plugins/ and they hot-load.
Install Oxide
sudo systemctl stop rust
su - rust
cd ~/rust-server
wget https://umod.org/games/rust/download -O oxide.zip
unzip -o oxide.zip
rm oxide.zip
exit
sudo systemctl start rust
Oxide creates ~/rust-server/oxide/. Drop plugins into oxide/plugins/.
10 // Essential Plugins for a New Community Server
Plugins are .cs files downloaded from uMod or Codefling. Drop them in carbon/plugins/ or oxide/plugins/. Start with a minimum viable stack and grow from there — every plugin costs RAM and tick time.
| Plugin | Why |
|---|---|
| AdminRadar | See online players, base activity, raid events on a live map. Non-negotiable for admins. |
| PlayerAdministration | In-game GUI for ban, kick, mute, teleport. Saves you from typing RCON commands. |
| BetterChat | Group tags, colors, rank display. First thing players notice. |
| Discord Extension + DiscordCore | Required dependency for every Discord-integration plugin. |
| RustyBot (or similar) | Server chat ↔ Discord, player count, wipe notifications. |
| AntiCheat Reborn | Lightweight second layer on top of EAC. Catches the obvious stuff EAC misses. |
| AutoWipe | Schedules wipes at the exact times you set. Alternative to cron (see section 12). |
Every plugin you add pushes you toward Modded tab classification and closer to lag. Test each one on a dev server for a full population cycle before adding it to production. A server with 15 well-chosen plugins performs better and is more popular than one with 60 copy-pasted from a YouTube "best plugins" list.
11 // RCON — Remote Admin Console
RCON lets you run admin commands without being in-game. Three common ways to use it:
Option A — In-game F1 console
Easiest. Join the server as an admin (add your Steam ID to ~/rust-server/server/my_server/cfg/users.cfg with ownerid 7656...), press F1, run any command.
Option B — WebRCON dashboard
Browser-based, real-time console. Use webrcon.com — enter your server IP, port 28016, and the RCON password from server.cfg. Save it as a PWA on your phone for on-the-go admin.
Option C — rcon.py (scripting)
For automation. Install the Python RCON library and script everything — announcements, scheduled restarts, Discord bridges:
pip install rcon
python3 -c "
from rcon.source import Client
with Client('127.0.0.1', 28016, passwd='CHANGE-ME') as c:
print(c.run('serverinfo'))
"
Commands you will use weekly:
say <text>— broadcast a messagekick "PlayerName" "reason"/ban "PlayerName" "reason"teleport.toplayer "Admin" "Target"server.writecfg— force-save current configserverinfo— live FPS, players, memoryglobal.quit— graceful shutdown (always use this, neverkill)
12 // Automated Wipes (Cron)
A serious community server wipes on a schedule — weekly, bi-weekly or monthly. Automating wipes means you don't have to wake up at 7 AM on Thursday to run commands. See our full wipe strategy guide for which cadence to pick.
The wipe script deletes the correct save files, optionally resets blueprints on force-wipe Thursdays, randomizes the map seed, and restarts:
sudo -u rust nano /home/rust/rust-server/wipe.sh
#!/bin/bash
IDENTITY="my_server"
SERVER_DIR="/home/rust/rust-server/server/$IDENTITY"
CFG_DIR="$SERVER_DIR/cfg"
# $1 = "map" (default) or "full" (map + blueprints, use on force wipe Thursday)
MODE="${1:-map}"
# Announce and stop
rcon() { python3 -c "from rcon.source import Client; c=Client('127.0.0.1',28016,passwd='CHANGE-ME'); c.connect(True); print(c.run('$1'))"; }
rcon 'say <color=red>Wipe in 60s. Server restarting.</color>'
sleep 60
rcon 'global.quit'
sleep 15
systemctl stop rust
# Delete map files
find "$SERVER_DIR" -maxdepth 1 -type f \( -name "*.map" -o -name "*.sav*" \) -delete
if [ "$MODE" = "full" ]; then
# Also delete blueprint data for a BP wipe
rm -f "$SERVER_DIR/player.blueprints.5.db"*
echo "Full wipe (map + BP) complete"
fi
# Random seed between 1 and 2147483647
NEW_SEED=$((RANDOM * 32768 + RANDOM))
sed -i "s/-server.seed [0-9]*/-server.seed $NEW_SEED/" /home/rust/rust-server/start.sh
systemctl start rust
echo "Wipe complete. New seed: $NEW_SEED"
sudo chmod +x /home/rust/rust-server/wipe.sh
Now schedule it. Edit root's crontab with sudo crontab -e:
# Weekly map wipe — every Thursday at 19:10 UTC (10 minutes after Facepunch patch)
10 19 * * 4 /home/rust/rust-server/wipe.sh map >> /var/log/rust-wipe.log 2>&1
# Monthly full wipe — first Thursday of the month at 19:10 UTC (force wipe)
10 19 1-7 * 4 /home/rust/rust-server/wipe.sh full >> /var/log/rust-wipe.log 2>&1
The second line uses a cron trick: day-of-month 1-7 combined with day-of-week 4 matches only the first Thursday of the month — exactly when Facepunch force-wipes.
13 // Performance Tuning
Default settings are safe but leave performance on the table. These tweaks are what separates a silky 60-player community server from a stuttery one.
Swap — mandatory
Rust will spike RAM during wipe and when large bases decay. A swap file stops the kernel from OOM-killing your server at the worst possible moment:
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# Favor RAM, only swap when truly needed
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
CPU governor — performance mode
Most Ubuntu VPSes ship in ondemand governor which saves power at the cost of latency. Game servers want performance:
sudo apt install -y cpufrequtils
echo 'GOVERNOR="performance"' | sudo tee /etc/default/cpufrequtils
sudo systemctl restart cpufrequtils
File descriptor limits
Rust opens thousands of sockets under load. The systemd unit above sets LimitNOFILE=100000 — verify it took effect:
sudo cat /proc/$(pgrep RustDedicated)/limits | grep "open files"
Kernel network tuning
sudo tee -a /etc/sysctl.conf << EOF
net.core.rmem_max = 26214400
net.core.wmem_max = 26214400
net.core.netdev_max_backlog = 5000
net.ipv4.udp_rmem_min = 16384
net.ipv4.udp_wmem_min = 16384
EOF
sudo sysctl -p
In-game performance commands
fps.limit 256— caps server FPS. 256 is plenty; higher wastes CPU.physics.steps 12— physics solver iterations. 10-16 is the safe range.decay.scale 1— default. Increase to decay inactive bases faster and reduce entity count.server.entityBatchSize 2000— how many entities the server processes per tick.
14 // The 10 Problems You Will Actually Hit
| Symptom | Fix |
|---|---|
| Server not visible in browser | Query port 28017/UDP closed. Open in ufw AND the Hostinger panel firewall. |
| 'Server is not responding' when joining | Game port 28015/UDP closed, or map still generating (watch logs for 'Saving complete'). |
| Out-of-memory crash at wipe | Not enough RAM for map size. Upgrade VPS or drop worldsize to 4000. |
| Plugins not loading | Check file is .cs not .cs.txt. Verify Carbon/Oxide installed. Check plugin dependencies. |
| Server lags at 50 players | Drop tickrate to 30, set fps.limit 60 to compare, disable heaviest plugins one-by-one. |
| RCON connection refused | TCP 28016 closed, or rcon.password empty (Rust refuses empty passwords since 2023). |
| 'Authentication failed' for players | Steam auth server down or VPS IP blocked. Check https://steamstat.us. |
| DDoS on wipe day | Hostinger includes basic DDoS protection. Heavy attacks? Consider Path.net or OVH Game. |
| Map wont generate / corrupts | Disk full or i386 libs missing. Check df -h and reinstall the lib32 packages from section 02. |
| Server wont start after Facepunch patch | Run ~/update.sh, then update Carbon/Oxide. Frameworks need a same-day update after patches. |
15 // Where to Host It
Two paths. Pick based on skill level and goals, not price alone.
Hostinger KVM 4 — The Rust Sweet Spot
4 vCPU, 16 GB RAM, 200 GB NVMe. Matches Facepunch's 12 GB+ recommendation with real headroom. Handles 50 players on a 4500 map with a full plugin stack. €12.99/month.
Get Hostinger KVM 4 →Nitrado — One-Click Rust Servers
Zero Linux. Click a button, pick a map size, play in two minutes. You give up some control and pay more per slot, but you never touch a terminal. Ideal if you want to play Rust, not admin it.
Get Nitrado →16 // Next Steps
- Automate wipes the smart way — our full Rust wipe guide with live countdown and day-of-wipe checklists.
- Use a panel — if you want a web UI, install Pterodactyl or AMP.
- Hosting on Windows instead — our Windows guide covers the same workflow on Windows 10/11/Server.
- Port reference — every game server port you will ever need is on our tools page.