A Rust server is configured in two places: launch parameters and the server.cfg file. This guide explains what goes where, what each common setting does and which value to choose. It also covers map size and seed, custom maps and how to get the server into the server browser with the right tags.
What you'll need
- A Rust server and access to its files
- The ability to edit launch parameters (the start script on your own VPS, the startup settings on a game host)
- About 25 minutes
Rust at StormHost
We're still preparing Rust servers. This guide also applies to a Rust server on your own VPS (installation guide).
What is configured where#
| Place | What belongs there | Who edits it |
|---|---|---|
Launch parameters (+server.port 28015 …) | Ports, RCON, server identity, map (type, seed, size or custom map URL), possibly the slot count. Things that have to be known at startup. | You (on a game host, through the startup settings). |
server/ | Everything else: name, description, images, tags, slots, gameplay rules. | You. The server never changes it. |
server/ | Values the server saves by itself (on shutdown or with the server.writecfg command). | The server. Don't edit it. |
server/ | Admins and moderators. See Admin and RCON. | Both the server and you. |
The identity (server.identity) is the name of the folder where the server stores the world, configuration and players. This lets several servers run from the same game files. If you change the identity, the server starts with a new, empty world in a different folder. The default identity is my_server_identity.
In server.cfg, variables are written without the leading +, each on its own line. In launch parameters, they're written with +, one after another on a single line.
Each setting in one place only
The Facepunch wiki says server.cfg takes precedence over command-line parameters, while the Oxide documentation says the opposite. To avoid depending on chance, set each variable in only one place. Facepunch recommends putting only the essentials (ports, RCON) in the launch parameters and everything else in server.cfg.
Variables changed in the console while the server is running only last until a restart (unless the server saves them to serverauto.cfg itself). Anything that should stick goes into server.cfg.
Launch parameters#
An example for Linux (on Windows the line is the same, only the program is called RustDedicated.exe):
./RustDedicated -batchmode \
+server.identity "rust" \
+server.port 28015 \
+server.queryport 28017 \
+server.level "Procedural Map" \
+server.seed 12345 \
+server.worldsize 3000 \
+server.maxplayers 50 \
+rcon.port 28016 \
+rcon.password "<STRONG_PASSWORD>" \
+rcon.web 1 \
+app.port 28082 \
-logfile "rust.log"The backslash at the end of a line just means the command continues on the next line.
| Parameter | What it does | Recommended value | When to change it |
|---|---|---|---|
-batchmode | Runs the server without a graphical window. | always | – |
+server.identity | The name of the folder with the world and configuration (server/<IDENTITY>/). | a short name without spaces, e.g. rust | Only when you want a new world in a new folder or several servers. |
+server.port | The port players connect to. UDP. | 28015 | When several servers run on one IP or your host assigned you a different one. |
+server.queryport | The port for server browser queries (Steam). If it isn't open in the firewall, you won't see the server in the browser. UDP. Must not be the same as server.port. | 28017 | Together with server.port. If you don't set it, it's 1 higher than the higher of the game and RCON ports. |
+server.level | The map type. | "Procedural Map" | Not used with a custom map (you set server.levelurl). |
+server.seed | The number the map is generated from. Same seed and size = same map. | any number 0–2147483647 | At a wipe, when you want a new map. |
+server.worldsize | The map size (side length in meters). | 2000–4500 depending on player count (table below) | See the Map size and seed section. |
+server.maxplayers | The number of slots. | depending on server performance | More players = higher CPU demands. |
+rcon.port | The remote console port. TCP. | 28016 | See Admin and RCON. |
+rcon.password | The remote console password. | a strong random password | Always change it. |
+rcon.web | WebSocket RCON (1) instead of the deprecated Source RCON. | 1 | – |
+app.port | The port for the Rust+ mobile app. TCP, must be at least 10000. +app.port 1- turns Rust+ off. If you don't set it, it's 67 higher than the higher of the game and RCON ports (with RCON on 28016, that's 28083), which is why we set it explicitly. The app.info command prints the port in use. | 28082 | When you don't want Rust+ or the port conflicts. |
-logfile | The file the console output is written to. | "rust.log" | – |
+server.levelurl | The download URL of a custom map (instead of server.level, seed and worldsize). | – | See the Custom map section. |
Replace <STRONG_PASSWORD> with your own password (without the angle brackets), ideally made only of letters and digits.
On a game host, ports are assigned by the provider. At StormHost, you'll see them in the customer area on the Network tab; with another host, in its server management. Set the other parameters in the server's startup settings.
server.cfg#
Create the server.cfg file in the server/<IDENTITY>/cfg/ folder (if it doesn't exist). The server reads it on startup.
server.hostname "[EU] My Rust server | Monthly | Vanilla"
server.description "An EU Rust server. Wipe on the first Thursday of every month. Discord: example.cz/discord"
server.url "https://example.cz"
server.headerimage "https://example.cz/rust/header.png"
server.logoimage "https://example.cz/rust/logo.png"
server.tags monthly,vanilla,EU
server.saveinterval 600
server.idlekick 30
decay.scale 1| Setting | What it does | Recommended value | When to change it |
|---|---|---|---|
server.hostname | The server name in the server browser. | Short and to the point, with the country and wipe schedule | Any time; takes effect after a restart. |
server.description | The description in the server details (rules, wipe, Discord link). | A few sentences | Any time. |
server.url | A link to the server's website in the details. | your page, or empty | If you don't have a website, leave the line out. |
server.headerimage | A direct link to the header image in the server details (PNG or JPG). | An image that's publicly accessible without logging in | The image won't load if the link doesn't point directly to the file. |
server.logoimage | A direct link to the server logo (server browser and the Rust+ app). | PNG or JPG, 256 × 256 px | The logo is shown in a circle and the corners are cropped – keep the motif in the middle. |
server.tags | Comma-separated tags for filtering in the server browser. | Wipe schedule + difficulty + region, e.g. monthly,vanilla,EU | See the Server in the server browser section. |
server.maxplayers | The number of slots (if it isn't in your launch parameters). | depending on performance | – |
server.saveinterval | How often the server automatically saves the world, in seconds. | 600 (default, 10 minutes) | A shorter interval = less loss after a crash, but more frequent short load spikes while saving. |
server.idlekick | After how many minutes of inactivity the server disconnects a player; 0 turns it off. | 30 (default) | Shorter on a full server, to free up slots. |
server.pve | PvE mode: players can't hurt each other. The server gets the PvE tag. | false (default) | For a pure PvE server. |
decay.scale | Building decay multiplier. 1 = normal, 0 = no decay. | 1 | Lower on servers with few players; 0 lets abandoned buildings pile up and loads the server. |
relationshipmanager. | The maximum team size. | the game's default | For “solo/duo/trio” servers, set 1, 2 or 3. |
server.favoritesEndpoint | The domain under which players save the server to their favorites. | your domain (A record) | Only if you have DNS records for the server (see below). |
You can see the current value of any variable by typing just its name in the console (for example server.maxplayers). For variables whose name you don't remember, use the find command, for example find decay.
Header dimensions
For server.headerimage, the community usually uses a 512 × 256 px image.
Map size and seed#
- Size range: Facepunch gives
server.worldsizea range of 1000 to 6000. The game's default is 4500. - Memory: according to Facepunch, a server with a standard map needs about 12 GB of free RAM, and a 6000 map needs more. A bigger map = more memory, more disk space and longer generation at startup.
- A rough guide (depends on your server's style):
| Concurrent players | Map size |
|---|---|
| up to 50 | 2000–3000 |
| 50–150 | 3000–4000 |
| 150 and more | 4000–4500 |
- The seed is any number from 0 to 2147483647. The same seed with the same size always gives the same map, so you can bring back a map you liked. Community Rust map sites offer map previews by seed and size.
- Some features need a bigger map – for example, according to the Facepunch wiki, the above-ground railway is only generated from size 4250 up.
- A change of seed or size only takes effect on a new world. On a running world, a new map creates a mismatch, so only change them at a wipe (guide).
For advanced users: map generation can be tweaked with a settings file (+world.configfile), for example to turn off trails or certain monuments. The Facepunch wiki (opens in a new window) describes how.
Custom map#
Custom maps are made in editors (RustEdit is the most widely used) as a .map file.
Upload the
.mapfile to a website that serves it via a direct link and is available around the clock. Players download the map from this address, not from the server.Test the link: when you open it in a browser, the file should start downloading immediately, not show a page.
Remove
+server.seed,+server.worldsizeand+server.levelfrom the launch parameters.Add the parameter with the link:
text +server.levelurl "https://example.cz/mapy/mojemapa-v1.map"If the map needs the RustEdit extension (custom electrical circuits, boat and tank routes, NPCs), install it as a framework extension following the map author's instructions (extensions and dependencies).
Start the server.
Every map version needs a new file name
Players keep the downloaded map on their computer. If you upload a modified map under the same name, the game loads their old copy and the connection fails with a mismatch error. Rename the map with every change (for example mojemapa-v2.map).
Links that don't work: a link to a Discord message, shared folders that show a page, Dropbox without dl=1 at the end. A release on GitHub or your own web server works, for example.
Performance#
- Map size and player count have the biggest impact on performance. Don't raise them beyond what the server can handle.
- The number of buildings and items (entities) grows over time. Decay (
decay.scale) helps clear out abandoned buildings. - Plugins: the
oxide.pluginslisting shows the total time each plugin has spent in hooks. A plugin with a much higher time than the others is a candidate for replacement. Carbon has a built-in profiler. - Current server performance: check it with the
server.fpscommand (server frames per second). A significant, lasting drop means the server is overloaded. - Leave
server.tickrateand similar variables at their defaults unless you know exactly why you'd change them.
Server in the server browser#
For the server to show up in the browser:
- Open the query port (
server.queryport, UDP) in the firewall. Without it, the server won't appear in the browser, even though you can connect to it directly. - Set tags in
server.cfg, for exampleserver.tags monthly,vanilla,EU. The browser shows at most four. - Wait a few minutes after startup for the server to appear in the browser.
Tags according to the Facepunch wiki:
| Group | Tags | Note |
|---|---|---|
| Wipe schedule | monthly, biweekly, weekly | Only one. Also drives the in-game wipe countdown, see Wipe. |
| Difficulty | vanilla, hardcore, softcore | Only one. |
| Region | EU, NA, SA, WA, EA, OC, AF | For the Czech Republic, EU. |
| Other | pve, roleplay, creative, minigame, training, battlefield, broyale, builds | Depending on the server type. |
Don't combine tags from the same group (for example monthly and weekly): the browser shows only one, and the server then won't turn up when players filter. The framework adds the Modded, Oxide and Carbon tags itself. server.pve true also sets the PvE tag.
The server's country is determined from its IP address using MaxMind. If it's wrong in the browser, submit a correction through the MaxMind form (GeoIP Data Correction).
Connecting via a domain: Rust can find a server through DNS. You need an A record with the server's IP address and an SRV record for the _rust service and the _udp protocol with the game port. Then also set the domain in server.favoritesEndpoint. Record types are explained in DNS records explained.
Troubleshooting#
Changes in server.cfg don't take effect#
- The file is in a different identity folder than the one the server uses. Check
+server.identityin the launch parameters and the pathserver/.<IDENTITY>/ cfg/ server. cfg - The file is actually called
server.cfg.txt(Windows hides extensions). - The same variable is also in your launch parameters. Keep it in one place only.
- The server hasn't been restarted since the edit.
server.cfgis read at startup; while the server is running, you can also enter the value in the console.
The server isn't visible in the server browser#
- The query port isn't allowed in the firewall (UDP), or it's the same as the game port.
- You're looking in the wrong tab: a server with a framework is under Modded.
- Tags from the same group cancel each other out.
- The server has only been running for a few minutes. Wait.
Players get Couldn't Download Level#
The game couldn't download the custom map. Check that server.levelurl is a direct link and that the website hosting the map is up. Facepunch advises players to open the “Download map file…” line in the F1 console and download the map manually into the game's maps folder.
World cache version mismatch or World File Outdated error#
The player has an older version of the map with the same name downloaded. Rename the map and change server.levelurl.
The server hangs while loading a custom map#
The map doesn't have enough ocean for the cargo ship's route. According to the Facepunch wiki, adding +cargoship.event_enabled false +baseboat.generate_paths false +ai. to the launch parameters helps (it turns off the cargo ship and the ocean patrol routes), or you can edit the map.
The header image or logo doesn't show#
The link doesn't point directly to the image file, the image isn't publicly accessible, or it's in an unsuitable format. Open the link in a private browser window: it should show nothing but the image itself.
Summary
- Ports, RCON, identity and map belong in the launch parameters, everything else in
server/.<IDENTITY>/ cfg/ server. cfg - Set each variable in one place only; don't edit
serverauto.cfg. - Map size 1000–6000; a bigger map needs more RAM. Only change seed and size at a wipe.
- Custom map: a direct link in
server.levelurland a new file name for every version. - To appear in the server browser, you need an open query port (UDP) and tags without conflicts.
Further reading#
- Facepunch: Creating a server (opens in a new window)
- Facepunch: server browser tags (opens in a new window)
- Facepunch: hosting a custom map (opens in a new window)
- Facepunch: common custom map errors (opens in a new window)
- Facepunch: server icon (opens in a new window)
- Facepunch: DNS records for a server (opens in a new window)