Every public request to one of my sites used to go through a Cloudflare tunnel. I had a cloudflared deployment in my cluster, some routing rules, and everything just worked. And it was free! But that bugged me. TANSTAAFL right? The whole point of selfhosting is to not rely on big cloud company, and there are few bigger than Cloudflare. And Cloudflare’s tunnels decrypt every single packet, so they see everything you do. I really don’t like that.
So I’ve replaced Cloudflare tunnels with Erwan Leboucher’s towonel, a selfhosted tunnel implementation. I still have my DNS on Cloudflare, but no data is moving through them any more.
…


What reverse proxy are you using?
I use haproxy just for simplicity, with the https fronted in tcp mode with a tcp request inspect delay and acls using req_ssl_sni allows switching between multiple backend based on hostname, though if you only had 1 backend server then it could just be a raw tcp proxy. I have my stuff split between 2 local boxes that are both connected to the reverse proxy using wg so this works well for me.