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.
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.
| Software | Plugins | Performance | Use it when |
|---|---|---|---|
| Vanilla | No | Basic | You only want plain survival with friends |
| Spigot | Yes | OK | A plugin really only works on Spigot (rare) |
| Paper | Yes | Good | Almost always, it's the default choice |
| Purpur | Yes | Good | You 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:
| Plugin | What it does | Why you want it |
|---|---|---|
| LuckPerms | Permissions, ranks and prefixes | Every other plugin hooks into it |
| EssentialsX | /spawn, /home, /tpa, /msg, kits | The basics players expect; turn off what you don't need |
| Vault | Lets plugins share economy and permissions | You'll rarely touch it, but lots of plugins need it |
| PlaceholderAPI | Shows rank, balance, ping and more in other plugins | Needed for the tab list, scoreboard and menus |
| WorldGuard or a claims plugin | Protects spawn, or lets players claim land | Stops griefing before it starts |
| A backup plugin | Saves copies of your worlds and configs | More 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 automaticallyvip(or whatever your first rank is), which inherits fromdefaultand adds a few thingsmod, thenadmin, 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.
| Setting | What it controls | Cost | A sensible start |
|---|---|---|---|
view-distance | How far players can see (in chunks) | Medium | 8 to 10 |
simulation-distance | How far the world keeps ticking around players | High | 6 |
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 notice | Likely cause | What to check first |
|---|---|---|
| Lag spikes while exploring | New chunks being generated | Pre-generate the world with Chunky |
| Constant lag, everywhere | Too many entities or a heavy plugin | Run a spark profile |
| Lag around one base | A big farm or redstone machine | Entity counts and hoppers in that area |
| Lag that grows over hours | A plugin leaking memory | Restart times, then spark's memory view |
| Rubber-banding, but good TPS | The player's connection or the host's network | Ping, 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:
| Rule | Why |
|---|---|
| Back up automatically | Manual backups stop happening after the second week |
| Keep more than one | If the problem started three days ago, yesterday's backup has it too |
| Keep a copy somewhere else | A backup on the same machine doesn't help if that machine dies |
| Try restoring one | A 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:
- Paper on a supported version, with Java 21 and proper startup flags.
- LuckPerms, EssentialsX, Vault and PlaceholderAPI.
- Ranks set up with inheritance, no
*permissions for players. - A world border and a pre-generated world.
- Automatic backups, with a copy somewhere else.
- Protection for spawn.
- The plugins your server is actually about.
- Tab list, scoreboard, menus, and making it look like yours.
- 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.
