LochStudios  /  Help Centre  /  Game Servers  /  Add plugins (Paper/Spigot) or mods to a Minecraft server

Add plugins (Paper/Spigot) or mods to a Minecraft server

Switch a vanilla Minecraft Java server on your LochStudios KVM VPS to Paper for plugins, or Fabric or Forge for mods.

Updated

This sits on top of a vanilla Minecraft Java Edition server on a LochStudios KVM VPS. Same minecraft user, same /home/minecraft/server directory, same TCP port 25565. You swap the jar, then drop files into plugins/ or mods/.

Need that vanilla server first? Set up a Minecraft Java Edition server on Linux. Need a VPS? See VPS. On a dedicated server, open a support ticket and we will size the box with you.

This is not Minecraft Bedrock, and it is not a cPanel job.

Pick plugins or mods (not both)

PathWhat players installTypical use
Paper (plugins)Vanilla Minecraft Java onlyChat, economy, claims, anti-grief, permissions
Fabric or Forge / NeoForge (mods)The same loader and the same mods as the VPSNew blocks, dimensions, gameplay overhauls

Pick one process. A Paper plugin .jar does not load on Fabric. A Fabric or Forge mod does not load on Paper. Hybrid "plugins plus mods" jars are a separate, brittle stack. We do not start there.

Paper is the plugin server we recommend. It speaks the Bukkit / Spigot plugin API and performs better than building Spigot yourself. You do not need BuildTools.

Fabric is the lighter mod loader. Forge and NeoForge have the larger classic mod lists. Every player must match the loader and the Minecraft version.

A vanilla world usually loads on Paper of the same Minecraft version. Paper extra data can make a later return to vanilla painful. Do not convert a Paper world to Fabric or Forge. Restore the backup from before you changed jars if you want a different path.

Before you start

  1. Sign in at the portal, open the VPS service, and keep that page open. Copy the IPv4 from there. Do not guess a hostname.
  2. Connect with a sudo user, or root on a fresh box.

- Connect to your VPS via SSH from macOS or Linux
- Connect to your VPS via SSH from Windows

  1. Confirm Java still matches the Minecraft version you will run. Current official jars (26.x) need Java 25. Older 1.21.x needs Java 21. Table and install steps: Set up a Minecraft Java Edition server on Linux.
  2. Prefer a systemd unit already in place: Run a Minecraft server as a systemd service (auto-start). That unit expects User=minecraft, WorkingDirectory=/home/minecraft/server, and (for Paper) server.jar.

If SSH from your computer will not connect, open the console on the same VPS service. That session does not need port 22 from your network.

Plugins and mods use more RAM than vanilla. Keep -Xmx below the VPS size so the OS still has room. Raise the heap only when free -h still shows spare RAM. A 2 GB VPS is not enough once you add a plugin pack.

Step 1: Back up the world, then stop the process

Stop first so files are not mid-write.

sudo systemctl stop minecraft

If you still start the jar in SSH instead of systemd, type stop in that console and wait for the process to exit. Do not use Ctrl+C as your usual stop.

Copy the world (and the Nether / End folders if they exist):

sudo -u minecraft cp -a /home/minecraft/server/world /home/minecraft/server/world.backup
sudo -u minecraft cp -a /home/minecraft/server/server.jar /home/minecraft/server/server-vanilla.jar
# Only if these directories already exist:
sudo -u minecraft cp -a /home/minecraft/server/world_nether /home/minecraft/server/world_nether.backup
sudo -u minecraft cp -a /home/minecraft/server/world_the_end /home/minecraft/server/world_the_end.backup

A dated tarball of the whole tree is better before a big change: Back Up and Restore a Game Server World or Save.

Path A: Paper (plugins)

Players keep using ordinary Minecraft Java. Only the VPS changes.

A1: Download Paper

  1. On your computer, open papermc.io/downloads/paper.
  2. Pick the same Minecraft version as your world (current Paper tracks 26.x; older worlds stay on their 1.21.x line).
  3. Copy the direct .jar URL for that build. The hash in the URL changes every build. Do not reuse an old one from a blog.
sudo -u minecraft wget -O /home/minecraft/server/paper.jar 'PASTE_THE_JAR_URL'
ls -lh /home/minecraft/server/paper.jar

The file should be tens of megabytes. A few-kilobyte file is an HTML error page, not the jar. Delete it and copy the URL again.

