

Yes, you need for the client to know where to connect to. If you have a static IP then that’s it, but if you don’t you can use dynamic DNS, and you need to own a domain to use it (in theory there are services like duckdns.org, but it’s been unreliable for me for the past year).
I went for a cheap .ovh domain, which costs me ~3€ a year, and I get the OVH dynDNS as a bonus. I use ddclient to update my IP. Works great.
Now I’m trying migrate my wireguard setup to an LXC and implement ACLs while I’m at it.







Exposing wireguard port is not that bad since it’s key auth. Wireguard itself is quite minimal, so it tends to be quite secure and it shouldn’t appear in port scans.
So I wouldn’t worry as much as with other things you can expose.
For usability, you just share a config file with the user and tell them which app to install. Very smooth experience.
However you still need to keep the security in mind when you are letting someone into your network. Setup a DMZ or use ACLs (with iptables for example).
As for myself, I want to be as self sufficient as possible, especially from US tech, so I don’t use cloudflare.