Also at @me@social.k3can.us on Mastodon. Blog is at blog.k3can.us
Selfhosted @lemmy.world Don't Trust, Verify (or: Validating Origin and Integrity without Public CAs)
Selfhosted @lemmy.world Creating a "maintenance" page for my self-hosted sites
Selfhosted @lemmy.world A sneaky demonstration of the dangers of curl bash
Selfhosted @lemmy.world Running GoToSocial on an old wifi router

Oh, maybe I misunderstood? It sounded like he didn't understand what advantage a "tunnel" could provide.
If your server is behind CGNAT, you need a TURN-style "tunnel" to allow incoming connections. If you have your own remote server with a public IP, then you can absolutely use that and create the tunnel using wireguard (or openvpn, ssh, etc).
I just mentioned CF in my blog post because it's probably the most popular solution.
The point is, if you have CGNAT, you need to create that "tunnel" somehow if you want to allow incoming connections.