A2: Make it server.jar

sudo -u minecraft mv /home/minecraft/server/paper.jar /home/minecraft/server/server.jar
sudo chown -R minecraft:minecraft /home/minecraft/server

eula.txt from the vanilla setup still applies. Do not recreate it with sudo -u minecraft echo ... > eula.txt. The > redirect runs as your shell user and can leave a file minecraft cannot write.

If you ever need to write it again:

printf 'eula=true\n' | sudo -u minecraft tee /home/minecraft/server/eula.txt

A3: Start once so plugins/ appears

If the systemd unit already points at server.jar:

sudo systemctl start minecraft
sudo journalctl -u minecraft -f

Wait until the log says it is done, then Ctrl+C to leave the log view, and:

sudo systemctl stop minecraft

You should now have /home/minecraft/server/plugins/.

No unit yet? Start it once by hand, then install the unit before you walk away:

sudo -u minecraft -H bash -c 'cd /home/minecraft/server && java -Xmx4G -Xms4G -jar server.jar nogui'

Type stop when it is done. Match -Xmx / -Xms to the RAM table in the vanilla article.

A4: Add plugin jars

Put only .jar files in plugins/. Common catalogues:

Match the plugin's Minecraft version (or the range it claims) to your Paper version. Read the plugin page for dependencies. WorldGuard needs WorldEdit. A lot of economy plugins need Vault.

Download the jar on your computer, confirm the size looks like a real jar (not a 2 KB HTML page), then copy it up. Replace USER and the IPv4 with the sudo user and the address on the VPS in the portal:

scp worldguard.jar USER@YOUR.IPV4.HERE:/tmp/worldguard.jar

On the VPS:

sudo mkdir -p /home/minecraft/server/plugins
sudo mv /tmp/worldguard.jar /home/minecraft/server/plugins/worldguard.jar
sudo chown minecraft:minecraft /home/minecraft/server/plugins/worldguard.jar

Repeat for each plugin. If a project publishes a direct .jar URL you can wget that URL as the minecraft user into plugins/. Do not wget a project homepage or a /latest/download page that returns HTML.

A5: Restart and read the console

sudo systemctl start minecraft
sudo journalctl -u minecraft -n 80

Look for each plugin enabling without an error. Most plugins write a config folder under plugins/ on first run.

Do not type reload or /reload in the game console. That command leaves plugins in a half-loaded state. Change a config, then:

sudo systemctl restart minecraft

A6: Edit a plugin config

Example after EssentialsX has created its folder:

sudo -u minecraft nano /home/minecraft/server/plugins/Essentials/config.yml

Save, then sudo systemctl restart minecraft.

Sensible first plugins

PluginRoleNotes
LuckPermsGroups and permissionsSet this up before you hand out /op
EssentialsXHomes, kits, chat basics, spawnOften paired with Vault
VaultEconomy / permissions bridgeInstall it when another plugin asks for it
WorldEditSelection and terraformingRequired by WorldGuard
WorldGuardRegion claims and protectionNeeds WorldEdit
CoreProtectBlock logging and rollbackDisk and CPU grow with activity

You do not need all of these. Add one, restart, confirm the console is clean, then add the next.

Path B: Fabric or Forge (mods)

Every player must install the same Minecraft version, the same loader, and the same mods. If that is more than you want to support, stay on Paper.

Use a vanilla world backup. Do not point Fabric or Forge at a world that has already been running on Paper.

B1: Choose a loader

  • Fabric: lighter, many performance and QoL mods. Worked example below.
  • Forge or NeoForge: larger classic catalogues (new biomes, magic, tech packs).

Do not mix Fabric mods and Forge mods in one folder.

B2: Install Fabric

  1. On your computer, open fabricmc.net/use/server.
  2. Select the Minecraft version that matches the world you intend to load.
  3. Copy the Executable Server (.jar) URL. Loader and installer numbers change. Do not reuse an old fabric-installer-0.11.2 command from a tutorial.
sudo systemctl stop minecraft
sudo -u minecraft wget -O /home/minecraft/server/fabric-server-launch.jar 'PASTE_THE_JAR_URL'
ls -lh /home/minecraft/server/fabric-server-launch.jar

Again, tens of megabytes (or a launcher that then pulls the rest on first run). A tiny HTML file is wrong.

