kruno 6a93510f24 Add gibdns/draft-02 support.
The Gcore API has no batch endpoint, so rrset.batch applies operations one
RRset at a time and rejects atomic: true.

Requires gibdns-go v0.3.0. gibdns/draft-01 behavior is unchanged.
2026-10-27 20:11:42 +01:00
2026-10-27 20:11:42 +01:00
2026-10-27 20:11:42 +01:00
2026-10-27 20:11:42 +01:00
2026-09-13 00:58:57 +02:00
2026-09-13 00:58:57 +02:00
2026-09-13 15:40:57 +02:00
2026-10-27 20:11:42 +01:00
2026-10-27 20:11:42 +01:00

gibdns-gcore

gibdns provider for Gcore DNS. Hosts such as gibcert execute this binary to publish ACME DNS-01 TXT records.

Gcore's API has no TLSA support. Do not use this provider for automatic DANE publication.

Protocol TXT TLSA Zone discovery
gibdns/draft-01 yes no yes
gibdns/draft-02 yes no yes

Install

Download the archive or .deb for your OS from the releases page.

Debian package (installs to /usr/libexec/gibdns):

sudo dpkg -i gibdns-gcore_*_linux_amd64.deb

Tarball:

sudo install -D -m 0755 gibdns-gcore /usr/local/libexec/gibdns/gibdns-gcore

From source:

make install PREFIX=/usr/local

The binary is not an interactive CLI and is intentionally not installed on PATH. Confirm the installation, then let the host invoke it:

# Debian package:
test -x /usr/libexec/gibdns/gibdns-gcore
# Source or tarball install:
test -x /usr/local/libexec/gibdns/gibdns-gcore

Use /usr/libexec/gibdns/gibdns-gcore for a Debian package or /usr/local/libexec/gibdns/gibdns-gcore for a source or tarball install in host configuration. See Using gibdns for the host and provider split.

Use with gibcert

Store a Gcore permanent API key at /etc/gibcert/gcore-api-key with mode 0600. Then:

provider gcore {
  type dns
  driver exec
  command /usr/libexec/gibdns/gibdns-gcore
  zone example.com.

  secret api_key {
    file /etc/gibcert/gcore-api-key
  }
}

certificate wildcard-example.com {
  account letsencrypt
  names example.com *.example.com

  challenge dns-01 {
    provider gcore
    propagation-timeout 120s
  }
}

zone is optional because this provider advertises zone discovery. Set it when you want an exact zone selector. If installed from source or a tarball, use /usr/local/libexec/gibdns/gibdns-gcore instead.

gibcert binding details are in External DNS Providers.

Secrets

  • api_key (required): a Gcore permanent API key

Config

  • api_url (optional)

Minimum TTL depends on the Gcore plan. The provider advertises 120 seconds as a conservative hint. Patch is a full RRset replace, so concurrent_safe_patch is false; use if_revision. TLSA is not advertised.

This provider talks to the official Gcore DNS SDK rather than libdns/gcore.

Batching

gibdns/draft-02 adds rrset.batch. The Gcore DNS API (checked against Gcore DNS SDK v0.3.3 and the Gcore API reference) has only single-RRset create, update and delete calls, besides whole-zone import, so there is no batch endpoint. This provider therefore applies a batch one RRset at a time, in request order, issuing the same create, update or delete requests as the equivalent single rrset.patch or rrset.replace calls. There is no bulk read either: all RRsets are read first, one request each, and each is read again after the writes to report the result. The first failing operation stops the batch and is returned with its details.op_index; the operations before it stay applied and the ones after it are not attempted. atomic: true is not supported: capabilities report features.batch.atomic: false, and such a request fails with unsupported_precondition before any upstream request. No maximum batch size is advertised.

In gibdns/draft-02 capabilities, if_revision and if_absent are check_then_write: the precondition is evaluated against freshly read state and the write follows. Gcore has no conditional write, so a concurrent writer between the read and the write can be overwritten. gibdns/draft-01 behaves as before.

Development

make test
make build
make snapshot

Publish a tagged release with make release. That target runs GoReleaser via go run; a GITEA_TOKEN with package/release access is required.

S
Description
Gcore DNS provider for gibdns
Readme 0BSD
63 KiB
0 Stars 1 Watchers 0 Forks
2026-10-27 21:54:54 +00:00
Languages
Go 90.1%
Makefile 9.9%