've been building a self-hosted tunnel in Go for a bit now. Started as rift — an ngrok-style tunnel over QUIC, one binary for server and client, uses quic-go. Wrote it to understand QUIC internals end-to-end.
https://github.com/venkatkrishna07/caddy-rift
After finishing it thought of how to plug this in into existing tools. Started with caddy itself. Adds QUIC tunnels as a reverse_proxy upstream type, so you can expose a private app through an existing Caddy without forwarding ports. Client on the private box dials out, Caddy routes to it like any other backend.