SamsCreations
SamsCreations

How I'd set up a Minecraft server from scratch today

Server software, the plugins every server needs, permissions, performance, backups and Bedrock players. The stuff I wish someone had told me before my first server.

9 min readPosted

Most of the people who buy my resources already run a server. But a surprising number of them are setting one up for the first time, and the questions I get usually aren't about my plugins at all. They're about everything around them: which server software, which plugins, why it lags, why permissions don't work.

So this is the post I'd send to someone starting today. It's not the only way to do it, but it's a setup that works, doesn't fight you later, and leaves room to grow.

It's long. Grab a coffee.

Start with Paper

There are a lot of server jars out there. For a normal plugin server, just use Paper.

Spigot still works, and almost every plugin made for Spigot runs on Paper too. But Paper is faster, fixes a lot of exploits and bugs out of the box, and gives you way more settings for performance. Purpur is a fork of Paper with even more options. It's great if you know you want those options, but you don't need it to start.

SoftwarePluginsPerformanceUse it when
VanillaNoBasicYou only want plain survival with friends
SpigotYesOKA plugin really only works on Spigot (rare)
PaperYesGoodAlmost always, it's the default choice
PurpurYesGoodYou want Paper plus extra gameplay settings

The other thing to get right early is Java. Recent Minecraft versions need Java 21. If the server refuses to start with an error about class file versions, that's almost always the reason. Most hosts let you pick the Java version in the panel.

When you start Paper for the first time it creates a bunch of files and stops because you haven't accepted the EULA. Open eula.txt, set it to true, and start it again.

Pick a version and stick to it

It's tempting to run the newest version the day it comes out. Unless your whole server is about the new update, wait a bit. Plugins need time to update, and running a version half your plugins don't support yet is a miserable way to launch.

The opposite is a trap too. Running a really old version because one plugin never updated means you'll slowly lose every other plugin. If a plugin is dead, look for a replacement instead of freezing your server in time.

Whatever you pick, check that your important plugins support it before you build anything.

The plugins almost every server needs

You can build a server out of hundreds of plugins. Don't. Start with a small base and add things when you actually need them. This is the base I'd use on pretty much any server:

PluginWhat it doesWhy you want it
LuckPermsPermissions, ranks and prefixesEvery other plugin hooks into it
EssentialsX/spawn, /home, /tpa, /msg, kitsThe basics players expect; turn off what you don't need
VaultLets plugins share economy and permissionsYou'll rarely touch it, but lots of plugins need it
PlaceholderAPIShows rank, balance, ping and more in other pluginsNeeded for the tab list, scoreboard and menus
WorldGuard or a claims pluginProtects spawn, or lets players claim landStops griefing before it starts
A backup pluginSaves copies of your worlds and configsMore on that later, because it's the one people skip

On top of that, something for the tab list and scoreboard (TAB is a popular one), and something for menus if you want clickable GUIs (DeluxeMenus, for example). Then whatever your server is actually about: jobs, shops, quests, minigames.

A good rule: if you can't say in one sentence why a plugin is on your server, it probably shouldn't be.

Permissions, done properly

This is where most new servers get messy. The fastest way to "fix" a permission problem is to give everyone * or make everyone an operator. Please don't. It works until someone finds a command you didn't know existed.

The clean way is to build ranks with LuckPerms that inherit from each other:

  • default, which every player gets automatically
  • vip (or whatever your first rank is), which inherits from default and adds a few things
  • mod, then admin, each inheriting from the one below

That way you never set the same permission twice. If every player should be able to use /spawn, you give it to default once and every rank above gets it too:

/lp group default permission set essentials.spawn true
/lp group vip parent add default

LuckPerms also has a web editor (/lp editor), which is much nicer than typing commands once you have more than a handful of permissions.

Keep operator for yourself and maybe one other person you really trust, and actually use permissions for staff.

Performance: what actually matters

Lag is the number one thing players notice and the number one thing owners blame on the wrong cause. A few things make the biggest difference.

View distance and simulation distance. In server.properties, view-distance is how far players can see, and simulation-distance is how far around them the world is actually ticking (crops growing, mobs moving, redstone running). Simulation distance costs much more. Players care a lot more about seeing far than about cows moving far away.

