Set up your Minecraft crossplay server with Java + Bedrock step by step: where to host it, how much RAM you need, what software to use, and how to enable Geyser and Floodgate.
Java, Bedrock, and why you'll want crossplay
Minecraft has two editions that normally don't play together: Java (the classic PC version, with plugins and mods) and Bedrock (mobile, consoles, and the Windows app). Crossplay means setting up a single server where both can connect — your PC friends and your mobile or console friends, all in the same world. This is done with two plugins, Geyser and Floodgate, which act as a bridge.
Where to host it: your PC, a VPS, or managed hosting
You can run it on your own PC to test things out, but there's a major catch: it's only available when your PC is on and you're home. The moment you shut it down, your friends are locked out.
From experience, for a real server a VPS or dedicated server is the way to go: it's up 24/7 and doesn't depend on your machine. Two options:
Managed Minecraft hosting (the easiest path): they handle the panel setup for you. I've tried PebbleHost, Sparked Host, and Shockbyte — all three have worked well for me.
A VPS (more control, slightly more technical): you install everything yourself on Linux. I'm currently running one this way and it works just as well.
Running it at home is fine for tinkering, but if you want people to connect whenever they feel like it, go VPS or dedicated.
How much RAM you actually need (without going overboard)
For playing with friends, depending on your group size, around 4 GB is more than enough. If you're adding
. You don't need 16–32 GB for a friend group server; that's for large networks with tons of players and plugins.
The software: Paper (or better yet, Purpur or Pufferfish)
Don't use the official vanilla server: it performs worse and doesn't support plugins. The standard is Paper, an optimized fork that performs significantly better and accepts plugins (and you're going to need them, starting with Geyser and Floodgate).
And I'll take it a step further: I personally recommend Purpur or Pufferfish, Paper forks that are even more optimized with more configuration options. Both are 100% compatible with Paper plugins.
Step by step
1. Java. Have Java installed on the machine (the version depends on which Minecraft version you're running; modern versions require Java 21). With managed hosting this is already handled. 2. Download the server. Grab the `.jar` file for Purpur/Pufferfish/Paper from their official website, for whichever Minecraft version you want, and drop it into an empty folder. 3. First run and EULA. Start it with something like `java -Xms4G -Xmx4G -jar purpur.jar nogui` (`-Xmx4G` is the max RAM; adjust it to match your plan). A `eula.txt` file will be created: open it, set `eula=true`, and restart. It'll generate the world. 4. server.properties. Pay attention to `server-port=25565` (the recommended Java port), `online-mode`, and `view-distance` / `simulation-distance`.
Enabling crossplay: Geyser + Floodgate
1. Download Geyser (Spigot/Paper version) and Floodgate, drop them into the `plugins` folder, and restart the server. 2. Geyser opens the door for Bedrock players (mobile, console, Windows app). By default it listens on UDP port 19132, the standard Bedrock port. 3. Floodgate lets those players join without needing a Java account, just their Bedrock account. Their usernames show up with a prefix (a period by default) to avoid clashing with Java players; you can change this in Floodgate's config.
With that set up, a friend on mobile adds your server with your IP and port `19132`, and they're in the same world as the PC players.
Port forwarding (or skipping it entirely)
For people outside your network to connect, you need to forward two ports to the server: 25565/TCP for Java (the recommended one) and 19132/UDP for Bedrock. If you're on hosting or a VPS, this is usually already sorted out (they give you an IP and that's it). If you're running it at home, log into your router and set up port forwarding for both ports to your PC's local IP.
Don't want to or can't touch the router? A tunnel like playit.gg gives you a public IP without opening anything, or just go with managed hosting (PebbleHost, Sparked, Shockbyte…) and skip the whole hassle.
Performance: keeping lag in check
The typical mistake is blaming RAM. That's almost never the issue: what actually kills server performance is players exploring and generating new chunks — every time someone ventures into uncharted territory, the server has to generate terrain on the fly, and that's where it chokes. Two tricks I always apply:
1. Lower `simulation-distance` (to 4–6, for example). This is the distance at which the server simulates the world (mobs, redstone, crops) and it's one of the biggest resource hogs; dropping it makes a huge difference and you'll barely notice it while playing. 2. Pre-generate chunks with a plugin like Chunky: generate terrain ahead of time up to a certain radius, so when your friends explore it's already there and the server doesn't have to generate it on the fly. No more stutters when traveling.
If you're using Purpur or Pufferfish, you'll also have more fine-grained settings in their configs to squeeze out even more performance.
Plugins and protection from day one
You've already got Geyser and Floodgate; from there, add plugins based on what you want (ranks, economy, protection…). A security note from experience:
If you're playing with friends only, often you don't need anything extra: you trust each other and that's it. That's how I run things with my group.
If strangers are going to join, then yes: at minimum add a protection or region logging plugin so you can see who touched what and roll back a grief with a command instead of rebuilding half your base by hand.
I'll cover the must-have plugins — LuckPerms for ranks, protection, economy… — in a separate guide.
FAQ
Can Java and Bedrock players play together on the same server? Yes. With Geyser + Floodgate, PC players (Java) and mobile or console players (Bedrock) can all join the same world.
Do mobile or console players need a Java account? No. Floodgate lets them join with just their Bedrock account, no Java purchase needed.
How much RAM do I need? For a friend group server, around 4 GB is plenty; if you're adding mods, around 8 GB.
What ports do I need to open?25565 (TCP) for Java and 19132 (UDP) for Bedrock.
Can I set it up without opening ports on the router? Yes: with a tunnel like playit.gg or with managed hosting that already gives you the IP.
Paper, Purpur, or Pufferfish?Paper is the standard and works great. Purpur and Pufferfish are Paper forks that are even more optimized with more options; either is a solid choice.