Why port forwarding fails so often
A server at home sits behind your router, which drops incoming connections by default. Port forwarding is the manual rule that lets them through, and each step is a place it breaks:
- No router access. Shared flats, dorms, school and work networks rarely hand out the admin password.
- Carrier-grade NAT (CGNAT). On many home connections, and nearly every mobile network, your router never gets an internet-facing address of its own. Forwarding a port on it opens nothing to the outside.
- Moving targets. The forward points at a local IP that can change when the device reconnects, and many home connections get a new public IP every so often, so the address you sent your friends stops working.
- Two editions, two ports. Java listens on TCP 25565 and Bedrock on UDP 19132, and a cross-play server needs both forwarded correctly.
- Your home IP is public. Everyone you give the address to can see where your connection is.
How Anvil-MC gets around it
Instead of waiting for players to reach in, the phone reaches out. When the server starts, Anvil-MC opens an outgoing connection from the device to a relay, and the relay hands out a public address. Players connect to that address and their traffic travels back down the connection the phone already opened.
- Nothing to configure. No router settings, no firewall rules, no static IP. The address appears in the dashboard when the server starts.
- Works behind CGNAT. Because the connection is outgoing, it works on networks where port forwarding is impossible.
- Your IP stays private. Players see the relay's address, not your home connection.
- Both editions. Java servers, native Bedrock servers with PowerNukkitX, and Java servers with Bedrock cross-play through Geyser all get a public address the same way.
The server still runs on your own phone, so it stays up as long as the phone is on. The tunnel only carries the connection; it does not move the server to the cloud.
Other ways to skip port forwarding
Tunneling is not the only workaround. Here is how the common options compare for a small group of friends:
Port forwarding only reaches consoles if Bedrock's UDP port is forwarded as well. A VPN like Hamachi puts everyone on a virtual LAN, but every player has to install it and consoles cannot. A tunnel tool on a PC fixes the router problem, though console support depends on the tool, and the PC has to stay on. Anvil-MC runs the server and the tunnel on the phone.
Set it up in four steps
- Install Anvil-MC from Google Play. Android 9 or newer, no root.
- Create a server: Paper, Fabric, NeoForge or any Java
.jar, a Modrinth modpack, or PowerNukkitX for native Bedrock. - Start it. The public address and port appear in the dashboard.
- Send that address to your friends. Java players add it under Multiplayer → Add Server, Bedrock players under Play → Servers → Add Server.
Free, with a permanent address on Premium
Every free server gets a public address with no time limit and no queue. Keeping a free public session running is ad-supported. Premium is optional and adds a permanent custom *.anvil-mc.app subdomain that stays up on its own, so friends save one address and reuse it, plus DDoS protection and no ads. See free Minecraft server hosting for everything on the free tier, or Bedrock server hosting for the Bedrock and cross-play setup.