Could you take a look at /var/log/letsencrypt? The built-in logging features in Certbot are supposed to log to files there. They might provide more details about what's happening.
Also, you could try adding 2>&1 at the very end of the command line in the hope that your own log files will include the command's stderr (not just stdout).
Ah thanks @schoen that helps a lot. In /var/log/letsencrypt I found:
019-03-12 19:04:49,752:DEBUG:certbot.plugins.disco:No installation (PluginEntryPoint#nginx): Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.
Traceback (most recent call last):
File "/opt/eff.org/certbot/venv/local/lib/python2.7/site-packages/certbot/plugins/disco.py", line 132, in prepare
self._initialized.prepare()
File "/opt/eff.org/certbot/venv/local/lib/python2.7/site-packages/certbot_nginx/configurator.py", line 146, in prepare
"Could not find a usable 'nginx' binary. Ensure nginx exists, "
NoInstallationError: Could not find a usable 'nginx' binary. Ensure nginx exists, the binary is executable, and your PATH is set correctly.
Which leads me to other forum threads to solve this issue.
Thanks! This makes me think that the PATH variable is set differently between your root shell and your cron job. If so, it might be as easy as changing the PATH in crontab.
Maybe try echo $PATH and which nginx from the root shell and see if it’s in a moderately unusual or specific location?
If you want to know your default PATH in the cron job, a simple option is to add a new cron job like
* * * * * echo $PATH | tee /tmp/path
and then wait one minute and look in the file /tmp/path for the answer. (Don’t forgot to remove this cron job later so that it doesn’t keep running in the future!)