That's a lot easier said that done for hobbyists that need a certificate for their home server. I will give you a real world example. I run Ubuntu Linux (but without snaps) on my main desktop machine, however like the person you replied to I am old and I don't have a good memory so when I do use Linux I try to take the easiest approach possible. But I also have a server running on a Raspberry Pi, and another family member (that has a Mac) that I exchange XMPP-based instant messages with. The server runs Prosody, and on my Ubuntu box I run Gajim (the one from the apt repository which is version 1.8.4, I have no idea why they won't put a newer version in the repo). The other family member uses some MacOS-based XMPP client. The problem is that if there is not a valid certificate on the server, Gajim refuses to send or receive anything other than plain-text messages. It won't sent or receive files or pictures, etc. unless the certificate is valid.
However the Raspberry Pi does other things as well (it would be silly to dedicate a Pi to just running Prosody) and one of those other things puts a pseudo-web server of sorts on port 80, which is only accessible from the local network. So I can't use Certbot because it insists on being able to connect to a web server. Even if I had a general web server on the Pi, which I don't have and don't want, it would be restricted for local access only. Also, I'm not paying for a DNS address for my own home server. What I found I could do is get a DuckDNS address (they are free) and use that to get a LE certificate. But the procedure is very manual and kind of convoluted, you have to ssh into the server using two separate sessions and enter some information in each one, because of the absolutely asinine way LE's renewal process works if you don't have a web server. I hate doing it every 90 days and if I have to do it every 45 days I'll probably just give up on sending and receiving files.
I should also mention that it took me hours to figure out the procedure i am using now, and it seems so stupid because I have that server locked down with two firewalls (one on the router and then iptables on the server) I don't even want a certificate but the designers of Gajim in their infinite wisdom(?) decided not to give users the option to in effect say "I trust this server, just ignore an expired or missing certificate." And the designers of LE never seemed to consider that some people might need a certificate that are not running a web server (and don't want to run one) and provide some automatic mechanism for renewing in that situation. And just because someone uses Linux does not mean we are all programmers or expert script writers. I can follow "cookbook" type instructions (that is the ONLY way I got Prosody set up) but I can't write a script or program to automate this process (again, I'm OLD).
I know somebody's going to be tempted to say I should use some other software (other that Prosody or Gajim). I tried other IM clients and Gajim is the only one that works the way I expect it to. As for Prosody, I have from time to time tried setting up other XMPP servers that people have suggested and could never get any of them to work. As I said, had I not found "cookbook" type instructions for setting up Prosody I would probably not be running that either, it was a PITA to get working but not that it IS working I don't want to go through that again. And Prosody isn't the problem, it works perfectly fine without a valid certificate, but pretty much every Linux IM client I have tried either loses functionality or won't work at all if the server doesn't have a valid certificate. And no I don't run or use Docker, nor do I have any desire to (especially on a Raspberry Pi).
EDIT: After giving this some thought I decided look further into this, and discovered that while Certbot can't handle this, it's possible that a script called acme.sh can. See https://github.com/acmesh-official/acme.sh?tab=readme-ov-file (also https://github.com/acmesh-official/acme.sh?tab=readme-ov-file#8-automatic-dns-api-integration - may need to scroll up just a bit, the pertinent item is "8. Automatic DNS API integration"). I haven't tried it yet (just manually renewed yesterday) but it looks promising if I can figure it out. Thought I'd post the links for anyone else that might be in the same situation.
That's a lot easier said that done for hobbyists that need a certificate for their home server. I will give you a real world example. I run Ubuntu Linux (but without snaps) on my main desktop machine, however like the person you replied to I am old and I don't have a good memory so when I do use Linux I try to take the easiest approach possible. But I also have a server running on a Raspberry Pi, and another family member (that has a Mac) that I exchange XMPP-based instant messages with. The server runs Prosody, and on my Ubuntu box I run Gajim (the one from the apt repository which is version 1.8.4, I have no idea why they won't put a newer version in the repo). The other family member uses some MacOS-based XMPP client. The problem is that if there is not a valid certificate on the server, Gajim refuses to send or receive anything other than plain-text messages. It won't sent or receive files or pictures, etc. unless the certificate is valid.
However the Raspberry Pi does other things as well (it would be silly to dedicate a Pi to just running Prosody) and one of those other things puts a pseudo-web server of sorts on port 80, which is only accessible from the local network. So I can't use Certbot because it insists on being able to connect to a web server. Even if I had a general web server on the Pi, which I don't have and don't want, it would be restricted for local access only. Also, I'm not paying for a DNS address for my own home server. What I found I could do is get a DuckDNS address (they are free) and use that to get a LE certificate. But the procedure is very manual and kind of convoluted, you have to ssh into the server using two separate sessions and enter some information in each one, because of the absolutely asinine way LE's renewal process works if you don't have a web server. I hate doing it every 90 days and if I have to do it every 45 days I'll probably just give up on sending and receiving files.
I should also mention that it took me hours to figure out the procedure i am using now, and it seems so stupid because I have that server locked down with two firewalls (one on the router and then iptables on the server) I don't even want a certificate but the designers of Gajim in their infinite wisdom(?) decided not to give users the option to in effect say "I trust this server, just ignore an expired or missing certificate." And the designers of LE never seemed to consider that some people might need a certificate that are not running a web server (and don't want to run one) and provide some automatic mechanism for renewing in that situation. And just because someone uses Linux does not mean we are all programmers or expert script writers. I can follow "cookbook" type instructions (that is the ONLY way I got Prosody set up) but I can't write a script or program to automate this process (again, I'm OLD).
I know somebody's going to be tempted to say I should use some other software (other that Prosody or Gajim). I tried other IM clients and Gajim is the only one that works the way I expect it to. As for Prosody, I have from time to time tried setting up other XMPP servers that people have suggested and could never get any of them to work. As I said, had I not found "cookbook" type instructions for setting up Prosody I would probably not be running that either, it was a PITA to get working but not that it IS working I don't want to go through that again. And Prosody isn't the problem, it works perfectly fine without a valid certificate, but pretty much every Linux IM client I have tried either loses functionality or won't work at all if the server doesn't have a valid certificate. And no I don't run or use Docker, nor do I have any desire to (especially on a Raspberry Pi).
EDIT: After giving this some thought I decided look further into this, and discovered that while Certbot can't handle this, it's possible that a script called acme.sh can. See https://github.com/acmesh-official/acme.sh?tab=readme-ov-file (also https://github.com/acmesh-official/acme.sh?tab=readme-ov-file#8-automatic-dns-api-integration - may need to scroll up just a bit, the pertinent item is "8. Automatic DNS API integration"). I haven't tried it yet (just manually renewed yesterday) but it looks promising if I can figure it out. Thought I'd post the links for anyone else that might be in the same situation.