MinecraftGeyserBedrockServer Setup

How to Set Up Geyser on a Minecraft Server (Bedrock + Java Cross-Play)

Step-by-step Geyser and Floodgate setup so Bedrock players can join your Java Minecraft server: install, ports, config, proxies, version compatibility and connection fixes.

LuxuryNodes Team
LuxuryNodes Team

Geyser lets players on Minecraft Bedrock Edition (phones, tablets, consoles, Windows 10/11) join a Minecraft Java Edition server. You install it as a plugin or mod on the Java server, open one UDP port for Bedrock traffic, and optionally add Floodgate so Bedrock players can join without owning Java Edition. A basic setup takes about fifteen minutes; most problems afterwards are port or version issues.

This guide covers what Geyser and Floodgate do, how the two editions connect, the setup flow on Paper, Purpur, Fabric and NeoForge servers, proxy networks, the configuration options that matter, version compatibility, security and how to test the connection.

What Geyser does

Java and Bedrock speak different network protocols. Geyser is a translation layer: it accepts a Bedrock connection, converts every packet to the Java protocol and passes it to the Java server, then translates the responses back. The Java server sees an ordinary Java player. Bedrock players see a normal Bedrock server in their server list.

Because the translation is one-way into a Java server, everything on the server stays Java: plugins, worlds, commands, permissions. Bedrock-only features (behavior packs, Bedrock add-ons) do not apply, and a few Java mechanics look slightly different on Bedrock (some block interactions, inventory layouts, resource packs). For most survival and SMP servers the differences are minor.

Geyser vs Floodgate

Geyser Floodgate
Purpose Translates the Bedrock protocol so Bedrock clients can connect Lets Bedrock players join without a Java (Microsoft/Mojang Java) account
Required? Yes, for any Bedrock player No, but without it every Bedrock player must log in with a Java account they own
Authentication Bedrock players still sign in with their Xbox Live account on their device Verifies the Xbox Live identity and creates a Java-side profile with a prefix (. by default)
Where it runs Server or proxy Same place as Geyser, plus every backend server behind a proxy

Nearly every public server installs both. Geyser alone is enough only if all of your Bedrock players also own Java Edition and are willing to log in with it.

Java + Bedrock architecture

  • Java players connect over TCP to the Java port (25565 by default, or whatever your host assigned).
  • Bedrock players connect over UDP to the Geyser port (19132 by default, the Bedrock standard).
  • Geyser listens on the UDP port and forwards to the Java server, either internally (plugin or mod on the same server) or over the network (standalone or proxy install).

Two things follow from this. First, you need a UDP port that reaches the server; a Java TCP port does not carry Bedrock traffic. Second, if your server sits behind a proxy (Velocity or BungeeCord), Geyser belongs on the proxy so Bedrock players can switch between backend servers like everyone else.

Which Geyser build to install

Your server Install
Paper, Purpur, Spigot Geyser-Spigot (plugins/ folder) and Floodgate-Spigot
Fabric Geyser-Fabric and Floodgate-Fabric (mods/ folder), plus Fabric API
NeoForge Geyser-NeoForge and Floodgate-NeoForge
Velocity or BungeeCord network Geyser and Floodgate on the proxy; Floodgate also on every backend
Vanilla or anything else Geyser Standalone, run as a separate process that connects to the Java server

Download the build that matches your platform from the GeyserMC site. Always take the latest build; Bedrock updates often, and Geyser follows within days.

Basic setup on Paper or Purpur

  1. Back up the server.
  2. Upload Geyser-Spigot.jar and floodgate-spigot.jar to the plugins/ folder.
  3. Restart the server once so both generate their configuration files: plugins/Geyser-Spigot/config.yml and plugins/floodgate/config.yml.
  4. Set the Bedrock port. In Geyser's config.yml, under bedrock:, set port to the UDP port players will use. On a dedicated machine with full port control, keep 19132 and open it in the firewall for UDP. On a hosting panel, you usually get an extra port allocation or permission to reuse your Java port number over UDP; in that second case set clone-remote-port: true so Geyser listens on the same number as the Java server.
  5. Set authentication. Under remote:, set auth-type: floodgate if Floodgate is installed, or online if Bedrock players will log in with Java accounts.
  6. Restart again. The console should show Geyser starting on the UDP port and Floodgate loading its key.
  7. Join from a Bedrock device: Play → Servers → Add Server, with your server address and the Bedrock port.

If you run a whitelist, add Bedrock players with the Floodgate prefix, for example .PlayerName, because that is the name the Java server sees.

Ports in detail

  • Java Edition uses TCP. Bedrock Edition uses UDP. They are different protocols even on the same port number, which is why "the server is online but Bedrock cannot connect" is almost always a UDP port problem.
  • The Bedrock default is UDP 19132. You can use any port, but players must type it when they add the server unless you use 19132.
  • clone-remote-port: true tells Geyser to listen on the same number as the Java port, over UDP. This is the easiest option on shared hosting where each server owns one port number across both protocols.
  • A domain name does not replace the port for Bedrock. Bedrock does not read SRV records, so players still enter the port unless it is 19132. (Java players can use a domain without a port; see the Minecraft SRV record generator.)

Configuration options worth knowing

