Skip to content
MEMOxiiii edited this page Sep 17, 2026 · 5 revisions

Portal Banner

Portal Wiki

Portal is a lightweight transfer proxy written in Go for Minecraft: Bedrock Edition. It lets players connect once and move between multiple backend servers — regardless of what software each server runs — with zero-downtime transfers and no reconnects.

This build targets Bedrock protocol 1001 (game version 1.26.30).

Where to start

If you want to... Go to
Go from zero to a working proxy with one backend connected Setup
Download and run Portal for the first time Installation
Configure config.json (ports, TLS, whitelist, health checks, etc.) Configuration
Understand how Portal sits between players and backend servers Network Architecture
Set up NetherNet properly (firewall, STUN/TURN, TLS) or troubleshoot a connection issue NetherNet Transport
Mix RakNet and NetherNet backend servers on one proxy Backend Transports
Integrate your own server software with Portal Socket Protocol
Embed Portal as a Go library instead of running the binary Library Usage
Wire your own code into Portal as a Go library Event Bus
Manage a running proxy (kick, transfer, drain) Admin Console
Run more than one Portal instance behind the same network Clustering
Use an existing plugin for PocketMine, Dragonfly, or GeyserMC Client Libraries

Supported backend platforms

Platform Library Type Engine Status
PocketMine-MP (PHP) PortalPM Plugin PocketMine-MP ✅ Supported
Dragonfly (Go) PortalDF Library Dragonfly ✅ Supported
GeyserMC (Java) Portal-GeyserMC Extension GeyserMC 2.9.5+ ✅ Supported
NukkitX / PowerNukkitX (Java) — Plugin NukkitX / PowerNukkitX 🔜 Coming Soon
EndstoneMC (BDS) — Plugin Endstone (BDS) ⚠️ Experimental

EndstoneMC support isn't guaranteed due to BDS limitations. Until it lands, connect BDS-based servers to a Portal network through Portal-GeyserMC instead.

Key features

  • NetherNet by default — Bedrock's official WebRTC transport, the same one Bedrock Dedicated Server exposes with transport=nethernet; RakNet is still available as a per-proxy fallback (NetherNet Transport)
  • Mixed backend transports — RakNet and NetherNet backend servers can sit side by side behind one proxy, each declaring its own transport (Backend Transports)
  • Zero-downtime transfers between backend servers, no reconnects
  • Multi-platform — mix PocketMine, Dragonfly, GeyserMC (and more) on one network
  • TCP socket API for integrating any server software (Socket Protocol)
  • Resource packs served from the proxy, with hot reload
  • Whitelist, IP bans, and per-IP connection rate limiting
  • Event bus for join/quit/transfer/health hooks without forking the proxy (Event Bus)
  • Admin console — players, servers, kick, transfer, drain (Admin Console)
  • Clustering via Redis for cross-proxy player lookups (Clustering)
  • Server groups, weighted load balancing, and draining (Configuration, Socket Protocol)
  • Health checking — transport-aware pings pull hung/crashed servers out of rotation automatically
  • Prometheus metrics endpoint
  • Graceful shutdown on SIGINT/SIGTERM

Project links

Portal is forked from Paroxity/portal; this fork adds additional platform support and improvements.

Clone this wiki locally