Hey all,
i have two itzg/minecraft servers running along with itzg/mc-router (https://github.com/itzg/mc-router) and playit.gg docker container inside a single docker compose file. Both tunnels are configured with gl.joinmc.link urls with the local address pointing to the ip address of the mc-router container (FYI: hostnames would be great, instead of only allowing ip-adresses) and default minecraft port.
For these two servers i added two servers in the minecraft client via "Add Server" button: xxx-xxx.gl.joinmc.link and yyy-yyy.gl.joinmc.link
For mc-router there is a "host" label that contains the server address. In my case i had to change these to "xxx-xxx.gl.at.ply.gg" for the connection to the minecraft server to work. When refreshing the server list however, the original server address is used. If i switch the host to the original url from the tunnel, the server list shows correct status but connection is not possible and fails.
The following is the output from mc-router with host label set to gl.at.ply.gg urls for connection and refresh (logs changed to hide IP, Servernames and Minecraft Account names):
When connecting to the server via "Join Server" button :
time="2026-02-02T20:32:24Z" level=info msg="Connecting to backend" backendHostPort="docker-ip-1:25565" client="docker-ip-playit:60664" player=MC-Player-Name/mc-player-id server=xxx-xxx.gl.at.ply.gg.
time="2026-02-02T20:32:29Z" level=info msg="Finished relay frontend->backend" amount=2119 client="docker-ip-playit:60664" player=MC-Player-Name/mc-player-id
time="2026-02-02T20:32:29Z" level=info msg="Finished relay backend->frontend" amount=474521 client="docker-ip-playit:60664" player=MC-Player-Name/mc-player-id
time="2026-02-02T20:57:18Z" level=info msg="Connecting to backend" backendHostPort="docker-ip-mc2:25565" client="docker-ip-playit:49452" player=MC-Player-Name/mc-player-id server=yyy-yyy.gl.at.ply.gg.
time="2026-02-02T20:57:20Z" level=info msg="Finished relay frontend->backend" amount=1635 client="docker-ip-playit:49452" player=MC-Player-Name/mc-player-id
time="2026-02-02T20:57:20Z" level=info msg="Finished relay backend->frontend" amount=164599 client="docker-ip-playit:49452" player=MC-Player-Name/mc-player-id
time="2026-02-02T20:57:20Z" level=info msg="Closed connection to backend" backendHostPort="docker-ip-mc2:25565" client="docker-ip-playit:49452" connectionCount=0
When refreshing the server list via "Refresh" button:
time="2026-02-02T20:55:14Z" level=warning msg="Unable to find registered backend" player= resolvedHost=xxx-xxx.gl.joinmc.link serverAddress=xxx-xxx.gl.joinmc.link
time="2026-02-02T20:55:14Z" level=info msg="Closed connection to backend" backendHostPort= client="docker-ip-playit:60260" connectionCount=0
time="2026-02-02T20:55:14Z" level=warning msg="Unable to find registered backend" player= resolvedHost=yyy-yyy.gl.joinmc.link serverAddress=yyy-yyy.gl.joinmc.link
time="2026-02-02T20:55:14Z" level=info msg="Closed connection to backend" backendHostPort= client="docker-ip-playit:60266" connectionCount=0
time="2026-02-02T20:55:14Z" level=warning msg="Unable to find registered backend" player= resolvedHost=xxx-xxx.gl.joinmc.link serverAddress=xxx-xxx.gl.joinmc.link
time="2026-02-02T20:55:14Z" level=info msg="Closed connection to backend" backendHostPort= client="docker-ip-playit:60272" connectionCount=0
time="2026-02-02T20:55:14Z" level=warning msg="Unable to find registered backend" player= resolvedHost=yyy-yyy.gl.joinmc.link serverAddress=yyy-yyy.gl.joinmc.link
time="2026-02-02T20:55:14Z" level=info msg="Closed connection to backend" backendHostPort= client="docker-ip-playit:60280" connectionCount=0
I could manually set the ip addresses in the playit tunnels, but this would break something as soon as the docker compose networking applies different IP adresses to each of the minecraft server containers. This would most likely also be solved by using hostnames instead of only allowing IP in the tunnel configuration. However, i would like to use mc-router capabilities to include things like auto scaling. I could also manually set the ip addresses inside the docker compose configuration, but this increases necessary configuration management instead of letting docker compose handle it all for me.
Workaround:
For anyone else stumbling across this issue, i was able to workaround it via mc-router environment config. I still saw the two mention hostnames being used, but at least now they both map to the correct container and server connection and server list refresh work perfectly:
environment:
MAPPING: |
yyy-yyy.gl.joinmc.link=yyy-docker-container-name:25565
xxx-xxx.gl.joinmc.link=xxx-docker-container-name:25565
including the above mention labels added to the individual minecraft server services in docker compose:
mc-router.host: "entire-initiatives.gl.at.ply.gg"
mc-router.host: "entire-initiatives.gl.at.ply.gg"
Hey all,
i have two itzg/minecraft servers running along with itzg/mc-router (https://github.com/itzg/mc-router) and playit.gg docker container inside a single docker compose file. Both tunnels are configured with gl.joinmc.link urls with the local address pointing to the ip address of the mc-router container (FYI: hostnames would be great, instead of only allowing ip-adresses) and default minecraft port.
For these two servers i added two servers in the minecraft client via "Add Server" button: xxx-xxx.gl.joinmc.link and yyy-yyy.gl.joinmc.link
For mc-router there is a "host" label that contains the server address. In my case i had to change these to "xxx-xxx.gl.at.ply.gg" for the connection to the minecraft server to work. When refreshing the server list however, the original server address is used. If i switch the host to the original url from the tunnel, the server list shows correct status but connection is not possible and fails.
The following is the output from mc-router with host label set to gl.at.ply.gg urls for connection and refresh (logs changed to hide IP, Servernames and Minecraft Account names):
When connecting to the server via "Join Server" button :
time="2026-02-02T20:32:24Z" level=info msg="Connecting to backend" backendHostPort="docker-ip-1:25565" client="docker-ip-playit:60664" player=MC-Player-Name/mc-player-id server=xxx-xxx.gl.at.ply.gg.time="2026-02-02T20:32:29Z" level=info msg="Finished relay frontend->backend" amount=2119 client="docker-ip-playit:60664" player=MC-Player-Name/mc-player-idtime="2026-02-02T20:32:29Z" level=info msg="Finished relay backend->frontend" amount=474521 client="docker-ip-playit:60664" player=MC-Player-Name/mc-player-idtime="2026-02-02T20:57:18Z" level=info msg="Connecting to backend" backendHostPort="docker-ip-mc2:25565" client="docker-ip-playit:49452" player=MC-Player-Name/mc-player-id server=yyy-yyy.gl.at.ply.gg.time="2026-02-02T20:57:20Z" level=info msg="Finished relay frontend->backend" amount=1635 client="docker-ip-playit:49452" player=MC-Player-Name/mc-player-idtime="2026-02-02T20:57:20Z" level=info msg="Finished relay backend->frontend" amount=164599 client="docker-ip-playit:49452" player=MC-Player-Name/mc-player-idtime="2026-02-02T20:57:20Z" level=info msg="Closed connection to backend" backendHostPort="docker-ip-mc2:25565" client="docker-ip-playit:49452" connectionCount=0When refreshing the server list via "Refresh" button:
time="2026-02-02T20:55:14Z" level=warning msg="Unable to find registered backend" player= resolvedHost=xxx-xxx.gl.joinmc.link serverAddress=xxx-xxx.gl.joinmc.linktime="2026-02-02T20:55:14Z" level=info msg="Closed connection to backend" backendHostPort= client="docker-ip-playit:60260" connectionCount=0time="2026-02-02T20:55:14Z" level=warning msg="Unable to find registered backend" player= resolvedHost=yyy-yyy.gl.joinmc.link serverAddress=yyy-yyy.gl.joinmc.linktime="2026-02-02T20:55:14Z" level=info msg="Closed connection to backend" backendHostPort= client="docker-ip-playit:60266" connectionCount=0time="2026-02-02T20:55:14Z" level=warning msg="Unable to find registered backend" player= resolvedHost=xxx-xxx.gl.joinmc.link serverAddress=xxx-xxx.gl.joinmc.linktime="2026-02-02T20:55:14Z" level=info msg="Closed connection to backend" backendHostPort= client="docker-ip-playit:60272" connectionCount=0time="2026-02-02T20:55:14Z" level=warning msg="Unable to find registered backend" player= resolvedHost=yyy-yyy.gl.joinmc.link serverAddress=yyy-yyy.gl.joinmc.linktime="2026-02-02T20:55:14Z" level=info msg="Closed connection to backend" backendHostPort= client="docker-ip-playit:60280" connectionCount=0I could manually set the ip addresses in the playit tunnels, but this would break something as soon as the docker compose networking applies different IP adresses to each of the minecraft server containers. This would most likely also be solved by using hostnames instead of only allowing IP in the tunnel configuration. However, i would like to use mc-router capabilities to include things like auto scaling. I could also manually set the ip addresses inside the docker compose configuration, but this increases necessary configuration management instead of letting docker compose handle it all for me.
Workaround:
For anyone else stumbling across this issue, i was able to workaround it via mc-router environment config. I still saw the two mention hostnames being used, but at least now they both map to the correct container and server connection and server list refresh work perfectly:
environment:
MAPPING: |
yyy-yyy.gl.joinmc.link=yyy-docker-container-name:25565
xxx-xxx.gl.joinmc.link=xxx-docker-container-name:25565
including the above mention labels added to the individual minecraft server services in docker compose:
mc-router.host: "entire-initiatives.gl.at.ply.gg"
mc-router.host: "entire-initiatives.gl.at.ply.gg"