The first start downloads the matching vanilla server into this directory. Keep eula.txt as eula=true and owned by minecraft.

Create the mods folder before you start:

sudo -u minecraft mkdir -p /home/minecraft/server/mods
sudo chown -R minecraft:minecraft /home/minecraft/server

B3: Point systemd at the Fabric jar

The Minecraft unit from the vanilla article launches server.jar. Fabric's process is fabric-server-launch.jar. Edit the unit:

sudo nano /etc/systemd/system/minecraft.service

Set ExecStart to your heap size and the Fabric jar, for example:

ExecStart=/usr/bin/java -Xmx4G -Xms4G -jar fabric-server-launch.jar nogui

Keep User=minecraft and WorkingDirectory=/home/minecraft/server. Then:

sudo systemctl daemon-reload
sudo systemctl start minecraft
sudo journalctl -u minecraft -n 80

B4: Add mods

Catalogues:

Each file must match three things: Minecraft version, loader (Fabric vs Forge), and any required library mod (almost every Fabric pack needs Fabric API). Drop .jar files into /home/minecraft/server/mods/, fix ownership, restart systemd.

sudo chown minecraft:minecraft /home/minecraft/server/mods/*.jar
sudo systemctl restart minecraft
sudo journalctl -u minecraft -n 80

A crash on startup is usually a version mismatch or a missing library mod. Read the first ERROR in that journal, not the last line.

B5: Give players the same pack

Players cannot join a Fabric or Forge server with a vanilla client.

  1. Install Prism Launcher (or another instance manager) on each PC.
  2. Create an instance for the same Minecraft version and loader as the VPS.
  3. Copy the jars from /home/minecraft/server/mods/ into that instance's mods/ folder. Include Fabric API (or the Forge / NeoForge equivalents).
  4. Launch that instance, then add the server as YOUR.IPV4.HERE:25565.

Changing one mod on the VPS means updating every player.

Forge or NeoForge instead

Download the official installer from the Forge or NeoForge site for your Minecraft version. On the VPS, as minecraft, run it with --installServer in /home/minecraft/server. That writes a libraries/ tree and a run.sh (or equivalent) instead of a single server.jar.

Point systemd ExecStart at that run.sh, or open a support ticket and we will wire the unit with you. Tell us the VPS service, the Minecraft version, and whether you chose Forge or NeoForge. Do not put the password in the ticket.

Worlds, RAM, and mixing

  • Paper of the same version can load a vanilla world. Take the backup in Step 1 first.
  • Going back to vanilla from Paper can fail or drop Paper-only data. Keep server-vanilla.jar and the world backup.
  • Fabric / Forge belong on a vanilla (or same-loader) world, not on a Paper world.
  • Too many plugins or mods will hitch the tick loop. Lower view-distance and max-players in server.properties before you keep adding jars.
  • Watch RAM and CPU with Monitor Server Resources. If the kernel is swapping, add swap: Add Swap Space to Your VPS, or raise the VPS size from VPS.

Players still connect to the IPv4 on the VPS in the portal, port 25565. Firewall recap: Open the Right Firewall Ports for Your Game Server.

If it will not start, or a plugin or mod fails

The new jar is a few kilobytes. The download was a web page. Get a fresh URL from Paper or Fabric and replace the file.

Unsupported class file or a Java version error. Java does not match that Minecraft line. Check java -version against the table in the vanilla article.

A plugin is listed as disabled. Read sudo journalctl -u minecraft -n 100. Usual causes: wrong Minecraft version, a missing dependency jar, or a second copy of the same plugin in plugins/.

reload made things worse. Stop using it. sudo systemctl restart minecraft is the clean path.

Fabric or Forge crashes during Loading mods. One jar is for the other loader, or for another Minecraft version. Remove the last jar you added and retry.

Players on a modded server see a registry / missing-mod disconnect. Their instance does not match the VPS pack. Sync mods/ again.

The VPS feels slow after you added jars. Remove the heaviest plugin or mod, lower view-distance, and confirm -Xmx is not the entire VPS RAM.

Still stuck? Open a support ticket. Tell us the VPS service, Paper vs Fabric vs Forge, the Minecraft version, and java -version. Do not send the password.

What to do next

A step is unclear? Open a support ticket and we will walk through the VPS and the jar layout with you.


Was this article helpful?

← Back to Game Servers