Public access options
Compare Playit, port forwarding, Tailscale and ZeroTier.
On this page
Choose the smallest useful optionPlayitTailscale and ZeroTierPort forwardingBefore using the routerCGNAT and double NATWhich option should I use?Choose the smallest useful option#
| Option | Cost | Setup | Typical latency | Friends install software? | Public hostname | Hides home IP? | CGNAT | Custom domain |
|---|---|---|---|---|---|---|---|---|
| Playit | Free and paid features | Easy | Relay-dependent | No | Yes | Yes | Works | Plan/feature-dependent |
| Port forwarding | Usually no extra fee | Medium | Direct | No | No, unless DNS added | No | Usually blocked | Yes |
| Tailscale | Free/paid plans | Medium | Direct when possible, relayed when needed | Yes | Private MagicDNS/IP | Yes | Works | Private naming, not normal public DNS |
| ZeroTier | Free/paid plans | Medium | Virtual-network dependent | Yes | Private address | Yes | Works | Usually private-network naming |
Playit#
Playit is covered in the beginner tunnel guide. It starts an outbound connection from the server, so it can work through many NAT and CGNAT situations. Relay location and route affect latency, and free/paid hostname or custom-domain features can change.
Tailscale and ZeroTier#
These products create private overlay networks. They are useful for friends, administrators and dashboards because the service does not need to be public. The tradeoff is that every player normally installs a client, signs in or accepts network access.
Tailscale’s official sharing documentation supports granting a specific user access to a specific machine without making it public. Treat reusable share links like passwords and restrict access rules to the Minecraft port.
ZeroTier serves a similar private-network role with its own controller and member authorization model. Follow its official current documentation rather than copying an old network-ID tutorial.
Port forwarding#
Before using the router#
Port forwarding sends one public router port to the server’s private LAN address. It removes the tunnel hop but exposes your home public IP to the people who connect. Router screens differ, and this method may not work behind CGNAT.
- 1Confirm LAN joining works and reserve the ZimaOS local IP.
- 2Open the router’s app/admin page and find Port Forwarding, NAT, Virtual Server or Applications & Gaming.
- 3Add a rule named
Minecraft Java. - 4Use protocol TCP unless a specific mod also documents UDP.
- 5Set external port
25565, internal port25565, and destination to the ZimaOS LAN IP. - 6Save the rule. Do not place the server in DMZ.
- 7Find your public IP using the router’s status page.
- 8Test from cellular data or another household. Testing the public IP from inside can fail when the router lacks NAT loopback.
Private IP addresses such as 192.168.x.x work only at home. The public IP is assigned by your ISP. A changing dynamic public IP may later require a dynamic DNS name.
CGNAT and double NAT#
The forward looks right but no test reaches it
Compare the router’s WAN address with the public address shown by a public-IP service. If the WAN address is private, 100.64.0.0/10, or different because another modem/router sits ahead, you may have CGNAT or double NAT. Ask the ISP for a public IPv4 address, configure both routers, use bridge mode with care, or use Playit instead.
Sharing a public IP with trusted friends is common, but it reveals the approximate ISP/network location. Do not post it publicly, and remember it can change.
Which option should I use?#
- Normal friends, least setup for them: Playit.
- Small private group comfortable installing an app: Tailscale or ZeroTier.
- Direct connection, controllable router, no CGNAT: port forwarding.
- Public community: plan DDoS protection, abuse response and a hosting/network design beyond a casual home forward.
Test from a real outside network. Public port-check websites may test TCP only and cannot prove a Minecraft login, authentication or Bedrock UDP path works.