ServUO Version
Publish 57
Ultima Expansion
Endless Journey
Hello everyone,

I'm facing an issue while trying to make my ServUO shard accessible online for remote players. Due to my internet being behind a CGNAT, and my ISP not allowing port forwarding options on the router, I've resorted to using ngrok with a CNAME pointing to my domain for the solution. I know I'll still have to deal with the port changes but I'll deal with that later on, lol.

Locally, everything works flawlessly; I can connect, authenticate, and play without any issues.
However, when trying to access the shard from an external network (5G network routed through my smartphone but the same UO client on my computer), I get an error. Although I can authenticate my user and see my shard in the shard list, the moment I select my shard, my user gets disconnected.


Here are the specifics of my setup:
  • Hardware/OS: Raspberry Pi 4 running Raspbian (bullseye)
  • Software: Mono version 6.12.0.200, ServUO Publication 57
  • Client Version: 7.0.101.2
  • Launcher: Classic UO Launcher / Razor / even Login.cfg (all had the exact same behaviour)

Modifications I've made to server files:


Server.cfg:
Name=My UO Shard
AutoDetect=true
Address=servuo.mydomain.com
Port=2593


ServerList.cs:
public static readonly string Address = "servuo.mydomain.com";

Error Log:

ServUO Error:
mono[21254]: 21:24:12 Listening: 127.0.0.1:2593
mono[21254]: 21:24:12 Listening: 192.168.0.90:2593
mono[21254]: 21:24:12 ----------------------------------------------------------------------
mono[21254]: 21:39:39 Core: Using dual save strategy
mono[21254]: 21:39:39 World: Saving...
mono[21254]: 21:39:41 Closing Save Files.
mono[21254]: 21:39:41 Save finished in 2,14 seconds.
mono[21254]: 21:39:41 [Honesty]: Generating...
mono[21254]: 21:39:41 [Honesty]: Generation completed in 0,00 seconds.
mono[21254]: 21:42:46 Client: 127.0.0.1: Connected. [1 Online]   //The moment I authenticate in the client
mono[21254]: 21:42:46 Login: 127.0.0.1: Valid credentials for 'kryogen'
mono[21254]: 21:42:46 Client Type: 127.0.0.1: Classic Client
mono[21254]: 21:42:49 Client: 127.0.0.1: Disconnected. [0 Online] [kryogen]  //The moment I select the shard in the shard list


Any advice on how to troubleshoot or fix this would be greatly appreciated.
Thank you in advance for any help you can provide.

... And if you made it here, I would like to present you the source code to create a ChatGPT integrated NPC! Congratulations!
:D
 
Hello, everyone. I think I found the cause of the problem.

I was using ngrok in order to open the 2593 port in order to solve my CGNAT issue. But what happens was that while reading the docs I found out ngrok only works with TCP ports, not UDP.

I believe an UDP connection starts right after I select the shard. That would explain why I could actually authenticate my user in the game client using ngrok and only when I selected the shard I would get disconnected.

In the end I gave up ngrok and created an Instance of the cheapest Lightsail server only to route the traffic on port 2593 TCP and UDP to the Raspberry via OpenVPN. Not the ideal solution, but it's working fine. I might try to use Wireguard later, I heard the performance could be slightly better.

I may be wrong about the whole UDP port thing. But I strongly believe that was the problem with using ngrok.
 
Back