Renewal configuration file /etc/letsencrypt/renewal/beehaw.org.conf is broken.
The error was: expected /etc/letsencrypt/live/beehaw.org/cert.pem to be a symlink
Skipping.
Failed to renew certificate www.beehaw.org with error: Some challenges have failed.
All renewals failed. The following certificates could not be renewed:
/etc/letsencrypt/live/www.beehaw.org/fullchain.pem (failure)
1 renew failure(s), 1 parse failure(s)
My web server is (include version):
Nginx
The operating system my web server runs on is (include version):
Ubuntu 20.04 LTS
My hosting provider, if applicable, is:
DO
I can login to a root shell on my machine (yes or no, or I don't know):
Yes
I'm using a control panel to manage my site (no, or provide the name and version of the control panel):
No
The version of my client is (e.g. output of certbot --version or certbot-auto --version if you're using Certbot):
It seems something messed up the structure in /etc/letsencrypt/. Did you by any chance modify the directory yourself? Copy it somehow, e.g. from server A to B, without preserving symbolic links?
Those files should be symbolic links to the corresponding (latest) files in the /archive/ directory.
Also, it seems you've got two certificates in Certbot: one for just www.beehaw.org and one for www.beehaw.org as wel as beehaw.org. (See crt.sh | beehaw.org, both certs issued on 2022-01-29.
So the working certificate (sort of, renewal failed according to your output earlier) is actually the correct certificate. The invalid certificate is actually a redundant cert for just the www subdomain.
Which certificate is your webserver (and other services using a certificate) using? The files at etc/letsencrypt/live/beehaw.org/ or at etc/letsencrypt/live/www.beehaw.org/?
Ok, so your nginx already uses the correct certificate, that's good. That means you don't actually need the failing certificate, and you can delete it if you didn't install it manually anywhere else on your server. You can delete the unnecessary files by running:
Before you do the above, please make a backup of the /etc/letsencrypt/ directory to be sure.
After that, you can try sudo certbot renew again and see what happens. It looks like your "working" certificate isn't actually able to renew, but we'll see about that later.
The cp command has the -a (for archive) option which preserves as much of the metadata as possible, which is probably a good method for small, temporary backups.