Skip to content

Releases: StackExchange/dnscontrol

v4.28.2

08 Dec 16:54
0ae4acc

Choose a tag to compare

Greetings DNS fans!

This is a bugfix release. BIND users discovered that "push" was regenerating zonefiles even when there was no change. The reason was that the %D verb was always "" (null string). Shout out to @ondohotola for quickly reporting this bug and confirming the workaround. A full fix is included in v4.28.2.

This release also includes some documentation and tool improvements.

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all of your contributions!

Sincerely,
--Tom Limoncelli

Monthly video call!

Everyone is invited to the Monthly DNSControl Community Video Conference Call on the 3rd Monday of each month. Join whether you are a new user with questions or an experienced developer that wants to discuss DNSControl internals... or anything in between! Meeting details on GitHub Discussions.

Changelog

Documentation:

Dependencies:

Other changes and improvements:

Deprecation warnings

Warning

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.

Install

macOS and Linux

Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

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

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/StackExchange/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

v4.28.1

05 Dec 18:16
a0288bd

Choose a tag to compare

Greetings DNS fans!

This release fixes a bug found shortly after v4.28.0 was released. It only affects users of the "split horizons" feature.

Version v4.28.0 was a big release with many changes. We still recommend exercising great caution before putting it into production. See the v4.28.0 release notes for testing advice. Please file a bug report if you find any issues.

Thanks to gvengel for reporting the bug so quickly.

Changelog

Other changes and improvements:

Deprecation warnings

Warning

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.

Install

macOS and Linux

Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

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

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/StackExchange/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

v4.28.0

05 Dec 03:38
11e9fd1

Choose a tag to compare

v4.28.0 Pre-release
Pre-release

Greetings DNS fans!

This release needs extra testing

WARNING: This release may be a little unstable. Test carefully before putting into production especially if you use IDN (Unicode in domain names) or Cloudflare redirects (CF_REDIRECT, CF_TEMP_REDIRECT, CF_SINGLE_REDIRECT), or the BIND "filenameformat" feature.

We're using the Github feature to mark this as a "pre-release". It will be labeled as non-production ready. It will be marked as production ready in a few weeks, or we may just skip to a .1 release if bugs are found.

Volunteer changes:

  • We're sad to announce @Deraen and @philhug are stepping down as maintainers of the DIGITALOCEAN and OPENSRS respectively. We‚Äôre grateful for their past contributions and wish them well in their future endeavors.
  • Applause all around to @chicks-net for stepping up to be the new maintainer of DIGITALOCEAN! We look forward to great things!
  • We need a new maintainer for OPENSRS. If you are interested or have questions, please contact our official Liaison To Maintainers, @fm by opening an issue.

Monthly video call is Mon, Dec 15, 2025

Our next "Monthly DNSControl Community Video Conference Call" is on Monday, Dec 15. Join in whether you are a new user with questions or an experienced developer that wants to discuss DNSControl internals. More details at https://github.com/StackExchange/dnscontrol/discussions/3840. All are invited!

