Skip to content

dnspatchdnspatch

A dynamic DNS daemon in Go: it watches your public IP address and patches your DNS records when it changes.

  • One static binary or a container image of a few megabytes, no runtime dependencies.
  • Several independent instances in one process: track more than one site, update more than one provider.
  • Retrievers and providers are plugins. The plugin contract is a public Go package, so you can add your own without forking.

How it works

dnspatch is built around three concepts:

  • Retriever: reports your current public IP address.
  • Provider: writes that address to a DNS record.
  • Instance: ties one or more retrievers to one or more providers and polls on its own interval.

Instances run independently, so several sites or networks can be tracked at once. See Behaviour for what happens when something fails.

Where to go next

I want to... Read
install the daemon Installation
get a first working config Quick start
fill in a config through a form Config builder
understand the configuration file Configuration overview
see what a provider or retriever accepts Parameter reference
run it in a container Docker
build a small binary for a router Building from source
get alerted when updates fail Monitoring
add support for another DNS host Writing a plugin
upgrade to a new release Migrations

Versioning

dnspatch follows semantic versioning, and it is in the v0.x series on purpose: the plugin contract has not been proven by many plugins yet. Until v1.0.0, a minor release (v0.1 to v0.2) may change the public API of the plugin package and the configuration format; patch releases will not. Breaking changes are called out in the release notes and described in the migration guides. Pin the version you tested.

Config builder · Releases · Docker Hub · GitHub Container Registry · Go API reference · Issues