Everyone mentions tailscale but they want to charge you per user. Their client is open source, the thing the client connects to is not. I think there are better options.
https://github.com/juanfont/headscale replaces the tailscale control panel with something open source and self-hosted. However, it doesn't have all the features of the official tailscale control panel.