A few months ago I went on a quest for a DNS server and was dissatisfied with current maintained projects. They were either good at adblocking (Blocky, grimd…) or good at specifying custom DNS (CoreDNS…).

So I forked grimd and embarked on rewriting a good chunk of it for it to address my needs - the result is leng.

  • it is fast
  • it is small
  • it is easy
  • you can specify blocklists and it will fetch them for you
  • you can specify custom DNS records with proper zone file syntax (SRV records, etc)
  • it supports DNS-over-HTTPS so you can stay private
  • it is well-documented
  • can be deployed on systemd, docker, or Nix

I have been running it as my nameserver in a Nomad cluster since! I plan to keep maintaining and improving it, so feel free to give it a try if it also fulfils your needs

    • Nico@r.dcotta.euOP
      link
      fedilink
      English
      arrow-up
      11
      arrow-down
      6
      ·
      1 year ago

      Yes (much simpler) and also allows you to specify custom DNS, which is very useful for more advanced self-hosted deployments - this is something PiHole is just not built to address

      • ShunkW@lemmy.world
        link
        fedilink
        English
        arrow-up
        32
        arrow-down
        1
        ·
        1 year ago

        How is PiHole not built for custom DNS? It literally has an entire management page for that.

        • chiisana@lemmy.chiisana.net
          link
          fedilink
          English
          arrow-up
          9
          ·
          1 year ago

          Last I used PiHole many years back, it was possible to use it as DHCP but not possible to add custom DNS records like TXT, SRV, etc. . Perhaps that’s what OP is trying to solve for?

            • Nico@r.dcotta.euOP
              link
              fedilink
              English
              arrow-up
              2
              ·
              1 year ago

              Including SRV records? I found that some servers (blocky as well) only support very basic CNAME or A records, without being able to specify parameters like TTL, etc.

              I also appreciate being able to define this in a file rather than a web UI

              • AndyM@feddit.de
                link
                fedilink
                English
                arrow-up
                11
                ·
                1 year ago

                It’s based on dnsmasq. You could always specify custom records, even before there was an option in the web interface. Just create a config file in /etc/dnsmasq.d

                Just look up these options: host-record cname srv-host

                • Nico@r.dcotta.euOP
                  link
                  fedilink
                  English
                  arrow-up
                  4
                  ·
                  1 year ago

                  Thanks! I didn’t know you could do that. I’ll see how it compares to my current solution

              • Eideen@lemmy.world
                link
                fedilink
                English
                arrow-up
                4
                ·
                1 year ago

                I do it via dnsmasq, that Pi uses.

                I have a ansible playbook, that i use to sync my Piholes.

              • ChickenBoo@lemmy.jnks.xyz
                link
                fedilink
                English
                arrow-up
                1
                ·
                1 year ago

                You can do the basic records via file. /etc/pihole/custom.list is a hosts formatted file for records so you don’t have to use a gui.

        • Nico@r.dcotta.euOP
          link
          fedilink
          English
          arrow-up
          2
          ·
          1 year ago

          Like chiisana@lemmy.chiisana.net said - I want to be able to add my own records (SRV, A, CNAME…) so that I can point to the services hosted in my VPN. CoreDNS is good for this but it doesn’t also do adblocking. If PiHole can do this, I don’t know how.

          I also don’t need a web UI, DHCP server, and so on: I just want a config file and some prometheus metrics

          • jherazob@kbin.social
            link
            fedilink
            arrow-up
            1
            ·
            1 year ago

            Tangential partial offtopic aside: Unless i’m misunderstanding, you’re setting this up behind your home router and allowing it on your various devices using a VPN. Am i right? Any details, or even better, guides, on how to replicate this setup? I guess the DNS records on Leng are to be able to call services inside your home LAN by name instead of IPs, which is a nice quality of life upgrade.