Rust is one of the most demanding games to host: a large persistent map, thousands of objects built by players, mandatory updates every month. This guide installs a dedicated Rust server on a Linux VPS, with the Oxide plugin framework (also called uMod), automatic start-up and an update procedure.
1. Which VPS for Rust
Memory is the critical resource. It mostly depends on the map size and the amount of building, which only grows until the next wipe.
| Server | Recommended resources |
|---|---|
| Small map (2,000 to 3,000), group of friends | 4 vCPU, 8 GB RAM |
| Standard map (3,500 to 4,000), 50 to 100 players | 4 to 6 vCPU, 16 GB RAM |
| Large community, many plugins | 6 vCPU or more, 32 GB RAM |
Disk matters too: the server weighs several tens of gigabytes and loads a lot of data at start-up. NVMe storage noticeably shortens launch time. See our NVMe VPS.
2. Install SteamCMD
SteamCMD is Valve's command-line tool that downloads game servers. On Ubuntu 24.04, it is in the multiverse repository and needs the 32-bit architecture:
add-apt-repository -y multiverse
dpkg --add-architecture i386
apt update
apt install -y steamcmd unzip
Accept the Steam licence when it appears. On Debian 12, first enable the non-free section of the repositories. Then create the user that will run the server:
adduser --disabled-password --gecos "" rust
3. Install the server
su - rust
steamcmd +force_install_dir /home/rust/server +login anonymous +app_update 258550 validate +quit
258550 is the Steam ID of the Rust dedicated server. The download is several gigabytes.
4. Launch script
Create /home/rust/server/start.sh:
#!/bin/bash
cd /home/rust/server
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)/RustDedicated_Data/Plugins/x86_64
exec ./RustDedicated -batchmode -nographics \
+server.ip 0.0.0.0 +server.port 28015 +server.queryport 28017 \
+rcon.ip 0.0.0.0 +rcon.port 28016 +rcon.password "A_LONG_PASSWORD" +rcon.web 1 \
+server.identity "main" +server.level "Procedural Map" \
+server.seed 12345 +server.worldsize 3500 +server.maxplayers 100 \
+server.hostname "My Rust server" +server.description "Server hosted in France" \
+server.saveinterval 600
chmod +x /home/rust/server/start.sh
The seed and worldsize determine the map: change the seed to get a different map at the next wipe. The map and world saves are stored in server/main/, after the name given to server.identity.
5. systemd service
cat > /etc/systemd/system/rust.service <<'EOF'
[Unit]
Description=Rust server
After=network-online.target
Wants=network-online.target
[Service]
User=rust
WorkingDirectory=/home/rust/server
ExecStart=/home/rust/server/start.sh
Restart=on-failure
RestartSec=30
TimeoutStopSec=120
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now rust
journalctl -u rust -f
The first start generates the map and can take several minutes. The server is ready when the log says Server startup complete.
6. Ports
| Port | Protocol | Use | Open it? |
|---|---|---|---|
| 28015 | UDP | Player connections | Yes |
| 28017 | UDP | Server list | Yes |
| 28016 | TCP | Remote console (RCON) | Only for your IP |
| 28082 | TCP | Rust+ app | If you use it |
ufw allow 28015/udp comment 'Rust game'
ufw allow 28017/udp comment 'Rust list'
ufw allow from YOUR_IP to any port 28016 proto tcp comment 'Rust RCON'
Connect to the console with a web or desktop RCON tool, such as RustAdmin. See configuring UFW.
7. Install Oxide (uMod)
Oxide adds plugin support: kits, teleportation, clan management, protections. Download the Linux build of Oxide for Rust from umod.org, then unzip it into the server folder with the server stopped:
systemctl stop rust
cd /home/rust/server
sudo -u rust wget -O oxide.zip "LINK_TO_THE_LINUX_BUILD_ON_UMOD"
sudo -u rust unzip -o oxide.zip && rm oxide.zip
systemctl start rust
On start-up, Oxide creates the oxide/ folder. Drop plugins, which are .cs files, into oxide/plugins/: they are compiled and loaded automatically, without a restart. Their configuration appears in oxide/config/.
8. Updates and wipes
Facepunch releases a mandatory update on the first Thursday of every month. On that day, clients can no longer join a server that is not up to date, and the map must be reset: this is the "forced wipe". Procedure:
systemctl stop rust
sudo -u rust /usr/games/steamcmd +force_install_dir /home/rust/server +login anonymous +app_update 258550 validate +quit
# reinstall Oxide (step 7)
# map wipe: delete the identity's .map and .sav files
sudo -u rust rm -f /home/rust/server/server/main/*.map /home/rust/server/server/main/*.sav*
systemctl start rust
Also deleting the player.blueprints.*.db files resets the blueprints players have learned, a "blueprint wipe", which many servers only do every other time. Back up the oxide/data/ folder if your plugins store data there that you want to keep, then send everything off the server: see backups with Borg.
The date of the next forced wipe, the countdown and calendar export are on our Rust wipe calendar (in French).
Frequently asked questions
How much RAM for a Rust server?
At least 8 GB for a small map and a few players. A standard 3,500 to 4,000 map with 50 to 100 players needs 16 GB, and usage grows day by day with buildings, until the next wipe.
When should a Rust server be updated?
At the very least on the first Thursday of every month, the day of Facepunch's mandatory update and the forced wipe. Smaller fixes sometimes come out in between: players cannot join a server whose version does not match their client.
Oxide or Carbon?
Oxide, also called uMod, is the original and most widespread framework, with the largest plugin catalogue. Carbon is a more recent alternative, compatible with most Oxide plugins and focused on performance. This guide uses Oxide, the safest choice to start with.
My server does not appear in the list. Why?
Check that the query port, 28017 over UDP in this guide, is open in the firewall, and wait a few minutes after the server has fully started. Players can also connect directly with the client.connect command followed by the IP address and port 28015.










