How to Install Oxide/uMod Plugins on Your Rust Server
From vanilla to modded: switch to Oxide, upload your first plugins, edit their config and control who can use them with permissions.
What is Oxide/uMod?
Oxide (also known as uMod) is the framework that makes it possible to run plugins on a Rust server. A Rust plugin is a .cs file - a piece of C# code - and without Oxide there is nothing to load it.
With plugins you can add shops, kits, zones, clans, anti-cheat, PvE rules and just about anything else Rust cannot do out of the box.
Carbon as an alternative: Carbon is a newer framework that runs most Oxide plugins unchanged and uses the
carbon/folder instead ofoxide/. You cannot run both at the same time. If you already run Oxide with a handful of plugins there is no reason to switch. This guide covers Oxide.
Step 1 - Switch to the Oxide build of the server
A plain vanilla Rust server cannot run plugins.
- Log in to the Potionhost control panel and select your Rust server.
- Stop the server.
- Go to the Startup tab and switch to the Oxide build.
- Start the server again and let it finish installing.
Verify in Console:
oxide.version
If you get a version number back, Oxide is running. If you get "unknown command", the server is still vanilla.
Step 2 - Download your plugins
| Source | Note |
|---|---|
| uMod | The official free repository with all the classics |
| Codefling | Large selection of both free and paid plugins |
| Lone.Design | Mainly paid premium plugins |
Always check that the plugin is updated for the current Rust version, and read the description - many plugins require another plugin to work.
Important: A plugin is code with full access to your server. Only download from known sources - never
.csfiles from random Discord servers.
Step 3 - Upload the plugin
- Open Files in the control panel.
- Go to the
oxide/plugins/folder. - Upload the
.csfile directly into the folder.
Oxide watches the folder and compiles the plugin automatically - you normally do not need to restart. Watch the console for a line like:
Loaded plugin PluginName v1.2.3 by Developer
If you get an error instead, the exact line number is in the message - see the troubleshooting section.
Step 4 - Configure the plugin
The first time a plugin loads, it creates its own files:
| Folder | Contents |
|---|---|
oxide/config/ |
Plugin settings as .json |
oxide/data/ |
Stored data such as player data and zones |
oxide/lang/ |
Messages and texts you can translate |
oxide/logs/ |
Errors and log files per plugin |
To change a setting:
- Open
oxide/config/PluginName.jsonunder Files. - Edit the value and save.
- Reload the plugin from the console:
oxide.reload PluginName
JSON is picky: one missing comma or quotation mark and the plugin refuses to load. If you delete the config file and reload, a fresh default file is generated.
Step 5 - Grant permissions
Most plugins only work once someone has been given access. Oxide has two default groups - default and admin - and you can create your own.
| Command | What it does |
|---|---|
oxide.grant user PLAYER permission |
Grants the permission to one player |
oxide.grant group vip permission |
Grants the permission to a whole group |
oxide.group add vip |
Creates the vip group |
oxide.usergroup add PLAYER vip |
Puts a player in the group |
oxide.show perms |
Lists every available permission |
oxide.revoke user PLAYER permission |
Removes the permission again |
You can use either a player name or a SteamID64. SteamID is safest, since names can change.
Useful console commands
| Command | What it does |
|---|---|
oxide.version |
Shows which Oxide version the server runs |
oxide.plugins |
Lists every loaded plugin |
oxide.load PluginName |
Loads a plugin |
oxide.unload PluginName |
Disables a plugin without deleting it |
oxide.reload PluginName |
Reloads after a config change |
oxide.reload * |
Reloads every plugin |
After a Rust update
Rust force wipes and updates on the first Thursday of every month. When that happens:
- Oxide has to be updated before the server starts correctly.
- Some plugins are broken until their developer updates them.
Check the console after the first startup and temporarily disable any plugin that is spamming errors with oxide.unload. That way the rest of the server keeps running.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
oxide.version is unknown |
The server is not running Oxide | Switch to the Oxide build under Startup |
| The plugin does not appear | The file is misplaced or is not a .cs file |
Put it directly in oxide/plugins/ |
| A compile error in the console | The plugin does not match the current version | Download the latest release of the plugin |
| The plugin loads but does nothing | A missing permission | Grant it with oxide.grant |
| Config changes have no effect | The plugin was not reloaded | Run oxide.reload PluginName |
| The plugin will not load after editing | Invalid JSON in the config file | Delete the config file and reload |
| Every plugin suddenly fails | Rust updated, Oxide did not | Update Oxide and restart |
Good advice
- Install one plugin at a time and watch the console in between.
- Copy
oxide/config/andoxide/data/before a wipe so you do not lose your setup. - Fewer, well-chosen plugins perform better. Lots of heavy plugins is a classic cause of low server FPS.
- Delete the old
.csfile when you update a plugin.
Want to use plugins to run a PvE server? Continue with How to Enable PvE on Your Rust Server. Need the commands for day-to-day running, see the Rust Admin Commands List.