Skip to main content

Connection Methods

There are three ways players can connect to your server. The Connection ID works out of the box; join codes and the server list are optional and need a Microsoft account sign in.

Connection ID

The default method. Players enter the connection ID in Education Edition's connection dialog (see How players join). The ID works for players from every organization, is generated automatically on first start, and stays the same across restarts.

The ID is a number stored in nethernet/connection-id.yml inside the Geyser folder, followed by an account identifier that EduGeyser stores alongside it, so the full value is stable across restarts:

# Nethernet connection ID. Clients enter this to connect via WebRTC.
# Auto-generated. Delete this file to regenerate.
# Must be 10-18 decimal digits.
connection-id: "123456789012345678"

Generated numbers are 18 digits; edited values may be 10 to 18 digits. Delete the file to generate a fresh one, which regenerates both halves.

caution

Keep the number random. Predictable values invite collisions with other servers worldwide.

Join Codes (optional)

Join codes let players connect by entering symbols on Education Edition's join code screen, or with one click through a share link. Each code is tied to one organization: it only works for players in the same Microsoft tenant as the account that created it.

Quick start

  1. Run /edu joincode add from the console
  2. Sign in with any Microsoft 365 Education account when prompted
  3. The join code and share link are printed to the console
  4. Share them with players

The connection ID, along with any active join codes and their share links, is printed to the console every 15 minutes as a reminder.

Multiple organizations

Run /edu joincode add once per tenant. Each run needs a sign in with an account from that tenant. All tenants share the same connection ID; only the join codes are per tenant.

Configuration

Edit extensions/edu/joincode_config.yml inside the Geyser folder:

world-name: "World Name"
host-name: "Server Name"

Configure and enforce player limits in the backend server software. Discovery registration for join codes does not provide an authoritative player cap.

Commands

CommandDescription
/edu joincodeShow the connection ID, active join codes, and share links
/edu joincode addCreate a join code for a new tenant
/edu joincode remove <number>Remove a join code by its index

Notes

  • Join codes and share links are restored across restarts while their saved registration remains active; expired registrations are replaced automatically
  • Codes stay alive through a heartbeat while the server is running
  • No Global Admin access is needed, any education account works

Server List (optional)

Broadcasts your server to Education Edition's own server browser. This requires Global Admin access to each Microsoft 365 Education tenant.

  1. Edit extensions/edu/serverlist_config.yml:
server-name: "Server Name"
server-ip: "mc.example.com"
server-port: "19132"
max-players: 40
caution

Always set server-ip and server-port explicitly. Automatic detection is best effort and picks wrong values behind NAT, tunnels, and reverse proxies, or when the external port differs from the port Geyser binds.

The player count shown on the server list tile is capped just below max-players so the server always stays joinable. Configure and enforce real player limits in the backend server software.

  1. Restart the server
  2. Run /edu serverlist add from the console
  3. Two device code prompts appear. Sign in with a Global Admin Microsoft 365 Education account
  4. The server now appears in Education Edition's server list for that tenant

To broadcast to several organizations, run /edu serverlist add once per tenant, each with its own Global Admin account.

Commands

CommandDescription
/edu serverlistShow all registered accounts with status
/edu serverlist addStart the device code flow for a new tenant
/edu serverlist remove <number>Remove an account by its index

Tenant Whitelist (optional)

Restricts which organizations (Microsoft Entra tenants) are allowed to join. Edit extensions/edu/tenant_whitelist.yml:

enabled: true
tenants:
- "03b5e7a1-cb09-4417-9e1a-c686b440b2c5"
  • enabled is the master switch. Set it to false to turn the whitelist off without deleting your list.
  • While enabled, an empty list allows everyone and a filled list allows only the listed tenants.

You can find a tenant ID with Microsoft's guide or tenantidlookup.com.

caution

This is an advanced feature. A wrong tenant list stops legitimate players from joining. Leave the list empty unless you specifically need it.

Files

All paths are relative to the Geyser folder, which depends on your platform: plugins/Geyser-Spigot/ on Paper and Spigot, plugins/geyser/ on Velocity, config/Geyser-Fabric/ on Fabric, or the working directory for standalone.

FilePurpose
nethernet/connection-id.ymlThe connection ID and signaling account identity, owned by EduGeyser
extensions/edu/joincode_config.ymlWorld and host names shown for join codes
extensions/edu/sessions_joincode.ymlJoin code sign in tokens, managed automatically
extensions/edu/serverlist_config.ymlServer list name, IP, port, and max players
extensions/edu/sessions_serverlist.ymlServer list sign in tokens, managed automatically
extensions/edu/tenant_whitelist.ymlAllowed tenants