> Edit: specifically, Tailscale uses their own proprietary relay servers, and if you don’t want to use them you can’t use tailscale. ¯\_(ツ)_/¯
This is incorrect [0]. You can use your own relay servers [0].
However, Tailscale only uses the relay servers as a last resort. Most of the time, the connection will be established directly between the peers.
If you're able to configure port forwarding on your router as another commenter said, wireguard works well enough. You'll probably be able to also set up some form of dynamic DNS if you don't have a static IP (like no-ip or duckdns, etc). In this case, you don't need Tailscale.
However, there are more and more people who aren't able to do the port-forwarding thing any more, such as those behind CG-NAT. For example, in France and, from what I hear, the UK, this seems to spread. In these cases, Tailscale's NAT traversal techniques may still work – that is, your connection will be directly between your two peers and not through their relays.
Also, of note is that their relays are open source [1], and you can run your own. But if that's the case, you probably don't need Tailscale and can get away with some kind of hub-and-spoke setup.
---
[0] https://tailscale.com/kb/1118/custom-derp-servers/
[1] https://github.com/tailscale/tailscale/tree/main/derp