There's so much new in this release!

  • New Providers!

  • IDN support for domain names! c11a523 (#3879) (@tlimoncelli)

    • Internationalized domain name (IDN) support has been extended to include domain names! Previously Unicode was supported in labels but not domains. It now works everywhere (we hope). This code is very new. Please test before putting it into production. Please file bug reports with problems or suggestions. I don't use IDN myself so your feedback is extra important!
    • Thanks to everyone that offered suggestions about how to go about adding IDN support. There was a lively discussion in
      #2874 (shout out to @KaiSchwarz-cnic for explaining the conventions that other SDKs use). I haven't implemented all the IDN-related features discussed, but this is a good start.
    • It's impossible for me to test this with all providers, so please tread carefully, test before going into production, and submit bug reports!
  • DNSControl now plays well with K8s's "external-dns" service! f1b30a1 (#3869) (@tridion)

    • Do you use K8s and find that DNSControl wants to remove DNS records created by the external-dns service? Sure, you can add IGNORE() statements ahead of time, but unless you are a time-traveler it's difficult to know what parameters to use. Plus, manual work? Yuck!
    • The new IGNORE_EXTERNAL_DNS() domain modifier automatically works around (ignores) DNS records created by the external-dns service.
    • Check out #3869 and the documentation for details.
    • Thanks to @tridion for taking the intiative to work out all the details of how the TXT registry works and extending DNSControl to utilize the protocol.
  • AKAMAIEDGEDNS now supports ALIAS and AKAMAITLC records! 97209bc (#3836) (@gvengel)

  • CLOUDFLAREAPI now supports LOC records ec9a9e2 (#3857) (@kevinji)

  • GANDI_V5 and BIND now support the RP record. This is the first record type to use the new "RecordConfig v2" system (see below).

  • INWX now runs concurrently! 6e42ccf (#3856) (@patschi)

  • INWX fixed to support their unexpected data-type breaking-change! 9aad292 (#3855) (@patschi)

  • The output of --report now includes details about what changed! 9d4cb30 (#3835) (@kevinneufeld)

And not to forget...

  • It is no longer an error if creds.json is zero length. (#3844) (@tlimoncelli)
  • @das7pad found that many providers may have a bug when used concurrently and has reached out to them with code fixes. This release includes improvements for CLOUDNS, DESEC, and ROUTE53. Thanks for taking the initiative to do this, @das7pad!
  • @gvengel discovered the shoutrrr module we were using was no longer supported and took the initiative to find its replacement! Thanks, @gvengel!
  • And much, much, more!

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all of your contributions!

Cloudflare's Page Rules are gone.

POTENTIAL BREAKING CHANGE:

Cloudflare is removing support for Page Rules and converting them to "Single Redirects". Earlier this year DNSControl added a mechanism where Page Rules were optionally transpiled into Single Redirect regular expressions.

This translation is no longer optional. All code for Page Rules has been removed. CF_TEMP_REDIRECT and CF_REDIRECT simply generate CF_SINGLE_REDIRECT records.

The first time you run "push" with the new release, DNSControl will change the "name" field (removing the "001,", "002,", .... prefix). Also, the order of the rules may change. The order can be managed in Cloudflare's dashboard, DNSControl will not affect the order. (Though, in the future we'd like for DNSControl to enforce ordering too.)

Please "preview" and verify the changes before running "push".

BIND "filenameformat" changes

POTENTIAL BREAKING CHANGE:

Implementing the IDN changes meant some potential breaking changes to the "filenameformat" string used in the BIND provider. I think (I hope!) that the only configurations that will break are ones with uppercase Unicode runes. That said, please review the "filenameformat" section of the BIND documentation for details.

RecordConfig v2 (big news!)

DNSControl stores each DNS Record in a structure called a "RecordConfig". The format of this record was showing its age. It consumes more memory as more record types are supported, it isn't flexible, it isn't very OO, and adding new record types is very difficult. In fact, the instructions for adding new types is many pages long. Worst of all, code for each record type is splattered all over the code base instead of being centralized to one place.

About a year ago I started working on prototypes that would fix these problems. There were many challenges. How could we make adding new record types super easy? How could we migrate a lot of the work done in JavaScript to the main Go code (which would make it easier to write unit tests and use more advanced debugging tools)? How could we do all that and not break old code?

The first 2 attempts were failures but I learned a lot. In particular I learned that it wasn't feasible to convert all the existing record types immediately and instead I could make the old and new system coexist. Converting older types could come later.

I'm excited to announce "RecordConfig v2"!

  • It's easier to add new DNS types.
    • DNSControl's main code does almost all the work; the code for a specific type is minimized.
    • It consolidates almost all code for a record type to a single file (and paves a path to fix the remaining exceptions)
    • You only need to know Go, instead of also needing to know JavaScript.
    • New record types and "builders" can leverage Go's testing framework, which will make brittle features like LOC and SPF_BUILDER more stable in the future.
  • It works side-by-side the old RecordConfig.
    • Older types require no code changes, new types use the new system.
    • There's an obvious path to migrate existing types to use the new system eventually.
  • All normalization and validation happens earlier.
    • No longer does code have to worry whether a RecordConfig has been normalized or validated because all that happens right away. Code that accesses a RecordConfig is shorter as a result.
    • IDN handling is done properly, not as an after-thought
  • It creates a path towards automatic code generation.
    • Imagine DNSControl supporting any newly standardized record types automatically!

In this release RP and CF_SINGLE_REDIRECT are the only record types that use v2. One is entirely new to DNSControl, the other is an old type that's been migrated. That proves the concept works. Converting existing types will happen over the next year.

The original RecordConfig was designed in 2014. We're 11+ years smarter both about how to best use Go and what is important (and not important) to DNSControl users.

All of this is below the surface. It doesn't affect the user's experience or the format of dnsconfig.js. However in the future users will appreciate new record types and "builders" being added more rapidly and with better stability.

This change was low risk in that not many users use RP or CF_SINGLE_REDIRECT. However the change did affect many areas of the code base so please test carefully before putting v4.28.0 into production.

Feedback is appreciated!

P.S. If you are interested in converting existing types to the new system, please ping me!

Changelog

Major features:

Read more

v4.27.1

05 Nov 18:07
71c2cc2

Choose a tag to compare

Greetings DNS fans!

  • POWERDNS can now manage "varients". The tag you assign to the domain ("example.com!tagname") is used as the PowerDNS varient. A flag enables this.
  • INWX's enforcement of the RFC 7505 prohibition of mixed regular/null MX records is now checked at "push" instead of "preview". In other words, we let the API decide if the records are valid instead of trying to emulate (i.e. guess) INWX's algorithm.
  • NETCUP now supports TLSA, POWERDNS supports the "LUA" pseudo record type.
  • ROUTE53 now supports RoleArn and ExternalId.
  • DKIM_BUILDER() has been refactored to improve input validation and error handling.
  • ...and many documentation updates.

FYI: There was no v4.27.0 release.

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all of your contributions!

Changelog

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

Deprecation warnings

Warning

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.

Install

macOS and Linux

Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

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

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/StackExchange/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

v4.26.0

10 Oct 18:55
db21e30

Choose a tag to compare

Greetings DNS fans!

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all of your contributions!

For many years users have complained that the validation messages don't report which line contains the error... and rightfully so! It's pretty difficult to debug a problem when you don't know where to look. Sadly the JavaScript interpreter we use doesn't make it easy. I finally found a way. It isn't clean nor pretty but it works! Sadly we can't extract the filename, but at least we're moving in the right direction.

Here's an example where the error is 5 chars into line 1882:

2025/10/10 13:34:44 ERROR: [line::1882:5]: MX example.com: target (mx.sendgrid.net) must end with a (.) [https://docs.dnscontrol.org/language-reference/why-the-dot]

Changelog

Major features:

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

Deprecation warnings

Warning

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.

Install

macOS and Linux

Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

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

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/StackExchange/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

v4.25.0

15 Sep 20:24
1abb11d

Choose a tag to compare

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all of your contributions!

Two highlights in this release:

The ability to limit concurrency has been a frequent request. The --cmax flag now lets you control that. This is particularly useful for AXFRDDNS users who are frequently talking to DNS servers that protect themselves by limiting how many TCP connections they will accept at any given moment.

Users of the SPF optimizer will appreciate no longer having to update the spfcache.json file. Simply delete it and the SPF cache is disabled. It probably never was useful anyway.

Changelog

Major features:

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

Deprecation warnings

Warning

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.

Install

macOS and Linux

Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

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

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/StackExchange/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

v4.24.0

29 Aug 11:32
45c98b9

Choose a tag to compare

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all our contributors!

Changelog

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

Deprecation warnings

Warning

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.

Install

macOS and Linux

Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

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

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/StackExchange/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

v4.23.0

06 Aug 14:22

Choose a tag to compare

Greetings, DNS fans!

Breaking changes:

  • The --populate-on-preview flag now defaults to false, which is safer and matches user expectation that preview never mutates (#3693) (@tlimoncelli)

Highlights

  • NEW PROVIDER: Joker (Thanks @atrull!)
  • NEW FEATURE: DKIM_BUILDER() (Thanks @costasd!)
  • Zone creation and gathering is now more reliable and handles errors better (Thanks @gvengel!)
  • Users now receive a warning if they use IGNORE() or NO_PURGE on providers that can not implement them reliably
  • DIGITALOCEAN upgraded to use the "diff2" engine, which is more modern and makes IGNORE() and NO_PURGE reliable. (Thanks @Deraen!)
  • FORTIGATE now handles NS and MX records (Thanks @KlettIT!)
  • Tons of doc improvements (Thanks @cafferata!)

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all our contributors!

Sincerely,
Tom

Changelog

Major features:

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

Deprecation warnings

Warning

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.

Install

macOS and Linux

Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

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

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/StackExchange/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

v4.22.0

15 Jul 13:51
a8a3ea7

Choose a tag to compare

Greetings, DNS fans!

This is a BIG release! You should do extra testing before you put this into production. MSDNS and get-certs are removed. 2 new providers added. Many, many, other improvements!

Breaking changes:

  • get-certs subcommand is removed. It has been unsupported since December 2022 and warnings that it would be removed in July 2025 started about a year ago.
  • MSDNS (ActiveDirectory DNS) provider has been removed, as it can no longer be supported.

Other exciting news:

  • New providers: ADGUARDHOME, FORTIGATE
  • These providers now support concurency: LUADNS, MYTHICBEASTS, PORKBUN
  • The --notify flag now makes errors visible to ease debugging
  • The documentation list of providers is reorganized into smaller charts
  • Many documentation fixes including many broken links now work
  • The User-Agent now properly includes a version number
  • Many, many, dependencies have been upgraded, including the newest PowerDNS and LUADNS SDKs.

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all our contributors!

Sincerely,
Tom

Changelog

Major features:

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

Deprecation warnings

Warning

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
  • NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
  • get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400

Install

macOS and Linux

Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

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

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/StackExchange/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.

v4.21.0

04 Jun 16:05
df7bf9f

Choose a tag to compare

Greetings, DNS fans!

What's new? GCORE and NS1 now handle zone creation and listing better. I'm also excited to announce the new "providers page" (which is auto-generated). It is much more readable. Many people were involved in this change, with @chicks-net taking the lead and writing the code. View the results here: https://docs.dnscontrol.org/provider/index

There were many documentation updates and bugfixes.

Reminder: get-certs (cert renewals) and the MSDNS provider are scheduled to be removed in July 2025. See below.

Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all our contributors!

Sincerely,
Tom

Changelog

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Deprecation warnings

Warning

  • REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
  • MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
  • NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
  • get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400

Install

macOS and Linux

Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker

You can use the Docker image from Docker hub or GitHub Container Registry.

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

Anywhere else

Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.

Or, if you have Go installed, you can install the latest version of DNSControl with the following command:

go install github.com/StackExchange/dnscontrol/v4@main

Update

Update to the latest version depends on how you choose to install dnscontrol on your machine.

Update with Homebrew

brew upgrade dnscontrol

Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.