Repolode
jeessy2

jeessy2/ddns-go

A lightweight Go tool that automatically detects your public IPv4/IPv6 address and updates DNS records at many DNS providers.

Stars
17,526
Forks
1,900
Open issues
16
Last commit
5 days ago

What is it?

DDNS-GO keeps domain names pointing at a home or office connection whose public IP changes over time. It detects the current public IPv4 or IPv6 address from a web API, a network interface, or a custom command, then updates the matching DNS records when the address changes.

It supports a broad set of DNS providers, including Alibaba Cloud, Tencent Cloud, DNSPod, Cloudflare, Huawei Cloud, Baidu Cloud, Porkbun, GoDaddy, and Namecheap. A custom Callback option covers providers not on the list. Several providers can be configured at once, and multiple domains, including multi-level subdomains, can be updated together. Configuration is done through a built-in web page on port 9876, which also shows recent logs.

The program runs on macOS, Windows, and Linux across ARM, x86, and RISC-V, and can be installed as a system service or run in Docker. Webhook notifications can report update results to services such as Discord, Feishu, DingTalk, and Telegram.

Key features

  • 01Detects public IPv4 and IPv6 addresses via web APIs, network interfaces, or commands.
  • 02Supports many DNS providers, plus custom providers through Callback.
  • 03Updates multiple domains and providers at the same time.
  • 04Configuration through a built-in web UI, with recent logs.
  • 05Runs as a system service on macOS, Windows, and Linux, or in Docker.
  • 06Sends Webhook notifications on update success or failure.

Use cases

  • Pointing a domain at a home server or NAS whose public IP changes.
  • Remote access to a self-hosted service without a static IP address.
  • Keeping DNS records current on a router, VM, or Raspberry Pi.
  • Sending IP-change alerts to a chat app via Webhook.

Quick start

  1. 1

    Download and extract ddns-go from the Releases page

  2. 2

    Install it as a system service (Mac/Linux)

    sudo ./ddns-go -s install
  3. 3

    Open http://localhost:9876 in a browser to finish setup

Things to know

  • Web setup and configuration are on port 9876 by default, so enabling public access requires a reverse proxy with HTTPS for security.

In collections

Topics

#ddns#dns#ipv6#self-hosted#cloudflare#docker#networking#alidns#baiduyun#ddns-go

FAQ

What is ddns-go?
A lightweight Go tool that automatically detects your public IPv4/IPv6 address and updates DNS records at many DNS providers. DDNS-GO keeps domain names pointing at a home or office connection whose public IP changes over time. It detects the current public IPv4 or IPv6 address from a web API, a network interface, or a custom command, then updates the matching DNS records when the address changes.
Is ddns-go free to use? What license does it have?
ddns-go is open source under the MIT license. Check the license terms before using it in commercial products.
Is ddns-go still maintained?
Actively maintained. The last commit to ddns-go was on Nov 2, 2026.
What can I use ddns-go for?
Pointing a domain at a home server or NAS whose public IP changes. Remote access to a self-hosted service without a static IP address. Keeping DNS records current on a router, VM, or Raspberry Pi. Sending IP-change alerts to a chat app via Webhook.
How do I install ddns-go?
Download and extract ddns-go from the Releases page Install it as a system service (Mac/Linux): sudo ./ddns-go -s install Open http://localhost:9876 in a browser to finish setup
Where can I get ddns-go?
The source code and installation instructions are on GitHub: https://github.com/jeessy2/ddns-go

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects