DNS providers adapted for use in Caddy to solve the ACME DNS challenge
Go
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
auroradns Add AuroraDNS, GoDaddy, and OTC DNS providers Feb 18, 2018
azure Add azure DNS provider (#13) Oct 13, 2017
cloudflare removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
cloudxns Add CloudXNS DNS provider (#20) Feb 3, 2018
digitalocean removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
dnsimple removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
dnsmadeeasy add DNS Made Easy provider (#21) Feb 18, 2018
dnspod removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
duckdns Add adapter for duckdns (#25) Apr 2, 2018
dyn removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
exoscale removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
fastdns Add Akamai FastDNS (#27) Apr 4, 2018
gandi removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
gandiv5 Add Gandiv5 provider (#19) Feb 3, 2018
generic exec->generic: Add Caddy wrapper "generic" for the lego "exec" provid… Jun 11, 2018
glesys Add GleSYS DNS-01 solver (#24) Apr 2, 2018
godaddy Fix minor error in GoDaddy adapter. (#26) Apr 3, 2018
googlecloud googlecloud: Fixed the import path for the googlecloud dns provider. (#… Jun 8, 2018
lightsail Add AWS Lightsail provider Feb 18, 2018
linode removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
namecheap removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
namedotcom Add Akamai FastDNS (#27) Apr 4, 2018
ns1 Remove dependency on xenolf/lego/acme (#17) Jan 9, 2018
otc Add AuroraDNS, GoDaddy, and OTC DNS providers Feb 18, 2018
ovh removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
pdns Add PowerDNS support (#15) Dec 29, 2017
rackspace removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
rfc2136 update rfc2136 (#12) Sep 30, 2017
route53 removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
vultr removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
.gitignore removed github.com/xenolf/lego/acme dependency in all provides to pre… Jun 2, 2017
LICENSE Create LICENSE Jul 7, 2017
README.md Fix link and typo in readme Feb 18, 2018

README.md

DNS providers for Caddy

These providers can be used to help solve the ACME DNS challenge by plugging them into Caddy 0.9 and newer:

import _ "github.com/caddyserver/dnsproviders/<provider>"

You can then use this in your Caddyfile with the tls directive like so:

tls {
	dns <provider>
}

Credentials for your DNS provider should be set in environment variables. This information is in the Automatic HTTPS page of the Caddy documentation. For more information about using your DNS provider, see the docs for your provider directly.

If you specify a DNS provider, the DNS challenge will be used exclusively; other challenge types will be disabled. Be aware that some DNS providers may be slow in applying changes.

About these packages

Caddy 0.9 and newer supports solving the ACME DNS challenge. This challenge is unique because the server that is requesting a TLS certificate does not need to start a listener and be accessible from external networks. This quality is essential when behind load balancers or in other advanced networking scenarios.

The DNS challenge sets a DNS record and the ACME server verifies its correctness in order to issue the certificate. Caddy can do this for you automatically, but it needs credentials to your DNS provider to do so. Since every DNS provider is different, we have these adapters you can plug into Caddy in order to complete this challenge.

The underlying logic that actually solves the challenge is implemented in a different package not far away from here. Caddy uses xenolf/lego, a library originally written for use in Caddy, to solve ACME challenges. If you wish to add a new provider, see the documentation for that library and write your own provider implementation. Then writing the adapter for Caddy is very easy: just copy+paste any of these existing ones, replace the names and tweak a few things, and submit a pull request. Done!