In plugins/Geyser-Spigot/config.yml:

  • bedrock.address — leave 0.0.0.0 unless your host tells you otherwise.
  • bedrock.port and bedrock.clone-remote-port — covered above.
  • bedrock.motd1, bedrock.motd2, bedrock.server-name — what Bedrock players see in their server list; passthrough-motd: true reuses the Java MOTD instead.
  • remote.auth-type — floodgate, online or offline. Never offline on a public server.
  • passthrough-player-counts — show the real player count in the Bedrock list.
  • max-players — a display value for the Bedrock list, not an enforced limit.

In plugins/floodgate/config.yml:

  • username-prefix — the character prepended to Bedrock names (. by default). Keep it short and make sure plugins that validate names accept it.
  • replace-spaces — Bedrock gamertags can contain spaces; this swaps them for underscores.
  • player-link — lets a player link a Bedrock and a Java account so they share one profile.

Avoid editing values you do not need. Geyser's defaults are tuned for the common case.

Proxy networks (Velocity and BungeeCord)

On a network, install Geyser and Floodgate on the proxy, and Floodgate on every backend server as well. Floodgate authenticates on the proxy and passes the Bedrock identity to backends, which must trust it:

  1. Install Geyser and Floodgate on the proxy and start it once to generate key.pem inside the proxy's Floodgate folder.
  2. Copy that same key.pem into the Floodgate folder on each backend server. The key must be identical everywhere.
  3. On the proxy, set send-floodgate-data: true in Floodgate's config so backends receive the Bedrock data.
  4. Keep the backends on online-mode=false with the proxy enforcing authentication, exactly as a normal Velocity or BungeeCord network does, and make sure the backends are not reachable from the internet directly.
  5. Point Geyser's remote section at the proxy (the default auto handles this for the plugin install).

Bedrock players then connect to the proxy's UDP port and can use /server or portals like Java players.

Version compatibility

  • Bedrock side: Geyser supports the current Bedrock release and usually a few recent ones. After a Bedrock update, players on the new version cannot join until you update Geyser, which typically lands within days. Check the Geyser changelog when a Bedrock update ships.
  • Java side: Geyser targets the current Java version. If your Java server runs an older version, Geyser still works through ViaVersion, which you install on the Java server; Geyser connects as the newest Java client and ViaVersion translates down.
  • Paper/Purpur/Fabric builds: keep Geyser updated along with your server software. Most "worked yesterday" reports are a Bedrock client update that Geyser has already patched.

Security and basic configuration

  • Use auth-type: floodgate or online. offline lets anyone impersonate anyone and should only exist on a private LAN test server.
  • Floodgate's key.pem is a secret. Do not share it outside your own proxy and backends.
  • If you run a proxy, firewall the backend Java ports so players can only enter through the proxy; otherwise someone can bypass authentication entirely.
  • Keep your whitelist and permission plugins aware of the Floodgate prefix; a permission group that matches on name patterns may need the . included.
  • Geyser adds players and therefore load. A busy cross-play server behaves like a busy Java server with a few more entities to track; the Minecraft server lag guide applies unchanged.

Testing the connection

  1. From the server console, confirm Geyser reports it started on the UDP port and Floodgate loaded without key errors.
  2. On a Bedrock device on a different network (mobile data is a fine test), add the server with the address and the Bedrock port and join.
  3. Check the Java console for the join message; the name should carry the Floodgate prefix.
  4. Run /list from a Java client to see both kinds of players.
  5. The Minecraft server status checker pings Java and Bedrock servers; use it to confirm the Bedrock port answers from outside your network.

Common connection issues

Symptom Usual cause Fix
"Unable to connect to world" from Bedrock UDP port closed, wrong port, or Geyser not running Check the console for Geyser's startup line; confirm the port is a UDP allocation; try clone-remote-port on shared hosting
Server shows in the list but join fails Firewall allows the ping but not the session, or version mismatch Open UDP fully; update Geyser after a Bedrock update
"Outdated server" or "Outdated client" Bedrock client newer than Geyser, or Geyser newer than the Bedrock client Update Geyser or the Bedrock app
Java-side kick: "You are not whitelisted" Whitelist entry missing the prefix Add the player as .Name (or your configured prefix)
Bedrock players authenticate but get kicked on a network key.pem differs between proxy and backend, or send-floodgate-data is off Copy the proxy's key to every backend; enable the setting; restart everything
Bedrock players asked for a Java login auth-type is online and Floodgate is missing or not loaded Install Floodgate and set auth-type: floodgate
Console players cannot add the server Consoles have no "add server" button for custom servers Players use a DNS-based server list such as BedrockConnect, or join through a friend on another platform

Running cross-play on a hosted server

Any Java plan can run Geyser; what you need from the host is a UDP port for Bedrock traffic and enough headroom for the extra players. On LuxuryNodes Minecraft hosting Paper and Purpur are selectable from the panel, Geyser and Floodgate install like any other plugin, and the panel shows the port assignments you need for the config. If most of your players are on Bedrock and you do not need Java plugins at all, a native Minecraft Bedrock server is the simpler option; if you want Java plugins and Bedrock players together, Geyser on Paper or Purpur hosting is the usual setup.

Ready to host your own server?

Experience blazing-fast performance with LuxuryNodes. Built for gamers, loved by developers.

View Hosting Plans