
In simple English
This project helps you run your own domain name system. That is the directory that translates website names into computer numbers. It lets you publish your own domain records and answer queries from the internet. It also helps you route incoming traffic safely across multiple servers. You pay nothing for the software, but you need a server and technical skills to set it up. Expect to spend hours configuring files and testing network rules.
What it is
This repository contains three distinct tools for handling domain names: an authoritative name server, a recursive resolver, and a load balancer. All three programs are written in C++ and can be built from this single codebase.
What it is good for
System administrators and self-hosters who want full control over their network routing and domain name infrastructure.
- Handles massive volumes of domain queries with low memory and processor usage.
- Includes a load balancer to protect your network from excessive traffic and denial of service attacks.
- Connects directly to relational databases so you can manage records with SQL queries.
- Requires complex manual configuration of system files and network settings.
- Building from source requires dozens of development packages and specific compiler flags.
- Troubleshooting network failures takes deep knowledge of how the domain name system works.
BIND
PostgreSQL
- NLnetLabs/unbound5.0k stars
Unbound is another popular recursive domain name resolver focused on security and speed.
- coredns/coredns14k stars
CoreDNS is a modular domain name server written in Go with strong plugin support.
- slok/sloth2.6k stars
Generates Prometheus alerting and recording rules from a short specification of a service level objective.
- nicolargo/glances34k stars
A live view of one computer's health, in a terminal, in a browser, or through an AI assistant.
- dokku/dokku32k stars
A small platform you install on one server, which builds and runs an app every time you push code to it.
git clone https://github.com/PowerDNS/pdns.git cd pdns git submodule init git submodule update autoreconf -vi ./configure --with-modules="bind gmysql" make