I had been using Nginx and LetsEncrypt for years and while it worked well most of the time, sometimes it was a bit of a pain, especially due to the verbosity of the Nginx config file. I was using both of them in docker containers and that requires you to have 3 specific environmental variables set for each container.
I tried using Traefik, and while concise, it was still a bit confusing.
I finally decided to give Caddy a try a few months back after hearing about it for years. I'm disappointed that I didn't try it sooner because it's so freaking simple to use. I rewrote my entire docker-compose file to use it because it's that simple. I love how it takes literally 3 lines to create a SSL secured reverse proxy.
Kanidm wants to directly have access to the letsencrypt cert. It refuses to even serve over HTTP, or put any traffic over it since that could allow potentially bad configurations. It has a really stringent policy surrounding how opinionated it is about security.
Yeah. There's reasoning for why they do it on their docs, but the reasoning iirc is kanidm is a security critical resource, and it aims to not even allow any kind of insecure configuration. Even on the local network. All traffic to and from kanidm should be encrypted with TLS. I think they let you use self signed certs though?
I had been using Nginx for years until I finally switched to Caddy a few months ago, I'm disappointed in myself that I didn't check it out sooner lol. Caddy is to Nginx like what Nginx is to Apache.
I have like 15 reverse proxies setup and it takes the same amount of code that about 4 or 5 would take in Nginx.