Rust is a survival game. A dedicated server on a LochStudios KVM VPS keeps the same map online so you and friends can join whenever you like, without one player hosting from their PC.
This is not a cPanel or shared-hosting job. You need a Linux VPS (Ubuntu 22.04 or 24.04 LTS is the usual pick) and SSH. Rust wants a lot of RAM. Need a machine first? Browse VPS. Unsure which size? Open a support ticket and tell us how many people will play.
Credentials, the IPv4, and an out-of-band console sit on that server in the portal. Sign in at the portal, open the VPS, and copy the login from there. Do not guess a hostname.
Before you start
- Sign in at the portal, open the VPS service, and keep that page open.
- Connect with a sudo user, or
rooton a fresh box.
- Connect to your VPS via SSH from macOS or Linux
- Connect to your VPS via SSH from Windows
- Patch the box and use a daily sudo user: First steps on a new VPS.
- Install SteamCMD under a dedicated
steamuser: Install SteamCMD on Linux. - Leave at least 30 GB free. Facepunch asks for 15 GB. The install, an update, and a wipe backup need more.
- Plan on UDP 28015 (game), UDP 28017 (server browser query), and TCP 28016 only if you will use remote RCON.
If SSH from your computer will not connect, open the console on the same VPS service. That session does not need port 22 from your network.
We document Ubuntu 24.04 LTS. Debian is close. For AlmaLinux or Rocky Linux, open a support ticket and we will match the packages.
RAM
Facepunch's own guide asks for about 12 GB of free RAM for a typical map. Leave room for the operating system. Do not pick a 2 GB or 4 GB VPS for Rust.
| VPS RAM | What it is for |
|---|---|
| 8 GB | Tight. A few friends, world size 2500 to 3000. Expect swap if the map fills up. |
| 16 GB | The usual start. Small friends server, world size 3000 to 4000, around 10 players. |
| 32 GB or more | Larger map, more players, or Oxide later. A public or heavily built world may want this, or a dedicated box. |
If the kernel is swapping hard, add swap: Add Swap Space to Your VPS. Still tight? Resize from the portal or open a support ticket.
Step 1: Download the Rust server
Log in as the steam user and pull Steam app 258550. That is the dedicated server tool, not the player client (252490). You do not need a Steam password on the VPS, and the VPS does not need its own Rust licence. Every player who joins still needs to own the game.
su - steam
cd ~/steamcmd
./steamcmd.sh +force_install_dir ~/rust +login anonymous +app_update 258550 validate +quit
Wait until SteamCMD prints Success! and App '258550' fully installed. The first download is large. Give it time.
Do not use app 252490. That installs the game client, not this server.
Step 2: Check the files
ls -la ~/rust/RustDedicated
You should see that binary, a RustDedicated_Data folder, and a bundled runds.sh.
Do not edit runds.sh. Steam can overwrite it on an update. Use your own script in the next step.
Step 3: Create a startup script
Still as steam:
nano ~/rust_start.sh
Paste this, then change the hostname, description, seed, and RCON password:
#!/bin/bash
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/rust/RustDedicated_Data/Plugins/x86_64
cd ~/rust
./RustDedicated -batchmode -nographics \
+server.port 28015 \
+server.queryport 28017 \
+server.level "Procedural Map" \
+server.seed 1234567890 \
+server.worldsize 3000 \
+server.maxplayers 10 \
+server.hostname "My Rust Server" \
+server.description "A Rust server for friends" \
+server.identity "myserver" \
+rcon.port 28016 \
+rcon.password "change-me-now" \
+rcon.web 1
| Flag | What it does |
|---|---|
-batchmode -nographics | Headless. Required on a VPS with no desktop. |
+server.port 28015 | UDP port players use. Default is 28015. |
+server.queryport 28017 | UDP port the in-game browser uses. Must not match server.port. If you omit it, Rust picks one above the higher of the game or RCON port. |
+server.seed | Terrain. Keep this number if you want the same map after a restart. Range is 0 to 2147483647. |
+server.worldsize | Map size, 1000 to 6000. Larger maps use more RAM and disk. Start at 3000. |
+server.maxplayers | Simultaneous players. Start low. Raise it when RAM and CPU stay comfortable. |
+server.identity | Folder name under ~/rust/server/. Saves, cfg, and the map live there. |
+rcon.port +rcon.password | Remote admin. Set a long unique password. Do not reuse the hostname. |
+rcon.web 1 | Web RCON. Use this unless a specific client tells you otherwise. |
Save the file (Ctrl+X, then Y, then Enter) and make it executable:
chmod +x ~/rust_start.sh
Put extra convars in server.cfg after the first start (see below). Keep ports, identity, seed, world size, and RCON on the command line so a missing cfg file cannot leave RCON open with no password.
Step 4: Open the ports
Two filters can block players. Open both.
Portal Firewall tab (the filter in front of the VPS):
- Sign in at the portal and open the VPS.
- Open the Firewall tab.
- If no rules are listed, we are not filtering at that layer. Skip to UFW.
- If you already added Drop rules, add an Accept for UDP 28015 and UDP 28017, and keep an Accept for SSH (22, TCP) ahead of any Drop. Add TCP 28016 only if you will use an RCON client from another machine. Pin that rule to your home IPv4 if you can.
Full walkthrough: Open the Right Firewall Ports for Your Game Server.
UFW on Ubuntu or Debian (from your sudo account, not steam):
sudo ufw allow 28015/udp
sudo ufw allow 28017/udp
sudo ufw allow 28016/tcp
sudo ufw reload
sudo ufw status
Skip the 28016/tcp line if you will only send RCON from the VPS itself.
Allow SSH (22/tcp) before you ever run sudo ufw enable. See Set up a UFW firewall on Ubuntu.
If a rule locks you out of SSH, use the console on the VPS, or open a support ticket.
Step 5: Start the server
As steam:
su - steam
~/rust_start.sh
The first start generates the map and can take several minutes. Wait until the log shows Server startup complete. Do not kill the process while it is still writing the world.
Leave that terminal open while you test. On Linux the Rust console does not take typed commands the way the Windows build does. Use RCON for admin (next section). Ctrl+C stops the process.
Confirm it is listening:
sudo ss -ulnp | grep -E '28015|28017'
sudo ss -tlnp | grep 28016
You should see RustDedicated on 0.0.0.0:28015 and 0.0.0.0:28017 (UDP), and on 0.0.0.0:28016 (TCP) if RCON is enabled. Listening only on 127.0.0.1 means players outside the VPS cannot join.
Step 6: Join from the game
On your PC:
- Copy the VPS IPv4 from the portal.
- Launch Rust (the same branch as the server, usually the public release).
- Press F1 and run:
connect YOUR.IPV4.HERE:28015
- Or open the server browser, go to Community, and search for the hostname you set. The query port must be open or the server will not list.
Friends use the same IPv4 and port.
Want a name instead of the raw IPv4? In the portal go to Domains, open the domain, then DNS, and add an A record to that IPv4. AtlasDNS is the default. See Point your domain at your hosting.
If nobody can connect, re-check the Firewall tab, sudo ufw status, and sudo ss -ulnp. Still stuck? Open a support ticket and include the VPS service, the IPv4, and the ports. Do not put the RCON password in the ticket.
Keep it running after you disconnect
For a first test, run it in screen or tmux so SSH can close without stopping the map. See Run a game server persistently with screen or tmux.
su - steam
screen -S rust
~/rust_start.sh
Detach with Ctrl+A, then D. Reattach with screen -r rust.
For something that comes back after a reboot or a crash, use a systemd unit: Keep a Game Server Running and Auto-Restarting with systemd. Point ExecStart at /home/steam/rust_start.sh, set WorkingDirectory=/home/steam/rust, and run the service as steam.
Stop a live server with the RCON quit command when you can, so it writes a clean save. Ctrl+C in the screen session also stops it.
Remote console (RCON)
Use RCON to run admin commands. The Linux process will not accept them on its own terminal.
From your PC, use a Web RCON client (Rusty is a common one). Connect to YOUR.IPV4.HERE:28016 with the password from the start script.
Useful commands:
server.writecfg
server.save
say Welcome
kick <name>
ban <name>
quit
Do not publish TCP 28016 to the whole internet unless you need to. Prefer an Accept rule pinned to your home IPv4, or run the client over SSH. Change the password if it ever appears in a screenshot or a ticket.
server.cfg after the first start
Once the process has created the identity folder, you can keep extra settings in a file Rust will not overwrite:
~/rust/server/myserver/cfg/server.cfg
Create the path as steam if you want the file before the first boot:
su - steam
mkdir -p ~/rust/server/myserver/cfg
nano ~/rust/server/myserver/cfg/server.cfg
Example (no + prefix in this file):
server.hostname "My Rust Server"
server.description "A Rust server for friends"
server.maxplayers 10
server.saveinterval 600
Values in this file win over the same keys on the command line. Restart the process after you edit it.
Update the server
Stop the process first (RCON quit, Ctrl+C in the screen session, or stop the systemd unit). Then, as steam:
su - steam
cd ~/steamcmd
./steamcmd.sh +force_install_dir ~/rust +login anonymous +app_update 258550 validate +quit
Start the script again. Your ~/rust_start.sh and ~/rust/server/myserver/ stay outside the files Steam replaces, so the name, seed, and saves remain.
If you later install Oxide (uMod), put those files back after every app_update. Steam returns the install to vanilla.
World files and backups
Saves for identity myserver live in:
~/rust/server/myserver/
That folder holds the map, player data, cfg/, and the Rust+ companion.id file if the companion app is in use. Copy the whole directory on a schedule. Stop the server first if you can, so you do not snapshot a half-written save. Steps: Back Up and Restore a Game Server World or Save.
A wipe is a new map. Stop the server, move ~/rust/server/myserver/ aside (or delete it after a backup), change +server.seed (and world size if you want), then start again. Reusing the same seed, world size, and identity keeps the same terrain.
Notes
- World size: 1000 to 6000. Facepunch's example is 4000. Larger maps need more RAM and disk. Start at 3000 and raise it only if the VPS has headroom.
- Player count: each extra player costs CPU and RAM, especially around big bases. Ten is a sensible first cap. Fifty on a small VPS will not stay playable.
- Seed: keep it stable across restarts if you want the same map. Changing seed or world size is a wipe.
- Save interval:
server.saveinterval 600(10 minutes) is a safe start. - Wipes: many community servers wipe on a schedule. That is your choice, not something we force.
- Plugins: Oxide (uMod) or Carbon come after a vanilla server is stable. They are a separate install and must be reapplied after Steam updates.
- Performance: watch RAM and CPU with Monitor Server Resources. If the VPS is tight, lower world size and
maxplayers, resize from the portal, or open a support ticket.
Need a hand with the VPS, the firewall, or a map that will not load? Open a support ticket.