Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
G

godns

> 编程语言
Open source

A dynamic DNS client tool that supports AliDNS, Cloudflare, Google Domains, DNSPod, HE.net & DuckDNS & DreamHost, etc, written in Go.

1.8K stars0 likes1 views
WebsiteGitHub

About

A dynamic DNS client tool that supports AliDNS, Cloudflare, Google Domains, DNSPod, HE.net & DuckDNS & DreamHost, etc, written in Go.

 ██████╗  ██████╗ ██████╗ ███╗   ██╗███████╗
██╔════╝ ██╔═══██╗██╔══██╗████╗  ██║██╔════╝
██║  ███╗██║   ██║██║  ██║██╔██╗ ██║███████╗
██║   ██║██║   ██║██║  ██║██║╚██╗██║╚════██║
╚██████╔╝╚██████╔╝██████╔╝██║ ╚████║███████║
 ╚═════╝  ╚═════╝ ╚═════╝ ╚═╝  ╚═══╝╚══════╝

Apache licensed Docker Go Report Card GoDoc Homebrew

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:

  • 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:
name.com :white_check_mark: :white_check_mark: :white_check_mark: :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:

    bash
    GOOS=linux GOARCH=mips/mipsle GOMIPS=softfloat go build -a

    The 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 NS records 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:

  • Install with Homebrew (macOS / Linux):
bash
brew install godns
  • Download a compiled binary from releases.
  • Use the Docker image described in As a Docker container.
  • Build from source:
bash
cd cmd/godns        # go to the GoDNS directory
go mod download     # get dependencies
go build            # build

Usage

Print usage/help by running:

bash
$ ./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 as config.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.json option

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, DuckDNS or Dreamhost.
  • 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: IPv4 or IPv6.
  • 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 set 8.8.8.8 when using GoDNS in IPv4 mode or 2001:4860:4860::8888 in IPv6 mode.
  • skip_ssl_verify - Skip verification of SSL certificates for https requests.

Update root domain

By simply putting @ into sub_domains, for example:

json
"domains": [{
      "domain_name": "example.com",
      "sub_domains": ["@"]
    }]

Configuration examples

Cloudflare

For Cloudflare, you need to provide the email & Global API Key as a password (or to use the API token) and configure all the domains & subdomains.

By setting the option proxied = true, the record receives the performance and security benefits of Cloudflare. This option is only available for Cloudflare.

Using email & Global API Key
json
{
  "provider": "Cloudflare",
  "email": "[email protected]",
  "password": "Global API Key",
  "domains": [
    {
      "domain_name": "example.com",
      "sub_domains": ["www", "test"]
    },
    {
      "domain_name": "example2.com",
      "sub_domains": ["www", "test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_urls": ["https://api.ip.sb/ip"],
  "ip_type": "IPv4",
  "interval": 300,
  "socks5_proxy": "",
  "proxied": false
}
Using the API Token
json
{
  "provider": "Cloudflare",
  "login_token": "API Token",
  "domains": [
    {
      "domain_name": "example.com",
      "sub_domains": ["www", "test"]
    },
    {
      "domain_name": "example2.com",
      "sub_domains": ["www", "test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_urls": ["https://api.ip.sb/ip"],
  "ip_type": "IPv4",
  "interval": 300,
  "socks5_proxy": ""
}

DNSPod

For DNSPod, you need to provide your API Token(you can create it here), and config all the domains & subdomains.

Example
json
{
  "provider": "DNSPod",
  "login_token": "your_id,your_token",
  "domains": [
    {

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Goalidnscloudflareddnsdns

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言