Quick demonstrations & development: ngrok
Low-resource environments (IoT, embedded): rathole
Privacy-focused deployments: connet
Production with active community: FRP
Self-hosting with direct connections: connet
https://gist.github.com/andrewarrow/d0e41dd954485a8574b9ea74...
Full disclosure I work there.
Full disclosure - I work at https://pinggy.io
One new feature I haven't highlighted yet, is that you can, in addition, encrypt traffic as it goes through relays (both via tls or noise-inspired protocol, dhxcp). This enhances privacy, even when you are using public (e.g. not owned by you relays), covering a case like https://connet.dev nicely.
What I was describing above is a specific way to route traffic - by default if direct connection between clients can be made (e.g. peer-to-peer), connet uses that. However, in cases where this is not possible, connet can use relays to send traffic between peers. In this scenario, you can in addition encrypt traffic end-to-end, so if you are using a public/untrusted relays, the relay itself cannot inspect/see traffic between peers.
Of course, you can also configure peers to never use relays and always communicate directly. A relay (or a third-party) is only used when both peers allow it and no direct route can be used.
In any case, zrok.io is cool, it is certainly more mature and feature rich project.
In any case, homegrown solutions are great, they offer the most flexibility, but also require the biggest time investment (and knowledge of course).
[1]: https://gsocket.io/
Ingon•9mo ago
This is a hosted version of connet[1]. In addition, it allows users to expose their endpoints directly on the internet (optional and still in progress)
[1] https://github.com/connet-dev/connet