1
1
I develop a desktop product (C#) that has a built-in Web server (ServiceStack) that can be used for remote management of the database - I will refer to this as the Internal Server. Many users want to access the Internal Server outside their network but the support burden on my side of getting them to configure firewalls and port forwarding is too high. Also, dynamic IP addresses can also be an issue.
I am trying to come up with a way to create a zero-config service where a user can connect to an external server I host which is able to relay the requests to the Internal Server without having to configure anything on the Internal Service. It should 'just work' from the user's perspective.
This would be akin to the way TeamViewer/AnyDesk/etc works where the user can just log in and 'connect' to their computer without having to configure firewalls.
I have developed a proof-of-concept based on the Sequence Diagram below. It works, but the performance vs the direct connection is very slow.
How could this be better achieved and are there any solutions that have solved this problem out-of-the-box?
The key challenge shown in the diagram below is that the Public Relay Server should not initiate a direct connection to the Internal Server.
Thank you for your comments.