On most games, yes: you can run a mod that is not in our catalog, including one you are building yourself. Upload its files into your game's mod folder…
On most games, yes: you can run a mod that is not in our catalog, including one you are building yourself. Upload its files into your game's mod folder using the Files card or SFTP, restart, and it loads. Uploaded mods are yours: they survive restarts, server moves, and are included in your backups, and installing or removing catalog mods never touches them. A few games need one extra step, and a handful can't load hand-placed mods at all; both lists are below.
Stop your server (uploads mid-session can be picked up half-written).
Open the Files card on your server and drag the mod's files into the folder from the table below, or connect with SFTP if you prefer a desktop client. SFTP is the comfortable option while you are actively developing a mod and re-uploading often.
Start the server. Hand-placed mods load on start, never mid-session.
To remove a mod later, delete its files from the same folder and restart. Catalog mods stay managed from the Mods tab; the two never interfere with each other.
| Game | Upload to | Notes |
|---|---|---|
| Minecraft (Java) | /mods/ (Fabric, Forge, NeoForge) or /plugins/ (Paper, Purpur) | Drop the .jar in; it loads on the next start. |
| Minecraft (Bedrock) | /development_behavior_packs/ and /development_resource_packs/ | Needs one extra step, see below. |
| Project Zomboid | /Zomboid/mods/ | Needs one extra step, see below. |
| DayZ | /@YourModName/ at the top level | We copy its key into keys/ for you. Every folder and file name inside the mod must be lowercase, or DayZ on Linux won't find them. |
| Valheim | /BepInEx/plugins/ (also /BepInEx/patchers/) | The BepInEx loader must be enabled on your server. |
| Rust | /install/rust/oxide/plugins/ | Drop .cs plugins in; the Oxide loader must be enabled. See Rust: Oxide plugins. |
| Palworld | /install/palworld/Pal/Content/Paks/~mods/ (.pak mods) | Blueprint paks go in /Paks/LogicMods/; UE4SS Lua mods in /Pal/Binaries/Linux/Mods/ need the UE4SS loader from the Mods tab. |
| Terraria (tModLoader) | /.local/share/Terraria/tModLoader/Mods/ | The .tmod file's name must match the mod's internal name, and uploaded mods are always enabled: deleting the file is the off switch. |
| Factorio | /factorio/mods/ | Drop the name_version.zip in; Factorio discovers and enables it itself. |
| FiveM / RedM | /server-data/resources/ | Resources are found and started automatically on every boot. See FiveM: install custom scripts. |
| Satisfactory | /FactoryGame/Mods/ | Keep at least one Mods-tab mod installed; it's what keeps the SML loader on your server. |
| Counter-Strike 2 | /install/counter-strike-2/game/csgo/addons/counterstrikesharp/plugins/ | The CounterStrikeSharp loader must be enabled. |
| Hytale | /mods/ | .zip and .jar mods load on the next start. |
| Windrose | /install/windrose/R5/Content/Paks/~mods/ (.pak mods) | Blueprint paks in /Paks/LogicMods/; UE4SS mods in /R5/Binaries/Win64/ue4ss/Mods/ need the UE4SS loader from the Mods tab. |
Project Zomboid loads only the mods named on the Mods= line of its config. After uploading your mod folder, open /Zomboid/Server/servertest.ini in the Files card and add your mod's ID to the Mods= line (the ID is the id= value in your mod's mod.info file, which is not always the folder name), then restart. Mods installed from the Mods tab keep managing their own entries around yours.
Minecraft Bedrock activates packs per world. After uploading the pack folder, add its pack_id and version (from the pack's manifest.json) to /worlds/<world>/world_behavior_packs.json (or world_resource_packs.json), then restart. Entries you add there are kept across restarts. Careful with the JSON: if the file isn't valid JSON the server refuses to start until you fix or delete it. Full walkthrough in Minecraft Bedrock: add-ons.
Conan Exiles and Don't Starve Together load mods exclusively through their Steam Workshop pipelines, and the folders involved are rebuilt on every start, so hand-placed mod files there disappear by design. Install mods through the Mods tab instead; for a mod of your own, publishing it to the Workshop (visibility can be unlisted) and requesting it via Request a mod is the path. 7 Days to Die, Enshrouded, Core Keeper, and Icarus don't have server-side mod support on Haptic.
Your uploads are safe. Hand-placed mod files ride your backups and survive restarts, updates, and moves between machines. Installing, updating, or removing catalog mods never deletes them.
Updating your mod is up to you. We auto-update Workshop and catalog mods, but a hand-placed mod stays at exactly the build you uploaded until you replace it.
Minecraft: client-only jars are set aside, not loaded. If an uploaded jar declares itself client-only (it would crash a dedicated server), the server moves it to /mods/client-only-disabled/ instead of loading it. Your file is kept there; fix its metadata and move it back.
Loaders come from the Mods tab. On games with a mod loader (Oxide, BepInEx, UE4SS, SML, CounterStrikeSharp), the loader is installed while it's enabled for your server. If you remove the last catalog mod that needs a loader, the loader goes with it and your hand-placed mods quietly stop loading; keep one installed.
Reach us on Discord or at support@haptic.gg. Include your server name, the game, the exact folder you uploaded to, and your server's log from the start where the mod didn't load.
Install mods on your server covers the dashboard catalog flow.
Request a mod gets a public Workshop/CurseForge mod added to the catalog.
Server-side vs client-side mods explains who else needs to install what.
Per-game deep dives: Rust: Oxide plugins, Terraria: tModLoader mods, Minecraft Bedrock: add-ons, FiveM: install custom scripts.