Repolode
DNSControl

DNSControl/dnscontrol

Infrastructure as Code for DNS: define DNS records in a JavaScript-based config and push them to many providers.

Stars
3,979
Forks
550
Open issues
32
Last commit
yesterday

What is it?

DNSControl manages DNS records as code. You describe zones and records in a JavaScript-compatible configuration file, and DNSControl compares that desired state with what each provider currently holds, then previews and applies the differences through the provider's API.

It ships with plugins for around 77 DNS providers and registrars, including Amazon Route 53, Cloudflare, Gandi, Google Cloud DNS, and self-hosted options such as ISC BIND and PowerDNS. One configuration can push the same records to several providers at once, which makes switching providers or testing a new one less risky. The tool runs on Linux, macOS, and Windows, and the provider model is designed so new providers can be added as plugins.

The project is written in Go and is typically run from the command line, in a Docker container, or through a GitHub Action, so DNS changes can be reviewed in pull requests and rolled out by CI.

Key features

  • 01Describes DNS zones and records in a JavaScript-compatible config file.
  • 02Previews changes against live providers before applying them with push.
  • 03Syncs the same records to multiple DNS providers from one configuration.
  • 04Supports around 77 DNS providers and registrars through plugins.
  • 05Provides variables and macros to reuse IPs, SPF and MX settings across domains.
  • 06Runs on Linux, macOS, and Windows, and is available as a Docker image.

Use cases

  • Managing DNS records for many domains through Git and pull-request review.
  • Migrating a zone from one DNS provider to another while keeping both in sync during testing.
  • Automating DNS changes in CI/CD pipelines with the official GitHub Action.
  • Keeping DNS records for self-hosted BIND or PowerDNS servers in version control.

Quick start

  1. 1

    Install DNSControl from packages or source, following the official instructions

  2. 2

    Run the interactive setup wizard to create creds.json and dnsconfig.js

    dnscontrol init
  3. 3

    Or run it without installing, using the Docker container

    docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview

Things to know

  • REV() will switch from RFC2317 to RFC4183 after v5.0, which is a breaking change.
  • The NAMEDOTCOM, OPENSRS and SOFTLAYER providers currently have no maintainer.

Topics

FAQ

What is dnscontrol?
Infrastructure as Code for DNS: define DNS records in a JavaScript-based config and push them to many providers. DNSControl manages DNS records as code. You describe zones and records in a JavaScript-compatible configuration file, and DNSControl compares that desired state with what each provider currently holds, then previews and applies the differences through the provider's API.
Is dnscontrol free to use? What license does it have?
dnscontrol is open source under the MIT license. Check the license terms before using it in commercial products.
Is dnscontrol still maintained?
Actively maintained. The last commit to dnscontrol was on Oct 21, 2026.
What can I use dnscontrol for?
Managing DNS records for many domains through Git and pull-request review. Migrating a zone from one DNS provider to another while keeping both in sync during testing. Automating DNS changes in CI/CD pipelines with the official GitHub Action. Keeping DNS records for self-hosted BIND or PowerDNS servers in version control.
How do I install dnscontrol?
Install DNSControl from packages or source, following the official instructions Run the interactive setup wizard to create creds.json and dnsconfig.js: dnscontrol init Or run it without installing, using the Docker container: docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview
Where can I get dnscontrol?
The source code and installation instructions are on GitHub: https://github.com/DNSControl/dnscontrol

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects