
Manual-first Windows server guide
Rust Dedicated Server Setup, Ports, Wipes, and Recovery
Host Rust by treating server.identity as the durable boundary: it selects the map, save, databases, users, configuration, and Rust+ pairing that must remain synchronized through updates, wipes, imports, and recovery.
Rust separates UDP game and query traffic from TCP RCON, derives defaults when values are omitted, and has no native join password. Its monthly update rhythm also requires a precise distinction between a map wipe, a blueprint wipe, and a normal binary update. Third-party Oxide/uMod or Carbon layers must be version-matched after official validation.
Steam application
App ID 258550
Facepunch supports anonymous SteamCMD installation and validation.
Readiness marker
Server startup complete
A running process is not ready for joins until the server reaches this startup state.
Durable identity
server/<identity>
Changing server.identity selects different persistent state and can resemble a wipe.
Project port plan
UDP 28015 game, UDP 28016 query, TCP 28017 RCON
These are explicit Gone Wrong Servers allocations, not universal Facepunch defaults.
Vanilla join password
Not available
A private Rust server needs an understood allowlist, network boundary, or third-party approach rather than a fictional password field.
Protect the server first: Run server.save and native quit, then copy the entire active server/<identity> directory—including database sidecars and companion.id—before an update, wipe, plugin change, import, or restore.
Size the host before downloading
PC and capacity guidance
Facepunch publishes a 12 GB free-memory floor, more memory for 6000-size maps, and an SSD/NVMe preference; it does not promise a player count per CPU or RAM tier. The profiles above are conservative editorial starts.
| Profile | Players | Memory | Processor | Storage |
|---|---|---|---|---|
| Small vanilla server Conservative starting point | Private group on a modest procedural map | 16 GB RAM available to the host starting point | Modern high-single-thread-performance CPU | SSD/NVMe with room for identity snapshots and logs |
| High-entity Rust host or plugin community Conservative starting point | Host-and-play, larger map, more entities, or plugins | 32 GB total system RAM or more starting point | Strong modern desktop/server CPU; measure server frame and save time | Fast SSD/NVMe with several full identity and plugin snapshots |
Vanilla baseline
Install Rust and make every identity choice explicit
An explicit identity, map, game port, query port, and RCON port make firewall rules and recovery reproducible instead of depending on derived defaults.
- 1
Install official binaries
Use anonymous SteamCMD in a dedicated server folder.
steamcmd +login anonymous +force_install_dir D:\Servers\Rust +app_update 258550 validate +quit - 2
Record the identity and map
Choose server.identity once, record the procedural seed/size, and store the launch definition with protected secrets.
- 3
Separate game, query, and RCON
Assign unique values with correct protocols; use a long unique RCON password and WebRCON mode.
Never paste the live RCON password into public support or screenshots.
- 4
Wait for readiness and prove persistence
Wait for Server startup complete, join, run server.save, native quit, restart, and confirm the same identity/world.
Maintenance policy
Separate updates, map wipes, and blueprint wipes
A monthly update does not turn every maintenance window into the same destructive event. Decide which state is intentionally replaced and tell players before it happens.
- 1
Read the current update notice
Facepunch's current announcement controls whether a protocol/map change forces a wipe.
- 2
Name the intended wipe
A map wipe replaces world state; a blueprint wipe resets learned blueprint progression and is a separate choice.
- 3
Preserve the old identity
Native-save/quit and archive the complete identity and plugin data before creating a new map or reset.
Host migration
Move a Rust identity without creating an accidental wipe
The destination must launch the same identity, seed, world size, and save protocol while receiving safe new network/admin values.
- 1
Freeze and inventory the source
Run server.save and quit; record identity, build, map, ports, plugin framework, and Rust+ status.
- 2
Install clean official files
Use App ID 258550 on the destination rather than importing host binaries.
- 3
Restore the complete identity
Copy map/save/databases/config/users/companion state together and restore plugins only after version matching.
If a fresh map appears, stop before saving and compare identity, seed, map size, and save protocol.
Keep every layer consistent
Ports, firewall, and router setup
Open only the services your Rust server actually uses. The game process, Windows Firewall rule, router forward, and player join address must all agree on the same port and protocol.
| Port | Protocol | Purpose | Exposure | Notes |
|---|---|---|---|---|
| 28015 | UDP | Gone Wrong Servers default game/player port via server.port | Internet playersRequired for this use | Also the Facepunch default when server.port is not changed.[facepunch-create] |
| 28016 | UDP | Gone Wrong Servers explicit Steam query port via server.queryport | Internet playersRequired for this use | Rust can derive a query value when omitted; explicit unique assignment avoids ambiguity.[facepunch-create] |
| 28017 | TCP | Gone Wrong Servers private WebRCON port via rcon.port | Optional administrationOptional | Protect with a unique password and private firewall/VPN scope; many generic guides assume a different RCON port.[facepunch-create] |
| Configured app.port (often derived well above game/RCON) | TCP | Optional Rust+ companion service | Internet playersOptional | Configure and test separately; preserve companion.id and do not expose an assumed port.[rust-companion] |
Never expose an administration or RCON port merely so players can join. Keep remote administration private whenever possible, use a strong unique credential, and confirm the game's own security model before forwarding it.
Know what must survive a reinstall
Files, worlds, and configuration
| File or folder | Purpose | Backup | Notes |
|---|---|---|---|
| server/<identity>/cfg/server.cfg | Persistent server console-variable configuration | Critical | Keep startup-critical identity, ports, and map values auditable too.[facepunch-create] |
| server/<identity>/*.map and *.sav | Procedural map and live world save selected by identity/seed/size | Critical | Copy only after server.save and native quit.[facepunch-create][rust-commands] |
| server/<identity>/*.db, *.db-wal, and *.db-shm | Player/world auxiliary SQLite state | Critical | A live copy can split the database from its write-ahead log.[facepunch-create] |
| server/<identity>/companion.id | Rust+ pairing identity | Critical | Do not share or regenerate casually during migration.[rust-companion] |
| oxide or carbon plugin/config/data roots | Third-party plugin framework and durable plugin data | Critical | Frameworks are third-party and must match the installed Rust build.[facepunch-create] |
| Setting or file | Location | What it controls | Restart? |
|---|---|---|---|
server.identitygonewrong | Startup command | Selects the complete durable server directory[facepunch-create] | Yes |
server.port28015 | Startup command | Sets UDP player traffic[facepunch-create] | Yes |
server.queryport28016 | Startup command | Sets a unique UDP Steam query/listing port[facepunch-create] | Yes |
rcon.port and rcon.web28017 and 1 | Protected startup command | Sets private TCP administration and recommended WebRCON mode[facepunch-create] | Yes |
server.seed and server.worldsizeA recorded seed with a measured map size | Startup command | Selects procedural world identity and scale[facepunch-create] | Yes |
Avoid incompatible clients and unsafe shortcuts
Players, mods, and administration
Cross-play and editions
RustDedicated.exe serves the Steam/PC Rust ecosystem; Rust Console Edition is a different product/server network, so Xbox and PlayStation clients cannot join this server.
- Do not label the PC server console-crossplay capable.
- Match the PC client and dedicated-server build after updates.
- Treat any future storefront/platform expansion as a publication-time recheck, not an assumption.
Mods and extensions
Oxide/uMod and Carbon are third-party frameworks layered on the official Rust server; updates can replace framework files and require a compatible reinstall.
- Back up plugin code, configuration, language, and data with the vanilla identity.
- After a Rust update, update/reapply the framework before loading plugins.
- Use a copied identity and vanilla startup to isolate a crash; removing a data-bearing plugin from the only world can lose state.
Administration
Use private WebRCON with a strong unique password for remote control; vanilla Rust has no normal join password and should not be marketed as if it does.
- Keep TCP RCON behind firewall/VPN or narrowly scoped management access.
- Use server.save for world state and server.writecfg only for configuration variables.
- Protect owner/moderator IDs, RCON secrets, logs, and companion.id.
Preserve a return path before maintenance
Updates, backups, and rollback
Update without gambling the world
Read the current wipe notice, stop cleanly, snapshot identity/plugins, update official files, then version-match the third-party framework; validation alone is not rollback.
- 1
Record update and wipe intent
Capture build, identity, map/blueprint policy, seed/size, plugin framework, and current official update notice.
- 2
Save, quit, and snapshot
Run server.save and native quit, then copy the entire identity and plugin roots.
- 3
Update and reapply compatible extensions
Validate App ID 258550, then install framework/plugins built for that Rust server version.
steamcmd +login anonymous +app_update 258550 validate +quit - 4
Prove readiness
Wait for Server startup complete, inspect plugin errors, save/restart/join, and only then reopen.
Back up and prove the restore path
A Rust backup is complete only when the stopped active identity, SQLite sidecars, users/config, Rust+ identity, and third-party plugin state share one timestamp.
- 1
Create a clean checkpoint
Run server.save, confirm completion, issue native quit, and wait for exit.
- 2
Capture the whole identity
Copy server/<identity> and third-party roots outside the install; include companion.id without sharing it.
- 3
Restore compatible state
Quarantine the incident state and restore binaries, identity, configuration, framework, and plugins from a compatible set.
- 4
Validate before players return
Confirm map, users, RCON, Rust+, plugin data, save/restart, and an outside query/join.
Diagnose before reinstalling
Common Rust server problems
Rust game, query, and RCON ports are confused
What players see
Players can join but the browser or RCON fails, often because a generic guide assumes TCP 28016 is RCON.
Likely cause
The live launch line assigns different explicit values; Gone Wrong Servers uses UDP 28016 for query and TCP 28017 for RCON.
- 1.Read server.port, server.queryport, and rcon.port from the actual launch definition.
- 2.Create protocol-correct narrow rules and keep RCON private.
Rust appears wiped after a startup change
What players see
The server starts a fresh procedural map while old files still exist.
Likely cause
server.identity, seed, world size, map type, or save protocol no longer selects the original state.
- 1.Stop before running server.save on the fresh map.
- 2.Compare the prior identity/map launch record and restore the matching full snapshot if needed.
Rust plugins fail after an official update
What players see
The vanilla server starts, but Oxide/uMod or Carbon plugins are absent or erroring.
Likely cause
Steam validation replaced framework files, or the framework/plugin version does not match the new Rust build.
- 1.Keep the production identity stopped and preserve logs/plugin data.
- 2.Verify a vanilla startup, then install a compatible framework and test plugins in controlled groups.
Every focused Rust troubleshooting guide
Evidence stays visible
Sources and verification
Technical behavior changes with server builds. These are the references reviewed for this guide. Official documentation wins if a later patch changes a path, port, command, or compatibility rule.
[facepunch-create] Facepunch
Creating a Rust server ↗Reviewed 2026-08-30 · Official documentation
[rust-commands] Facepunch
Rust useful server commands ↗Reviewed 2026-08-30 · Official documentation
[rust-companion] Facepunch
Rust+ companion server ↗Reviewed 2026-08-30 · Official documentation
[rust-news] Facepunch
Rust official updates and wipe notices ↗Reviewed 2026-08-30 · Official documentation
[steam-store] Facepunch / Steam
Rust Steam product page ↗Reviewed 2026-08-30 · Official documentation
[rust-console] Double Eleven / Rust Console Edition
Rust Console Edition is a separate console experience ↗Reviewed 2026-08-30 · Official documentation
Keep learning
Related guides
Untangle Rust ports
Map game, query, RCON, and optional Rust+ services to explicit protocols and values.
Open guide →
Recover an apparent wipe
Reconnect the original identity, seed, map size, save, and database set safely.
Open guide →
Restore plugins after an update
Verify vanilla, reinstall a compatible framework, and protect plugin-owned data.
Open guide →