explaingit

jeessy2/ddns-go

16,765GoAudience · ops devopsComplexity · 2/5Setup · easy

TLDR

A background program that watches your internet connection for IP changes and automatically updates your domain DNS records, so a name like home.example.com always reaches your machine even as your IP changes.

Mindmap

mindmap
  root((ddns-go))
    What it does
      Watches public IP
      Updates DNS records
      Checks every 5 min
    Supported providers
      Cloudflare
      GoDaddy
      Namecheap
      Aliyun
    Notifications
      Discord
      Telegram
      DingTalk
    Setup
      Web UI port 9876
      Docker image
      ARM and x86
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Self-host a personal website or game server on a home broadband line where your public IP changes regularly.

USE CASE 2

Keep a remote-access domain pointing at your home NAS or router without paying for a static IP.

USE CASE 3

Receive a notification to Discord, Telegram, or Bark whenever your home public IP address changes.

USE CASE 4

Update both IPv4 and IPv6 DNS records across multiple providers and subdomains from one lightweight tool.

Tech stack

GoDocker

Getting it running

Difficulty · easy Time to first run · 30min

Requires valid credentials for your DNS provider entered through the built-in web UI on port 9876.

License not mentioned in the explanation.

In plain English

DDNS-GO is a Dynamic DNS client. Dynamic DNS, often shortened to DDNS, is a small background program that watches your internet connection, notices when your public IP address changes (which happens automatically with most home broadband lines), and then tells your domain name provider to point your domain at the new address. The end result is that even though your IP keeps changing, a name like home.example.com always reaches your machine. The program runs on Mac, Windows, and Linux, and supports several CPU architectures including ARM, x86, and RISC-V. It can keep many DNS providers in sync, including Aliyun, Tencent Cloud, Dnspod, Cloudflare, Huawei Cloud, Baidu Cloud, Porkbun, GoDaddy, Namecheap, NameSilo, Dynadot, DNSLA, Gcore, IBM NS1 Connect, and others, plus a generic Callback option. It can get the current IP from a public lookup service, a chosen network card, or a custom shell command, and can update several providers at once, handle multiple domains, multi-level subdomains, and both IPv4 and IPv6. By default it checks every five minutes. You set everything up through a small built-in web page on port 9876, where you fill in provider credentials and the domains to keep updated, and you can also view the last fifty log entries. The README recommends running it behind an HTTPS reverse proxy such as Nginx if the web UI is exposed publicly. There is optional Webhook support, so DDNS-GO can ping a custom URL after each update, the README's examples cover Server酱, Bark, DingTalk, Feishu, Discord, Telegram, and WeChat. You'd use DDNS-GO when self-hosting on a residential connection. It is written in Go and distributed as binaries and a Docker image.

Copy-paste prompts

Prompt 1
Set up ddns-go with Docker to automatically update my Cloudflare DNS A record every time my home IP address changes.
Prompt 2
Configure ddns-go to update both an IPv4 and IPv6 record for my subdomain on Namecheap every 5 minutes.
Prompt 3
Set up a ddns-go Webhook to send a Telegram message each time my public IP address is updated.
Prompt 4
How do I run ddns-go behind an Nginx HTTPS reverse proxy to secure the web UI on port 9876?
Prompt 5
Show me how to configure ddns-go to pull my current IP from a specific network card instead of a public lookup service.
Open on GitHub → Explain another repo

← jeessy2 on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.