A vanilla Rust server can't run plugins on its own. It needs a modding framework: either Oxide or Carbon. This guide explains what a framework does, how the two differ, which one to pick, how to install it and what to do after every monthly Rust update.
What you'll need
- A Rust server that starts normally without a framework
- Access to the server files (file manager, SFTP, or SSH on your own VPS)
- The ability to stop and start the server
- About 20 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 a modding framework is#
A framework is a server add-on that loads together with Rust and opens the door to plugins. A plugin is a plain text file containing C# source code, with the .cs extension. The framework compiles it when it loads and then runs it. You only upload the .cs file; you don't compile anything yourself.
What a framework provides:
- Hooks – points in the game that plugins attach to (a player connected, something was built, someone mined a rock…). Through them a plugin can change almost anything.
- A permission system – player groups and permissions such as
kits.admin. See Permissions on a Rust server. - Plugin configuration, data and translations – each plugin creates its own settings file (JSON) that you edit.
Players don't install anything. Everything runs on the server only, and players connect with the same Rust client they use for any other server.
The Modded tab in the server browser
By default, both Oxide and Carbon mark the server as modded. Players then find it in the Modded tab and see an Oxide or Carbon label in the server details. If your plugins change gameplay (faster gathering, kits, teleports), keep the server in Modded – that's where players look for servers like that.
Oxide and uMod: why two names#
Oxide has long been the most widely used framework for Rust. The project was renamed uMod at one point, and the plugin site umod.org (opens in a new window) still runs under that name. The Rust framework itself is still called Oxide, though: the downloads are named Oxide.Rust.zip, commands start with oxide. and the server browser shows an “Oxide” label. The informal “oxymod” or “oxide mod” means the same thing.
Download Oxide from the official OxideMod/Oxide.Rust repository on GitHub (opens in a new window). New versions come out often, typically several times a month and always after a Rust update.
Carbon#
Carbon is a newer framework (it appeared in 2022). It's designed to run plugins written for Oxide without any changes. You download plugins from the same places, and they use the same .cs files.
How it differs from Oxide, according to the Carbon developers:
- It doesn't modify game files. Oxide overwrites files in the
RustDedicated_folder; Carbon keeps everything in its ownData/ Managed carbonfolder. - It updates itself. When the server starts, it downloads the version that matches the installed Rust.
- Hooks only when needed. It only calls hooks that some plugin actually uses, which saves performance.
- Built-in tools. An in-game admin panel (the
/cpanelcommand), optional modules (gather multipliers, stack sizes, admin invisibility, whitelist, automatic wipe) and a profiler.
Carbon comes in two builds: Release (full, with modules and the panel) and Minimal (plugin loading only). Start with Release.
Comparison#
| Oxide | Carbon | |
|---|---|---|
| Plugins from umod.org | Yes, natively | Yes, most Oxide plugins work unchanged |
| Where it installs | Overwrites game files in RustDedicated_ | Its own carbon folder in the server root; game files stay untouched |
| After a Rust update | You have to upload a new Oxide version (the game update overwrites it) | Updates itself on start; you only update Rust |
| Performance (according to the Carbon developers) | All hooks active | Hooks are enabled only when a plugin needs them |
| Built-in tools | None, plugins handle everything | Admin panel, modules, profiler, web panel |
| Plugin folder | oxide/plugins | carbon/plugins |
| Plugin configuration | oxide/config | carbon/configs (note the plural) |
| Data, translations, logs | oxide/data, oxide/lang, oxide/logs | carbon/data, carbon/lang, carbon/logs |
| Command prefix | oxide. or the short o. | c. |
| Default permission groups | default, admin | default, admin, moderator |
| Server browser label | Oxide | Carbon |
How to choose#
- Choose Oxide if you want the most widespread standard. Plugin authors test against it first, and most guides online assume it. The price is a manual update after every Rust update.
- Choose Carbon if you want as little update work as possible, a built-in admin panel and modules. If a plugin doesn't work on Carbon, let the plugin author or the Carbon community know.
Only one framework can run on a server. Oxide and Carbon together will break it.
Installation#
Before you start:
- Update the Rust server to the latest version. The framework version has to match the game version.
- Make a backup if the server already has a world. See Game server backups.
- Find out which operating system the server runs. Your own VPS and most game hosts run Linux. Windows and Linux use different downloads.
Oxide
- Stop the server. Uploading files into a running server can corrupt data.
- Open the Oxide.Rust – Releases (opens in a new window) page and, for the latest release that is not marked “Pre-release”, expand the Assets section.
- Download the file for your server's system:
Oxide.Rust-linux.zipfor Linux,Oxide.Rust.zipfor Windows.
- Extract the archive on your computer. It contains a single folder,
RustDedicated_Data. - Upload the
RustDedicated_Datafolder from the archive to the server root folder, i.e. where theRustDedicatedfile (on WindowsRustDedicated.exe) and the originalRustDedicated_Datafolder are. When prompted, confirm overwriting the existing files. - Start the server. On the first start, Oxide creates an
oxidefolder in the server root with the subfoldersplugins,config,data,langandlogs.
On your own Linux VPS, you can do it with these commands (the paths match the Your own Rust server on a VPS guide):
curl -fL -o /opt/rust/oxide.zip https://github.com/OxideMod/Oxide.Rust/releases/latest/download/Oxide.Rust-linux.zip
unzip -o /opt/rust/oxide.zip -d /opt/rust/servercurl -fL -o /opt/rust/oxide.zip …– downloads the latest stable Linux build of Oxide to the home folder of therustuser.-fmakes the command fail if the file doesn't exist,-Lfollows GitHub's redirect to the actual file.unzip -o … -d /opt/rust/server– extracts the archive into the server root;-ooverwrites existing files without asking.
Run this as the user the server runs under (rust in the guide; switch to it from root with su - rust) so that the new files belong to that user. The unzip program has to be installed (apt install unzip).
The file manager can't extract archives
If your host's file manager can't extract archives, upload the extracted files over SFTP (FileZilla, WinSCP). Folders are uploaded with their structure intact.
Carbon
- Stop the server.
- Open the Carbon – Releases (opens in a new window) page and find the Production Build release (the stable version for regular Rust).
- Download the file for your server's system:
Carbon.for Linux,Linux. Release. tar. gz Carbon.for Windows.Windows. Release. zip
- Extract the archive into the server root folder (where
RustDedicatedorRustDedicated.exeis). Thecarbonfolder from the archive has to end up directly in the server root, and so do the files from the root of the archive: on Linuxlibdoorstop.soandcarbon.sh, on Windowswinhttp.dllanddoorstop_config.ini. - Linux only: Carbon is loaded through environment variables. In the server's start script, source the
carbon/file before startingtools/ environment. sh RustDedicated(details in the VPS guide). On a game host, the provider takes care of this; if they don't support Carbon, it won't load. - Start the server. On start, Carbon downloads updates for your Rust version and creates subfolders for plugins, configs and logs inside the
carbonfolder.
On your own Linux VPS:
curl -fL -o /opt/rust/carbon.tar.gz https://github.com/CarbonCommunity/Carbon/releases/download/production_build/Carbon.Linux.Release.tar.gz
tar -xzf /opt/rust/carbon.tar.gz -C /opt/rust/servercurl -fL -o /opt/rust/carbon.tar.gz …– downloads the stable (production) Carbon build for Linux.tar -xzf … -C /opt/rust/server– extracts (-x) the gzip-compressed (-z) archive from the file (-f) into the server folder (-C).
Verification#
Oxide
Watch the console during startup. You'll see lines about Oxide and its extensions loading.
Enter this in the server console:
text oxide.versionYou'll see the version and branch, for example:
Outputtext Oxide.Rust Version: 2.0.<VERSION_NUMBER> Oxide.Rust Branch: masterIn the in-game F1 console, the output looks different:
Server is running Oxide … and Rust ….Check that an
oxidefolder with apluginssubfolder has appeared in the server root.
Carbon
Watch the console during startup. Carbon prints its loading progress and any update download.
Enter this in the server console:
text c.versionThe command prints the Carbon version and the Rust version it's running on.
Check that the
carbonfolder contains theplugins,configsandlogssubfolders and aconfig.jsonfile.
Where to enter commands: in the server console (on a game host, the Console tab), over RCON (see Admin and RCON), or in the in-game F1 console if you're an admin on the server.
After every Rust update#
Facepunch releases a major Rust update once a month, usually on the evening of the first Thursday of the month (the wipe timer's default time is 19:00 London time, which is 20:00 in Prague). Smaller fixes come out in between. After every game update, a matching framework version has to follow.
Oxide
- Wait until a new Oxide version is out on GitHub (opens in a new window) (usually shortly after the Rust update).
- Stop the server.
- Update Rust (on a game host by updating or reinstalling the game, on a VPS with SteamCMD).
- Upload Oxide again the same way as during installation. The game update overwrites the files in
RustDedicated_with clean copies, which removes Oxide.Data/ Managed - Start the server and check
oxide.version.
The oxide folder with plugins, configuration and data stays; the game update doesn't delete it.
Carbon
- Stop the server.
- Update Rust.
- Start the server. On start, Carbon compares its version with the Rust version and downloads the right build by itself. The developers publish a stable version for the monthly update roughly an hour before the Rust release.
- Check
c.version.
Major updates can break plugins too
A monthly update can change the game code a plugin works with. If a plugin reports a compilation error, check its page for a new version. A monthly update also usually means a new world (force wipe), see Rust server wipe.
Switching from Oxide to Carbon#
Carbon can take over configs, data, translations and permissions from Oxide. The steps, according to the Carbon documentation:
- Stop the server.
- Turn off anything that would install or update Oxide automatically (for example an “install Oxide” option at your provider or a step in your own start script).
- Return the game files to a clean state: verify the game files (SteamCMD with the
validateparameter, “verify files” on a game host, or reinstalling the game without deleting data). This removes the files Oxide overwrote. - Install Carbon as described above.
- Start the server. On its first start, Carbon finds the Oxide leftovers and automatically copies configs, data, translations, users and groups into its own folder. It moves Oxide extensions (the
Oxide.Ext.*.dllfiles inRustDedicated_) toData/ Managed carbon/extensions. - Check
c.versionand usec.pluginsto make sure the plugins have loaded.
If the automatic conversion didn't happen (it only runs once), convert the data by hand:
- copy the contents of the
oxidefolder tocarbon, except theconfigfolder, - copy the contents of
oxide/configtocarbon/configs, - move the
Oxide.Ext.*.dllfiles fromRustDedicated_toData/ Managed carbon/extensions.
After the conversion, you no longer need the oxide folder. Commands with the oxide. and o. prefixes don't work in Carbon; use c. instead (for example c.grant instead of oxide.grant).
Troubleshooting#
The server doesn't recognize the oxide.version command#
Oxide didn't load. The most common causes:
- The files are one level off: you uploaded the whole archive folder and ended up with something like
Oxide.. TheRust/ RustDedicated_ Data/… RustDedicated_Datafolder from the archive has to overwrite the original one in the server root. - You uploaded the Windows version (
Oxide.Rust.zip) to a Linux server, or the other way round. - A game update ran after you uploaded Oxide and overwrote the files (see the next section).
Oxide disappeared after a restart#
The start script or your host updates and verifies the game files on every start. Verification returns the files to a clean state and removes Oxide from them. Turn off the automatic update on start, or upload Oxide again after every update.
The server crashes on start after installing the framework#
The framework version doesn't match the game version. Update both Rust and the framework to the latest versions. For Oxide, download a release published after the latest Rust update. You'll find details in the server log and in the oxide/logs or carbon/logs folder.
Carbon doesn't load on Linux, the server runs as vanilla#
The start script doesn't source carbon/ before starting RustDedicated. Add the source line as described in the VPS guide. The Carbon documentation notes that some environments (mainly Docker) also need export TERM=xterm.
I have both Oxide and Carbon installed#
The two frameworks can't work together. Stop the server, verify the game files (validate), keep only one of them and follow the Switching from Oxide to Carbon section.
A plugin works on Oxide but not on Carbon#
Make sure you have the latest version of both the plugin and Carbon. You'll find the error output in the console and in carbon/logs. If the error persists, report it to the plugin author or the Carbon community and include the output.
I don't want the server in the Modded tab#
In Carbon, c.whymodded prints why the server is marked as modded, and c.gocommunity makes the changes needed for the Community tab. In Oxide, the flag is controlled by the "Modded" option in oxide/oxide.config.json. If your plugins change gameplay, though, keep the server in Modded.
Summary
- A framework (Oxide or Carbon) is required for plugins. Players don't install anything.
- Oxide is the most widespread; Carbon runs the same plugins, updates itself and has built-in tools.
- Only one framework can be on a server.
- Oxide goes into the server root via the
RustDedicated_Datafolder, Carbon as thecarbonfolder (plusenvironment.shon Linux). - Verification:
oxide.versionorc.version. - Upload Oxide again after every Rust update; Carbon updates itself.
Further reading#
- Oxide: installation (official documentation) (opens in a new window)
- Oxide.Rust – releases on GitHub (opens in a new window)
- Carbon: installation (opens in a new window)
- Carbon: porting from Oxide (opens in a new window)
- Carbon on the Facepunch wiki (opens in a new window)
- Rust plugins on umod.org (opens in a new window)