Godns
A dynamic DNS client tool that supports AliDNS, Cloudflare, Google Domains, DNSPod, HE.net & DuckDNS & DreamHost, etc, written in Go.
Install / Use
/learn @TimothyYe/GodnsREADME
██████╗ ██████╗ ██████╗ ███╗ ██╗███████╗
██╔════╝ ██╔═══██╗██╔══██╗████╗ ██║██╔════╝
██║ ███╗██║ ██║██║ ██║██╔██╗ ██║███████╗
██║ ██║██║ ██║██║ ██║██║╚██╗██║╚════██║
╚██████╔╝╚██████╔╝██████╔╝██║ ╚████║███████║
╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
GoDNS is a self-hosted dynamic DNS (DDNS) client with multi-provider support and a built-in web panel. It is a rewrite in Go of my early DynDNS open-source project.
Hosted version
If you want a managed DDNS service instead of self-hosting GoDNS yourself, try godns.app.
It is a hosted option for users who want DDNS without running their own server, managing DNS manually, or even owning a domain in advance.
Below is the built-in web panel of the open-source GoDNS project:
<img src="https://github.com/TimothyYe/godns/blob/master/assets/snapshots/web-panel.jpg?raw=true" />- Supported DNS Providers
- Quick Start
- Supported Platforms
- Self-hosting Pre-conditions
- Installation
- Configuration
- Web Panel
- Running GoDNS
- Contributing
Supported DNS Providers
| Provider | IPv4 support | IPv6 support | Root Domain | Subdomains | | ------------------------------------- | :----------------: | :----------------: | :----------------: | :----------------: | | Cloudflare | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | DigitalOcean | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | Google Domains | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | DNSPod | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | Dynv6 | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | HE.net (Hurricane Electric) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | AliDNS | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | DuckDNS | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | Dreamhost | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | No-IP | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | Scaleway | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | Linode | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | Strato | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | LoopiaSE | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | Infomaniak | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | Hetzner | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | OVH | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | Porkbun | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | Dynu | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | IONOS | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | | TransIP | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: |
Tip: You can follow this issue to view the current status of DDNS for root domains.
Quick Start
Choose the path that fits you best:
- Want a managed service with no self-hosting: use godns.app.
- Want the fastest self-hosted setup: download a binary from releases.
- Want to run it in a container: jump to As a Docker container.
- Want to build from source: see Installation.
Supported Platforms
-
Linux
-
MacOS
-
ARM Linux (Raspberry Pi, etc.)
-
Windows
-
MIPS32 platform
To compile binaries for MIPS (mips or mipsle), run:
GOOS=linux GOARCH=mips/mipsle GOMIPS=softfloat go build -aThe binary can run on routers as well.
Self-hosting Pre-conditions
To self-host GoDNS, it is assumed:
- You registered (now own) a domain
- Domain was delegated to a supported DNS provider (i.e. it has nameserver
NSrecords pointing at a supported provider)
Alternatively, you can sign in to DuckDNS (with a social account) and get a subdomain on the duckdns.org domain for free.
Installation
Choose one of the following installation methods:
- Download a compiled binary from releases.
- Use the Docker image described in As a Docker container.
- Build from source:
cd cmd/godns # go to the GoDNS directory
go mod download # get dependencies
go build # build
Usage
Print usage/help by running:
$ ./godns -h
Usage of ./godns:
-c string
Specify a config file (default "./config.json")
-h Show help
Configuration
Overview
- Make a copy of config_sample.json and name it as
config.json, or make a copy of config_sample.yaml and name it asconfig.yaml. - Configure your provider, domain/subdomain info, credentials, etc.
- Configure a notification medium (e.g. SMTP to receive emails) to get notified when your IP address changes
- Place the file in the same directory of GoDNS or use the
-c=path/to/your/file.jsonoption
Multi-Provider Support
🆕 GoDNS now supports multiple DNS providers simultaneously!
You can now configure domains from different DNS providers in a single configuration file, allowing you to:
- Manage domains across multiple DNS services (Cloudflare, DNSPod, DigitalOcean, etc.)
- Use provider-specific credentials for each service
- Maintain full backward compatibility with existing single-provider configurations
📖 View the complete Multi-Provider Configuration Guide for detailed setup instructions and examples.
Configuration file format
GoDNS supports 2 different configuration file formats:
- JSON
- YAML
By default, GoDNS uses JSON config file. However, you can specify to use the YAML format via: ./godns -c /path/to/config.yaml
Dynamic loading of configuration
GoDNS supports dynamic loading of configuration. If you modify the configuration file, GoDNS will automatically reload the configuration and apply the changes.
Configuration properties
provider— One of the supported provider to use:Cloudflare,Google,DNSPod,AliDNS,HE,DuckDNSorDreamhost.email— Email or account name of the DNS provider.password— Password of the DNS provider.login_token— API token of the DNS provider.domains— Domains list, with your subdomains.ip_urls— A URL array for fetching one's public IPv4 address.ipv6_urls— A URL array for fetching one's public IPv6 address.ip_type— Switch deciding if IPv4 or IPv6 should be used (when supported). Available values:IPv4orIPv6.interval— How often (in seconds) the public IP should be updated.socks5_proxy— Socks5 proxy server.resolver— Address of a public DNS server to use. For instance to use Google's public DNS, you can set8.8.8.8when using GoDNS in IPv4 mode or2001:4860:4860::8888in IPv6 mode.skip_ssl_verify- Skip verification of SSL certificates for https requests.
Update root domain
By simply putting @ into sub_domains, for ex
Related Skills
openhue
339.5kControl Philips Hue lights and scenes via the OpenHue CLI.
sag
339.5kElevenLabs text-to-speech with mac-style say UX.
weather
339.5kGet current weather and forecasts via wttr.in or Open-Meteo
tweakcc
1.5kCustomize Claude Code's system prompts, create custom toolsets, input pattern highlighters, themes/thinking verbs/spinners, customize input box & user message styling, support AGENTS.md, unlock private/unreleased features, and much more. Supports both native/npm installs on all platforms.
