The server.cfg settings Rust admins actually use — verified against current Facepunch convars, not copied from a five-year-old forum post. Rust renames and removes convars constantly, so this page sticks to what's confirmed working and is honest about the stuff that now needs a plugin.
server.cfg yet or aren't sure where the file goes, how to create a server.cfg for Rust walks through setup step by step. Or skip both and use the Rust server.cfg generator.
How your server presents itself in the browser. Get these wrong and players never find you — the tag rules in particular decide whether you show up in their filters.
| Setting | Description | Example |
|---|---|---|
| server.hostname | Name shown in the server browser. Unique, not spammy. | "GamesOMG Vanilla+" |
| server.description | Blurb in the server details panel. Rules, Discord, wipe schedule. | "Weekly · PvE · Discord" |
| server.url | Clickable link from the server panel. Site or Discord invite. | "https://gamesomg.com" |
| server.headerimage | Banner image — must be 512×256, hosted on a stable public URL (imgur, your CDN). | "https://ex.com/h.png" |
| server.logoimage | Server logo shown alongside the header in the browser. | "https://ex.com/logo.png" |
| server.identity | Save/config folder name. Changing wipes progress — pick once, never touch. | "rust_main" |
| server.tags | Up to 4 discovery keywords. Drives browser filtering — pick honest ones. | "weekly,2x,US" |
| server.level | Map type. Almost always "Procedural Map". | "Procedural Map" |
| server.randomize_seed | When set, the map seed changes on every restart. Leave it out if you want a stable map between restarts. | true |
weekly, biweekly, monthly), region (EU, NA, AU), and rate multipliers. If you run Oxide or Carbon, the modded tag is added automatically — don't set it yourself. Only 4 tags count.
Map shape, player cap, PvE toggle, and team size. The team-size convar is the one that trips everyone up — note the prefix.
| Setting | Description | Example |
|---|---|---|
| server.maxplayers | Concurrent player cap. Match to hardware. | 100 |
| server.worldsize | Map size in meters. Valid 1000–6000; 3000–4500 is where most communities sit. | 3500 |
| server.seed | Procedural map seed. Preview combos on rustmaps.com before committing. | 1337 |
| server.pve | Toggle PvE mode — when true, players can't damage each other. | false |
| server.radiation | Enables radiation zones at monuments. On by default. | true |
| server.stability | Building stability simulation. Off makes floating bases possible. | true |
| relationshipmanager.maxteamsize | Team size cap. Note the relationshipmanager. prefix — not just maxteamsize. Default 8. Set 0 to disable teams (solo-only). | 8 |
relationshipmanager.maxteamsize, with the prefix. maxteamsize on its own does nothing. Set it to 4 for small-group servers or 0 for solo-only.
Save frequency, FPS cap, and world time. Leave server.tickrate alone unless you know exactly what you're doing — the "right" value varies by server and changing it usually causes more problems than it solves.
| Setting | Description | Example |
|---|---|---|
| server.saveinterval | Seconds between saves. Default 300 (5 min) is genuinely fine; lower hammers disk. | 300 |
| fps.limit | Cap server FPS. Cap on weak hardware to prevent overheating; leave high otherwise. | 256 |
| env.time | Set the current world time (0–24). Lock to noon (12) for an always-daytime server. | 12 |
Anti-cheat and the remote console. Leave anti-cheat on — turning it off tanks your player count because Rust warns players before they connect to a non-secure server. Set a strong RCON password; bots scan for weak ones.
| Setting | Description | Example |
|---|---|---|
| server.secure | Enables Rust's anti-cheat (EAC). The only reason to disable is a private dev box. | true |
| rcon.password | Strong, random, mandatory. Blank/default passwords get exploited fast. | "long-random-string" |
| rcon.port | RCON port. Keep unique from the game port. | 28017 |
| rcon.ip | Bind RCON to a specific IP. Empty = all interfaces. | 0.0.0.0 |
| rcon.web | Use websocket RCON (what modern tools want). false = legacy Source RCON, which is deprecated. | 1 |
rcon.web 1 — the legacy Source-engine mode is deprecated. Firewall the RCON port to trusted IPs where you can.
How fast unattended bases rot. The current system is built on three real knobs: a global scale, an upkeep_period, and the brackets that scale upkeep cost by base size. (If you've seen decay.duration_twig-style per-material convars in old guides — those aren't how current Rust decay works; ignore them.)
| Setting | Description | Example |
|---|---|---|
| decay.scale | Global decay multiplier. Default 1.0. Drop to 0.5 on PvE for longer-lasting bases; 0 disables decay entirely. | 1.0 |
| decay.upkeep_period_minutes | Minutes a base survives without upkeep before decay starts. Default 1440 (24h). | 1440 |
decay.bracket_0_blockcount / decay.bracket_0_costfraction (and _1_, _2_, _3_). Keep block counts ascending and cost fractions descending, or small bases end up paying more than zerg compounds.
Note: vehicles and deployables use their own per-entity decay timers (e.g. boats, minicopters, horses each have an outsidedecayminutes value) rather than the building upkeep system. Those are situational — most admins only ever touch decay.scale.
Owner/moderator assignment and bans. Every ID is a SteamID64 — the 17-digit number, never a username. After adding admins via console, run server.writecfg or they won't survive a restart.
| Command | Description | Example |
|---|---|---|
| ownerid | Grant full owner/admin. Add your own SteamID64 here first. | ownerid 7656... "you" |
| moderatorid | Grant moderator (less power than owner). | moderatorid 7656... |
| banid | Ban a SteamID. Add a reason in quotes. | banid 7656... "grief" |
| server.whitelist | Enable whitelist mode (only listed SteamIDs may join). | 1 |
Animal density is set per species, as a population value per square km — there's no single global "spawn rate" convar. Raise these for a livelier (and more dangerous) map, drop them for a quieter one.
| Setting | Description | Default |
|---|---|---|
| bear.population | Bears per km². | 2 |
| polarbear.population | Polar bears per km² (snow biome). | 1 |
| wolf.population | Wolves per km². | 2 |
| boar.population | Boars per km². | 5 |
| stag.population | Stags per km². | 3 |
| chicken.population | Chickens per km². | 3 |
bradleyapc. and patrolhelicopterai. prefixes (deploy ranges, flee thresholds, crash behavior, scientist redeploy timers). They're advanced and situational — if you want to tune them, type find bradleyapc or find patrolhelicopterai in your server console to list the current ones with their live values.
Toggles for NPC/animal AI — handy for PvE tuning, performance, or building a target-dummy test server. These are real top-level ai. convars.
| Setting | Description | Default |
|---|---|---|
| ai.move | Toggle whether AI entities move toward their destinations. False = frozen in place. | true |
| ai.think | Toggle AI brain logic (decision-making). False = AI stops thinking. | true |
| ai.ignoreplayers | When true, NPCs ignore players entirely. Useful for building/testing undisturbed. | false |
| ai.npc_enable | Master toggle for NPC spawning. Set false and NPCs won't spawn at all. | true |
| ai.sensetime | Seconds between NPC sensory updates. Higher = lower CPU but slower reactions. | 1 |
npcdamage/npcaccuracy convar (those don't exist in current Rust, despite what old guides claim). Aim tightness is governed by convars like ai.npc_valid_aim_cone. To see what your build exposes, run find ai.npc in the server console.
This is where most old guides lead you astray. Rust has removed or never had a lot of the convars you'll see on random forum posts. For anything below you need a modding framework — Oxide/uMod or Carbon (Oxide-compatible, most uMod plugins work on either). If a setting you're hunting for isn't in the tables above, it's almost certainly in here.
gather.rate.dispenser-style lines all over the internet don't work as persistent config. Use the GatherManager plugin for per-resource control that survives restarts.env.daylength and env.nightlength were removed — only env.time (set current time) still exists. For longer days, grab a plugin like Night Skipper or Time Of Day.
A working vanilla server.cfg using only the verified settings above — nothing fabricated. Replace identifiers, passwords, and your SteamID, then drop it in /server/<identity>/cfg/server.cfg.
// GamesOMG example Rust server.cfg — vanilla, verified convars only server.hostname "[US] GamesOMG Vanilla+ | Weekly" server.description "Weekly wipe Thursday | PvE-friendly | Discord.gg/example" server.url "https://gamesomg.com" server.headerimage "https://example.com/header.png" server.identity "rust_main" server.tags "weekly,vanilla,US" server.maxplayers 100 server.worldsize 3500 server.seed 1337 server.level "Procedural Map" server.pve false server.radiation true server.stability true relationshipmanager.maxteamsize 8 server.secure true server.saveinterval 300 env.time 12 decay.scale 1.0 decay.upkeep_period_minutes 1440 rcon.password "CHANGE-ME-long-random-string" rcon.port 28017 rcon.web 1 ownerid 76561198042260039 "YourName" // your SteamID64
Gather-rate and crafting tweaks aren't in here because they're plugin-only (see above). Add them through GatherManager, not the cfg.
The "my settings aren't working" failure modes, in roughly the order admins hit them.
/server/<identity>/cfg/ where identity matches your server.identity.server.cfg only fires at boot.maxteamsize instead of relationshipmanager.maxteamsize).find <text> in the server console (e.g. find decay, find ai) — it lists every convar matching that text on your actual build, with descriptions. When a guide disagrees with find, find wins.\n line breaks as a workaround.rcon.password, rcon.port, and rcon.web 1 are all set.rcon.web 1); the legacy Source-engine mode is deprecated.server.tickrate at default unless you've benchmarked — raising it past your hardware makes things worse.server.worldsize (6000) increases memory/storage load.server.description can duplicate text in the server list — pad with \n.server.cfg file edits only apply on restart./server/<identity>/cfg/. Replace identity with whatever you set as server.identity. If the cfg folder doesn't exist, create one and drop the file inside. Full walkthrough on the how to create a server.cfg for Rust page, or use the generator.
relationshipmanager.maxteamsize — with the prefix, not just maxteamsize. Default is 8. Set 0 to disable teams entirely (solo-only servers), or 3–4 for small-group servers. This is the single most-mistyped Rust setting.
decay.scale 0 — that freezes all structures permanently. Be aware abandoned bases then stay forever and the map slowly becomes a junkyard. Many PvE servers reduce it (decay.scale 0.5) rather than fully disabling.
gather.rate.dispenser-style lines in old guides don't persist. Gather-rate control now lives in a plugin — GatherManager on Oxide/Carbon — which gives you per-resource tuning that survives restarts.
env.daylength and env.nightlength were removed. Only env.time (set the current time, e.g. env.time 12 for noon) still works. For adjustable day/night ratios you need a plugin like Night Skipper or Time Of Day.
server.secure. Leave it on (true) — players are warned before connecting to an insecure server, so turning it off tanks your population. The only reason to disable is a private dev box.
ownerid, then restart — or run it in console and follow with server.writecfg to save it. Example: ownerid 76561198042260039 "YourName". Find your SteamID64 at steamid.io.
find <text> in your server console — e.g. find decay or find ai. It lists every convar matching that text on your actual server build, with descriptions and current values. It's the authoritative answer for your version; when a written guide disagrees with find, trust find.
server.cfg. Use the cfg for permanent settings; use the command line only for things that change between launches (identity, ports). If a cfg value keeps reverting, check your launch script.
server.cfg. Plugins live in oxide/plugins/ (or carbon/plugins/) with their configs alongside. The cfg only handles base Rust convars.