Tailscale is also ridiculously easy to use for this purpose. The serve and Funnel features make secure self hosting really easy from your tailnet (one can easily provision certificates for nodes using Let’s Encrypt from the CLI: https://tailscale.com/blog/reintroducing-serve-funnel
When I spin up a new self hosted service it’s easier to add caddy to the stack than to convince Firefox to load http.
Tailscale is also ridiculously easy to use for this purpose. The serve and Funnel features make secure self hosting really easy from your tailnet (one can easily provision certificates for nodes using Let’s Encrypt from the CLI: https://tailscale.com/blog/reintroducing-serve-funnel