Help playit tunnel Failed to read data Minecraft

Hi everyone,

I’m currently running a local Minecraft server in Mexico with a player base of 10–50 concurrent users. I decided to build my own host to avoid monthly third-party fees, but since my ISP (IZZI) uses CGNAT and doesn’t provide unique public IPs, I have to rely on Playit.gg for connectivity.

Lately, Playit has been causing constant connection drops. It’s very inconsistent; sometimes the server stays up for 4 days without issues, and other times it crashes after just 3 hours.

The setup and the problem:

OS: Ubuntu Server 24.04 using Pterodactyl and Docker.

The Trigger: The issues seem to start when using UDP tunnels for Bedrock.

Previous Attempt: I tried switching Playit to “TCP only.” This made the server extremely stable, but Bedrock players experienced unplayable lag, so I had to switch back to UDP/TCP.

Current Infrastructure:
In a desperate attempt to fix this, I rented a small VPS to host my Proxy (Velocity) and connected my local backend servers to that proxy using multiple UDP/TCP tunnels. I hoped that by using separate tunnels, if one failed, it wouldn’t take down the whole network. Unfortunately, it didn’t work. As soon as the errors start, the console gets flooded with:

“Failed to read data”

“Error establishing connection to [Server IPs]”

Playit console logs show these frequent errors:

Failed to send setup channel request

Session expired

Failed to authenticate

io error connecting to claim address

I’m at my wits’ end. Since I can’t get a dedicated IP from my ISP, I’m stuck with tunnels. Has anyone dealt with this “Session expired” loop on Playit or found a more stable way to handle Bedrock/Java hybrid traffic over CGNAT?

Any advice would be greatly appreciated!

How are you running the playit program? Are you SSHig into your server and just running the playit command? Or are you using windows and leaving the program open?

"I am running the server on a Local Host (Physical Machine) using Ubuntu Server 24.04. I access it via SSH and run the playit command directly in the terminal to keep the agent active.

I am not using Windows; the entire infrastructure is Linux-based, and the agent is running on the same host where the Docker containers are located."

Okay, when your terminal session dies it will kill the playit program. I’m working on a new release of playit that will always run playit as a service so this won’t be an issue anymore. In the meantime, you should use the systemd service playit installs.

sudo systemctl start playit

then you can view the logs by running

tail -f /var/log/playit/playit.log

you may need to setup the playit agent again and transfer your tunnels over to the new agent.