SettingWhat it controlsCostA sensible start
view-distanceHow far players can see (in chunks)Medium8 to 10
simulation-distanceHow far the world keeps ticking around playersHigh6

These are starting points for a survival server, not magic numbers. Lower them if the server struggles, raise them if it has room to spare.

Pre-generate the world. Generating new chunks is one of the heaviest things a server does. If players explore a fresh world, the server is generating terrain the whole time. A plugin like Chunky generates the area in advance, so when players get there it's just loading. Set a world border, pre-generate inside it, and the difference is huge.

Startup flags. How the server is started matters more than you'd think. Most people use Aikar's flags, a well-known set of Java settings for Minecraft servers. Many hosts already use them. If you run the server yourself, look them up and use them.

Measure before you change things. When it lags, don't guess. spark is a profiler plugin that shows you exactly what's using the server's time. Nine times out of ten it's one specific thing: a huge mob farm, a plugin doing something every tick, or an entity count that got out of hand.

What players noticeLikely causeWhat to check first
Lag spikes while exploringNew chunks being generatedPre-generate the world with Chunky
Constant lag, everywhereToo many entities or a heavy pluginRun a spark profile
Lag around one baseA big farm or redstone machineEntity counts and hoppers in that area
Lag that grows over hoursA plugin leaking memoryRestart times, then spark's memory view
Rubber-banding, but good TPSThe player's connection or the host's networkPing, and the host's status page

Paper also has its own config files (paper-global.yml and paper-world-defaults.yml) with lots of settings for entities, item merging, redstone and so on. They're worth reading once you know what's actually causing the lag, not before.

And about RAM: more isn't always better. A small server doesn't get faster with 16 GB. Give it what it needs for your player count and plugins, and spend the rest of your budget on a host with a fast CPU. Minecraft cares much more about single-core speed than about the number of cores or gigabytes.

Backups, the boring part that saves you

Every server owner eventually has the day where something breaks. A plugin corrupts a file, someone griefs spawn, an update goes wrong, a host has a disk failure. With backups, it's an annoying afternoon. Without them, it can be the end of the server.

A few rules I'd follow:

RuleWhy
Back up automaticallyManual backups stop happening after the second week
Keep more than oneIf the problem started three days ago, yesterday's backup has it too
Keep a copy somewhere elseA backup on the same machine doesn't help if that machine dies
Try restoring oneA backup you've never restored is a guess

And make a backup before every big change: updating Minecraft, updating a major plugin, or installing a big config. It takes a minute and saves you from guessing what changed.

Letting Bedrock players in

Lots of players are on phones, consoles and Windows Bedrock. Geyser lets them join your Java server, and Floodgate lets them join without needing a Java account.

It works really well for most things, but keep in mind that Bedrock is a different game underneath. Some things look or work differently. Custom menus and resource packs made for Java don't carry over as they are, so Bedrock players need their own pack for those. If your server leans on custom textures, check what Bedrock players will actually see before you advertise Bedrock support.

Making it feel like your server

Once the base works, this is the fun part, and it's what makes players stay. A few things go a long way:

  • A good first five minutes. Where does a new player spawn? Do they know what to do? A clear spawn with a couple of signs or an NPC beats a wall of rules.
  • A consistent look. Menus, chat, the tab list and the scoreboard all in the same style. It's the difference between "a server with plugins" and a server that feels designed.
  • Less, but polished. Five features that work well beat twenty that are half set up.

This is where premade configs and resource packs help a lot, because getting menus and HUDs to look good from scratch takes ages. But even without them, picking a few colors and sticking to them everywhere makes a big difference.

A rough order to do it in

If you want a checklist:

  1. Paper on a supported version, with Java 21 and proper startup flags.
  2. LuckPerms, EssentialsX, Vault and PlaceholderAPI.
  3. Ranks set up with inheritance, no * permissions for players.
  4. A world border and a pre-generated world.
  5. Automatic backups, with a copy somewhere else.
  6. Protection for spawn.
  7. The plugins your server is actually about.
  8. Tab list, scoreboard, menus, and making it look like yours.
  9. Geyser and Floodgate if you want Bedrock players.

Then open it to a few friends before you open it to everyone. They'll find the broken stuff in an evening.

If you get stuck on any of this, come ask on Discord. Even if it's not about one of my resources, I'm happy to point you in the right direction.