Get started

Pick the page for the way you run DNS. Each one names the guides and references that matter for that job and skips the rest.

kudurru is one binary with several roles: the DNS server (kudurru serve), the client (kudurru get, apply, zones, query, ...), and the supervisors that run dnsdist (kudurru edge run) and keepalived (kudurru vip run) in their own containers. Which of them you need depends on the deployment shape:

ShapeSource of truthGuide
One container (Docker, Podman) or a Linux packagestate.db on a volumeOne container
Three hosts with a virtual IP (dnsdist + keepalived)identical file-managed configuration on every hostCompose HA
Kubernetes, several replicasCRDs in the apiserverHelm, kustomize
Kubernetes, one node ("Pi-hole on k3s")state.db on a PersistentVolumeClaimHelm, mode=standalone
  • Home network in one container

    One docker run or compose file, the dashboard on port 8080, blocking with per-device rules, and local names for the things on your network.

  • Kubernetes with Helm

    Two charts, CRDs as the source of truth, replicas that answer from memory through an apiserver outage, and aggregated RBAC roles.

  • Highly available DNS for a network

    A virtual IP held by keepalived, dnsdist on every host, real client addresses through authenticated PROXYv2, and zone transfers to your existing secondaries.

  • Automate with the API and the CLI

    One REST API behind the dashboard, the CLI and your scripts, with scoped tokens, Kubernetes-shaped objects and a generated OpenAPI document.

Source: site/content/start/_index.md