Rust Field guide

Update Rust with Oxide or Carbon without losing plugins

Update your Rust dedicated server via SteamCMD without losing configurations or persistent data in Oxide or Carbon.

Update Rust with Oxide or Carbon without losing plugins

Every mandatory Rust patch on the first Thursday of the month or emergency client hotfix requires updating your dedicated server files. After running SteamCMD, administrators often discover that their server boots as a pure vanilla instance with all custom plugin commands missing. Crucially, your configs and player data are not lost: SteamCMD simply restored original unpatched game engine libraries.

This walkthrough targets Linux Rust administrators running Oxide (uMod) or Carbon mod frameworks. As of October 27, 2026, both frameworks keep user configurations entirely isolated from core engine binaries.

Why SteamCMD updates reset modded frameworks#

Both Oxide and Carbon work by injecting hooks into compiled Unity assemblies (RustDedicated_Data/Managed/Assembly-CSharp.dll and related assemblies).

When you run an update through SteamCMD (app_update 258550 validate), the Steam client verifies checksums against Valve's official repository. Every modified or patched library is replaced with Facepunch's clean vanilla file.

However, framework data folders remain untouched:

  • Oxide: plugin source files live in oxide/plugins/, configuration files in oxide/config/, and persistent data stores in oxide/data/.
  • Carbon: plugins reside in carbon/plugins/, configurations in carbon/configs/, and data in carbon/data/.

SteamCMD never deletes these folders. Restoring modded capability requires only re-applying the framework build compiled specifically for the new game patch.

Creating a pre-update backup#

Before making filesystem changes, save world state and mod directories. Issue a graceful shutdown in the server console:

bash
save
quit

Archive configuration directories and active world identity data:

bash
set -eu
BACKUP_DIR="/srv/rust-backups/$(date +%Y-%m-%d-%H%M)"
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/oxide-backup.tar.gz" -C /srv/rust oxide 2>/dev/null || true
tar -czf "$BACKUP_DIR/carbon-backup.tar.gz" -C /srv/rust carbon 2>/dev/null || true
tar -czf "$BACKUP_DIR/server-identity.tar.gz" -C /srv/rust/server my_server_identity

This ensures you can roll back instantly if an unmaintained third-party plugin corrupts a data file on startup under the new protocol.

Update lifecycle: graceful save and stop, SteamCMD verification, re-extracting the updated mod build, and starting the server.

Updating vanilla Rust files via SteamCMD#

Execute the base server update:

bash
/usr/games/steamcmd +force_install_dir /srv/rust \
  +login anonymous \
  +app_update 258550 validate \
  +quit

The server is now completely vanilla. Do not expose it to players yet: without Oxide or Carbon loaded, authentication, protection, economy, and permission systems will not execute.

Installing the updated Oxide or Carbon release#

Download the updated framework build matched to the new Rust patch version.

For Oxide (uMod):

bash
cd /srv/rust
curl -fL -o Oxidelinux.zip https://umod.org/games/rust/download
unzip -o Oxidelinux.zip
rm Oxidelinux.zip
chown -R rust:rust /srv/rust
chmod +x /srv/rust/RustDedicated

For Carbon (using the official installation script):

bash
cd /srv/rust
curl -sL https://carbonmod.gg/download/linux -o carbon-install.sh
bash carbon-install.sh
chown -R rust:rust /srv/rust

The -o flag in unzip overwrites the vanilla assemblies in RustDedicated_Data/Managed/ with patched versions while preserving your existing files in oxide/config/.

Starting the server and verifying plugin status#

Start the server process under its standard service user and inspect framework status in the console:

bash
oxide.version
plugins

The output of oxide.version should confirm both the Oxide build and the underlying Rust Dedicated version. The plugins command displays all loaded extensions and their operational status. If a specific plugin produces compiler errors (CS0246 or NullReferenceException), the game developers altered an internal API; disable that specific plugin until an author patch is published.

If you manage your dedicated server fleet using Nexardo, automate framework re-installation steps within your maintenance pipelines to eliminate human error during scheduled wipe nights.

Sources#