I had been wanting a external end point for a few services. I had been using Caddy internally, I wanted to expose it to the internet. I started out looking at static IP options, but they are expensive. One solution is to update DNS when the IP changes. I started out looking at having a standalone shell script to set DNS names, but Caddy supports dymanic DNS (and docs. I have been using tailscale to send traffic between the caddy reverse proxy and the actual service.
This featured figuring out GCP API calls from a GCE instance. I had to set up a service account to make this work.
I also had to patch caddy-dynamicdns to support a zone ending in a dot
psn.af.
.