Running DNSMasq on an old RasPI & USB SSD. No problems no issues. Just quietly runs in the background.
I've run DNS servers in the past - BIND and pdns. I've now gone all in ... because ... well it started with ACME.<p>As the OP states you can get a registrar to host a domain for you and then you create a subdomain anywhere you fancy and that includes at home. Do get the glue records right and do use dig to work out what is happening.<p>Now with a domain under your own control, you can use CNAME records in other zones to point at your zones and if you have dynamic DNS support on your zones (RFC 2136) then you can now support ACME ie Lets Encrypt and Zerossl and co.<p>Sadly certbot doesn't do (or it didn't) CNAME redirects for ACME. However, acme.sh and simple-acme do and both are absolutely rock solid. Both of those projects are used by a lot of people and well trod.<p>acme.sh is ideal for unix gear and if you follow this blokes method of installation: <a href="https://pieterbakker.com/acme-sh-installation-guide-2025/" rel="nofollow">https://pieterbakker.com/acme-sh-installation-guide-2025/</a> usefully centralised.<p>simple-acme is for Windows. It has loads of add on scripts to deal with scenarios. Those scripts seem to be deprecated but work rather well. Quite a lot of magic here that an old school Linux sysadmin is glad of.<p>PowerDNS auth server supports dynamic DNS and you can filter access by IP and TSIG-KEY, per zone and/or globally.<p>Join the dots.<p>[EDIT: Speling, conjunction switch]
I think CNAME redirections being not supported is reasonable choice. Would make my life easier as well but it opens all kinds of bad possibilities that bad actors would definitely use.
I'm a fan of uACME:<p><a href="https://github.com/ndilieto/uacme" rel="nofollow">https://github.com/ndilieto/uacme</a><p>Tiny, simple, reliable. What more can you ask?
Neat, I've used lego (<a href="https://github.com/go-acme/lego" rel="nofollow">https://github.com/go-acme/lego</a>) but will certainly have to give uacme a look, love me a simple ACME client.<p>acme.sh was too garish for my liking, even as a guy that likes his fair share of shell scripts. And obviously certbot is a non-starter because of snap.
Certbot has earned my ire on just about every occasion I've had to interact with it. It is a terrible program and I can't wait to finish replacing it everywhere.<p>The new setup is using uAcme and nsupdate to do DNS-01 challenges. No more fiddling with any issues in the web server config for a particular virtual host, like some errant rewrite rule that prevents access to .well-known/.
Seconded. Don’t use certbot; it’s an awful piece of user-hostile software, starting from snap being the only supported installation channel. Everything it does wrong, acme.sh does right.
I prefer and use the knot DNS server for authoritative DNS (and either knot-resolver or Unbound for caching DNS servers) myself: it is quite feature-rich, including DNSSEC, RFC 2136 support, an easy master-slave setup. Apparently it does support database-based configuration and zone definitions, too, but I find file-based storage to be simpler.
One thing worth noting if you're using your own DNS for Let's Encrypt DNS-01 challenges: make sure your authoritative server supports the RFC 2136 dynamic update protocol, or you'll end up writing custom API shims for every ACME client. PowerDNS has solid RFC 2136 support out of the box and pairs well with Certbot's --preferred-challenges dns-01 flag. BIND works too but the ACL configuration for allowing dynamic updates from specific IPs is fiddly to get right the first time.
How to make it DNSSEC?
With Knot, you can just add ~8 lines to your config [0], copy the records to your registrar, and then you're done.<p>[0]: <a href="https://www.knot-dns.cz/docs/3.5/singlehtml/index.html#automatic-zsk-management" rel="nofollow">https://www.knot-dns.cz/docs/3.5/singlehtml/index.html#autom...</a>
If you don't absolutely have to, then don't.<p>That is to say, if you misconfigure it, or try to turn it off, you will have an invalid domain until the TTL runs out, and it's really just not worth the headache unless you have a real use case.