SkillAgentSearch skills...

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/Godns
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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

Apache licensed Docker Go Report Card GoDoc

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

| 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:

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 -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:

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 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 ex

Related Skills

View on GitHub
GitHub Stars1.7k
CategoryCustomer
Updated5h ago
Forks242

Languages

Go

Security Score

100/100

Audited on Mar 28, 2026

No findings