Hetzner DNS Console
To use this provider, add an entry to
HETZNERalong with a Hetzner API Key.
This provider does not recognize any special metadata fields unique to Hetzner DNS Console.
An example configuration:
var REG_NONE = NewRegistrar("none");
var DSP_HETZNER = NewDnsProvider("hetzner");
D("example.tld", REG_NONE, DnsProvider(DSP_HETZNER),
As of June 2022, the Hetzner DNS Console API does not accept spaces in CAA records.
0 issue "letsencrypt.org; validationmethods=dns-01; accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234"
Removing the spaces might still work for any consumer of the record.
0 issue "letsencrypt.org;validationmethods=dns-01;accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/1234"
Hetzner DNS Console does not allow changing the SOA record via their API. There is an alternative method using an import of a full BIND file, but this approach does not play nice with incremental changes or ignored records. At this time you cannot update SOA records via DNSControl.
Hetzner is rate limiting requests in multiple tiers: per Hour, per Minute and per Second.
Depending on how many requests you are planning to perform, you can adjust the delay between requests in order to stay within your quota.
optimize_for_rate_limit_quotacontrols this behavior and accepts a case-insensitive value of
The default for
Example: Your per minute quota is 60 requests and in your settings you specified
Minute. DNSControl will perform at most one request per second. DNSControl will emit a warning in case it breaches the next quota.
Every response from the Hetzner DNS Console API includes your limits:
curl --silent --include \
--header 'Auth-API-Token: ...' \
| grep x-ratelimit-limit
Every DNSControl invocation starts from scratch in regard to rate-limiting. In case you are frequently invoking DNSControl, you will likely hit a limit for any first request. You can either use an out-of-bound delay (e.g.
$ sleep 1), or specify
start_with_default_rate_limitin the settings of the provider. With
start_with_default_rate_limitDNSControl uses a quota equivalent to
x-ratelimit-limit-second: 1until it could parse the actual quota from an API response.