
¶
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.
Links¶
Config builder · Releases · Docker Hub · GitHub Container Registry · Go API reference · Issues