Repository navigation
Releases
v0.5.0-rc.1
Highlights
- A lighter default build. The
dnspatchimage and binaries are now about 7.4 MB foramd64(8.4 MB before). Therfc2136,yandexcloudandnamecheapproviders and the notifiers moved to the-fullbuild, which has every plugin and is about 10.9 MB. - One tag for the full build.
-tags fullreplaces-tags "ping,notify_all". A plaingo buildgives the default build; the tag of a plugin the default build leaves out (-tags rfc2136,-tags redis) adds just that one. ping_urlin every build. The hook costs 8 KB, so it is no longer behind a tag and the default build accepts it.- Notifiers. They connect at startup and log an error at once when the broker is unreachable (#88), and a RabbitMQ or MQTT connection that drops later is logged as it happens instead of when the next event fails to go out (#89).
- Online builder. https://dnspatch.github.io/builder/ reads the new layout from
schema.jsonand sends configs that need a plugin outside the default build to the-fullimage.
Breaking changes
rfc2136,yandexcloudandnamecheapare no longer in the default build (imagekrimsn/dnspatch:<version>, archivednspatch_*, plaingo install). A config that names one is rejected at startup with the tag to add. Use the-fullimage or archive, or build with-tags fullor the tag of the provider.- Build tags changed.
ping,notify_all,providers_allandretrievers_allare gone; usefull, or list the plugins you want afterdnspatch_none. An unknown tag does not failgo build, so check the tags in scripts, Dockerfiles and CI:-tags "ping,notify_all"now builds the default build, not the full one.--build-arg TAGS=ping,notify_allbecomesTAGS=full. schema.json: every plugin'sbuild_tagsis now[<name>, "full"], and each plugin has anin_default_buildfield.schema_versionstays 1.
How to adapt: Migrating from 0.4 to 0.5.
Changelog
- feat(plugins): build tags full and per-plugin, heavy plugins left out of the plain build (#90) (@KrimsN)
- feat(notify): log a lost rabbitmq or mqtt broker connection as it happens (#89) (@KrimsN)
- feat(notify): connect the notifiers at startup and log an error when a broker is unreachable (#88) (@KrimsN)
- fix(release): attach schema.json through goreleaser, releases are immutable (#82) (@KrimsN)
Full changelog: v0.4.3...v0.5.0-rc.1
Install
Docker, for linux/amd64, linux/arm64 and linux/arm/v7. The same tags are on Docker Hub and on the GitHub Container Registry:
docker pull krimsn/dnspatch:0.5.0-rc.1
docker pull ghcr.io/dnspatch/dnspatch:0.5.0-rc.1The -full tag is the same image with every plugin compiled in, the notifier backends and the rfc2136, yandexcloud and namecheap providers included:
docker pull krimsn/dnspatch:0.5.0-rc.1-fullGo:
go install github.com/dnspatch/dnspatch/cmd/dnspatch@v0.5.0-rc.1
go install -tags full github.com/dnspatch/dnspatch/cmd/dnspatch@v0.5.0-rc.1 # the full buildBinary: download the archive for your platform below and check it against checksums.txt. dnspatch_* is the lightweight build, dnspatch-full_* the one with every plugin, the notifier backends and the rfc2136, yandexcloud and namecheap providers included.
v0.4.4-rc.1
Changelog
- c69f9d0: fix(release): attach schema.json through goreleaser, releases are immutable (#82) (@KrimsN)
Install
Docker, for linux/amd64, linux/arm64 and linux/arm/v7. The same tags are on Docker Hub and on the GitHub Container Registry:
docker pull krimsn/dnspatch:0.4.4-rc.1
docker pull ghcr.io/dnspatch/dnspatch:0.4.4-rc.1The -full tag is the same image with ping_url and the notifier backends compiled in:
docker pull krimsn/dnspatch:0.4.4-rc.1-fullGo:
go install github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.4-rc.1
go install -tags "ping,notify_all" github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.4-rc.1 # the full buildBinary: download the archive for your platform below and check it against checksums.txt. dnspatch_* is the lightweight build, dnspatch-full_* the one with ping_url and the notifier backends.
v0.4.3
Changelog
Install
Docker, for linux/amd64, linux/arm64 and linux/arm/v7. The same tags are on Docker Hub and on the GitHub Container Registry:
docker pull krimsn/dnspatch:0.4.3
docker pull ghcr.io/dnspatch/dnspatch:0.4.3The -full tag is the same image with ping_url and the notifier backends compiled in:
docker pull krimsn/dnspatch:0.4.3-fullGo:
go install github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.3
go install -tags "ping,notify_all" github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.3 # the full buildBinary: download the archive for your platform below and check it against checksums.txt. dnspatch_* is the lightweight build, dnspatch-full_* the one with ping_url and the notifier backends.
v0.4.2
Changelog
- 48ee275: feat(config): declare a notifier in place with type instead of ref (#76) (@KrimsN)
- a806a04: feat(notify): add MQTT notifier (#77) (@KrimsN)
Install
Docker, for linux/amd64, linux/arm64 and linux/arm/v7. The same tags are on Docker Hub and on the GitHub Container Registry:
docker pull krimsn/dnspatch:0.4.2
docker pull ghcr.io/dnspatch/dnspatch:0.4.2The -full tag is the same image with ping_url and the notifier backends compiled in:
docker pull krimsn/dnspatch:0.4.2-fullGo:
go install github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.2
go install -tags "ping,notify_all" github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.2 # the full buildBinary: download the archive for your platform below and check it against checksums.txt. dnspatch_* is the lightweight build, dnspatch-full_* the one with ping_url and the notifier backends.
v0.4.1
Changelog
- ec0b961: feat(config): accept names as retriever and provider in an instance (#70) (@KrimsN)
- 99a4f5e: feat(notify): publish more event types and let instances override them (#71) (@KrimsN)
- e4ef03f: feat: add PNG logos and the wordmark on the docs home page (#65) (@KrimsN)
- caf7929: feat: add the logo and favicon (#64) (@KrimsN)
- 695ee9b: fix(release): keep latest on the minimal image (#66) (@KrimsN)
- e6cd50d: fix(runner): fail the cycle while a provider is backing off (#75) (@KrimsN)
Install
Docker, for linux/amd64, linux/arm64 and linux/arm/v7. The same tags are on Docker Hub and on the GitHub Container Registry:
docker pull krimsn/dnspatch:0.4.1
docker pull ghcr.io/dnspatch/dnspatch:0.4.1The -full tag is the same image with ping_url and the notifier backends compiled in:
docker pull krimsn/dnspatch:0.4.1-fullGo:
go install github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.1
go install -tags "ping,notify_all" github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.1 # the full buildBinary: download the archive for your platform below and check it against checksums.txt. dnspatch_* is the lightweight build, dnspatch-full_* the one with ping_url and the notifier backends.
v0.4.0
Highlights
- Monitoring.
dnspatch healthcheckand a per-instance status file; the images carry it asHEALTHCHECK.ping_urlpings Healthchecks.io or Uptime Kuma after every completed cycle. - Notifiers. A third kind of plugin next to retrievers and providers: an instance publishes a JSON event when it flips between success and failure. Backends: Redis Pub/Sub and RabbitMQ. Defined as
[notify.<name>], chosen per instance withnotify = [...]. - Build tags. Every retriever and provider has a tag named after its type;
dnspatch_noneleaves them all out,providers_allandretrievers_allbring a kind back. A build that lacks a plugin the config names says which tag to add. - Two flavours.
dnspatch(every retriever and provider) anddnspatch-full(-tags "ping,notify_all"), as archives for linux, darwin and windows, and as:<version>and:<version>-fullimages on Docker Hub and GHCR. - Plugins outside the repository.
appandhttpxare now public, so a plugin in your own module can be built into a customdnspatchbinary without a fork. See the guide; the API follows thev0.xstability note. - Documentation site. The manual moved from the README to https://dnspatch.github.io/dnspatch/.
Breaking changes
- Module path is now
github.com/dnspatch/dnspatch(wasgithub.com/KrimsN/dnspatch). Anything importingplugin/or runninggo installmust switch; versions up to v0.3.2 stay under the old path. The images keep their names on Docker Hub (krimsn/dnspatch) and are also onghcr.io/dnspatch/dnspatch. - Built-in plugin import paths changed from
.../plugins/<name>to.../plugins/<kind>/<name>. Build tags and config type names are unchanged. Thepluginpackage re-exports the whole public API, so third-party plugins keep importing it as before. config.toml.exampleis renamed todnspatch.toml.example.
Changelog
- feat: monitoring, notifiers and plugin build tags (#58) (@KrimsN)
- feat(notify): add RabbitMQ notifier (#60) (@KrimsN)
- feat: public app and httpx packages for plugins in other modules (#63) (@KrimsN)
- refactor: group plugins by kind and split the plugin package (#61) (@KrimsN)
- chore: move the module and links to the dnspatch organization (#59) (@KrimsN)
- docs: move the documentation to a MkDocs site (#62) (@KrimsN)
Full changelog: v0.3.2...v0.4.0
Install
Docker, for linux/amd64, linux/arm64 and linux/arm/v7. The same tags are on Docker Hub and on the GitHub Container Registry:
docker pull krimsn/dnspatch:0.4.0
docker pull ghcr.io/dnspatch/dnspatch:0.4.0The -full tag is the same image with ping_url and the notifier backends compiled in:
docker pull krimsn/dnspatch:0.4.0-fullGo:
go install github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.0
go install -tags "ping,notify_all" github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.0 # the full buildBinary: download the archive for your platform below and check it against checksums.txt. dnspatch_* is the lightweight build, dnspatch-full_* the one with ping_url and the notifier backends.
v0.4.0-rc.1
Changelog
- 745fcf8: feat(notify): add RabbitMQ notifier (#60) (@KrimsN)
- bf75082: feat: monitoring, notifiers and plugin build tags (#58) (@KrimsN)
- cdd9f34: feat: public app and httpx packages for plugins in other modules (#63) (@KrimsN)
Install
Docker, for linux/amd64, linux/arm64 and linux/arm/v7. The same tags are on Docker Hub and on the GitHub Container Registry:
docker pull krimsn/dnspatch:0.4.0-rc.1
docker pull ghcr.io/dnspatch/dnspatch:0.4.0-rc.1The -full tag is the same image with ping_url and the notifier backends compiled in:
docker pull krimsn/dnspatch:0.4.0-rc.1-fullGo:
go install github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.0-rc.1
go install -tags "ping,notify_all" github.com/dnspatch/dnspatch/cmd/dnspatch@v0.4.0-rc.1 # the full buildBinary: download the archive for your platform below and check it against checksums.txt. dnspatch_* is the lightweight build, dnspatch-full_* the one with ping_url and the notifier backends.
v0.3.2
Changelog
Install
Docker, for linux/amd64, linux/arm64 and linux/arm/v7. The same tags are on Docker Hub and on the GitHub Container Registry:
docker pull krimsn/dnspatch:0.3.2
docker pull ghcr.io/krimsn/dnspatch:0.3.2Go:
go install github.com/KrimsN/dnspatch/cmd/dnspatch@v0.3.2Binary: download the archive for your platform below and check it against checksums.txt.
v0.3.1
Changelog
- 8c3c52e: feat(provider): add Cloudflare provider (#54) (@KrimsN)
- d6074b9: feat(provider): add DuckDNS provider (#55) (@KrimsN)
- 0107ba3: feat(provider): add Timeweb Cloud provider (#51) (@KrimsN)
Install
Docker, for linux/amd64, linux/arm64 and linux/arm/v7. The same tags are on Docker Hub and on the GitHub Container Registry:
docker pull krimsn/dnspatch:0.3.1
docker pull ghcr.io/krimsn/dnspatch:0.3.1Go:
go install github.com/KrimsN/dnspatch/cmd/dnspatch@v0.3.1Binary: download the archive for your platform below and check it against checksums.txt.
v0.3.0
Breaking changes
dnspatch is v0.x, and 0.3 breaks three things. The migration guide has a before and after for each.
- Configuration:
[instance.retriever]is now an array of tables,[[instance.retriever]]. The old form is rejected with an error that names the fix. - Plugin API:
Retriever.GetIPAddressis replaced byGetAddressesandProvider.SetIPAddressbyUpdate; both now handle the two address families. - Plugin API: the
required:"true"struct tag is replaced by therequiredoption of thetomltag,toml:"token,required". The old tag is no longer read and nothing reports it, so a plugin that keeps it compiles and the parameter silently becomes optional.
Everything else in 0.3 is additive: new retriever interface, new providers beget, dyndns2 (with dyn, dynu, nicru, noip), rfc2136 and yandexcloud, ${file:PATH} for secrets, --check-config, and dual-stack instances.
Changelog
- 4c4adb3: feat(cli): tell providers of one type apart in --check-config (#48) (@KrimsN)
- 5606c68: feat(cmd): add --check-config flag (#36) (@KrimsN)
- 086dfe1: feat(config): allow type instead of ref in instance retriever/provider (#39) (@KrimsN)
- d314c0e: feat(config): support ${file:PATH} for secrets from files (#31) (@KrimsN)
- a683d12: feat(plugin): give Provider a dual-address contract (#32) (@KrimsN)
- 5031daf: feat(provider): add beget provider (#38) (@KrimsN)
- 8eac3d6: feat(provider): add dyndns2 provider (#46) (@KrimsN)
- a1c0389: feat(provider): add rfc2136 provider (#41) (@KrimsN)
- 8d175b0: feat(provider): add yandexcloud provider (#43) (@KrimsN)
- aa8fd1a: feat(retriever)!: support family="both" and fallback across N retrievers (#34) (@KrimsN)
- 243b437: feat(retriever): add interface retriever (#42) (@KrimsN)
- 0586f16: feat(runner)!: support dual-stack instances with two retrievers (#33) (@KrimsN)
- e6a04bd: feat: add examples/ with scenario-specific config.toml files (#35) (@KrimsN)
Install
Docker, for linux/amd64, linux/arm64 and linux/arm/v7. The same tags are on Docker Hub and on the GitHub Container Registry:
docker pull krimsn/dnspatch:0.3.0
docker pull ghcr.io/krimsn/dnspatch:0.3.0Go:
go install github.com/KrimsN/dnspatch/cmd/dnspatch@v0.3.0Binary: download the archive for your platform below and check it against checksums.txt.