The default LE client was kind of a pain to work with. The docker container was better but where it really helped was the Lego golang implementation. That one 'just works' and was super easy to setup behind nginx to run automatically. It also writes a nicer config dir.
I forked acme-tiny the other day and replaced http-01 with dns-01. The dns-01 implementation is pretty simple and crude for now, I'll probably add dynamic dns update support at some point. All it does is print the records out and wait for you to add them manually.
In your review, whenever I click a "show output" link, it navigates to another page containing only "[object Object]". Can you change the href to be an onclick attribute or something like that?
I found the default client to work as expected. It doesn't automatically modify nginx config, but I really don't want it to. It's simple to point the config to a correct location and then just use the webroot plugin. (Granted that needed the change to allow access to hidden directory via HTTP, but that wasn't rocket science either)
Thanks for sharing your experience here, I'll go straight to lego when I go to set it up. It's hard to beat the simplicity of a Go binary for system tools like this.
True Go binaries like lego[1] are statically compiled (zero external dependencies). No need to fuss about versions of installed dependencies, updates, package management, etc. You just run the binary and it just works.