Please fill out the fields below so we can help you better. Note: you must provide your domain name to get help. Domain names for issued certificates are all made public in Certificate Transparency logs (e.g. crt.sh | example.com), so withholding your domain name here does not increase secrecy, but only makes it harder for us to provide help.
Looks like everything goes according to plan with adding and removing the TXT challenge using Cloudflare, but for some reason the Let's Encrypt resolver can't find it. Maybe the 10 seconds propogation time is just too short? Any way to increase that in NPM?
Also, nginx seems to be working just fine, is there any reason why NPM would opt for the dns-01 challenge instead of the much simpeler http-01 challenge? You're not requesting a wildcard certificate which would mandate the dns-01 challenge..