jeessy2/ddns-go
jeessy2/ddns-go has 17,538 GitHub stars and 1,901 forks. GitHot measured +3 stars in 24 hours and +23 in 7 days. Last checked 2026-11-09 21:48 UTC. Last push 2026-11-02.
Simple and easy to use DDNS. Support Aliyun, Tencent Cloud, Dnspod, Cloudflare, Callback, Huawei Cloud, Baidu Cloud, Porkbun, GoDaddy, Namecheap, NameSilo...
Measured star growth
- in 24h
- +3
- in 7 days
- +23
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README_EN.md
OriginalDDNS-GO
中文 | English
Automatically obtain your public IPv4 or IPv6 address and resolve it to the corresponding domain name service.
Features
- Support Mac, Windows, Linux system, support ARM, x86, RISC-V architecture
- Support domain service providers
AliyunAliyun ESATencentDnspodCloudflareHuaweiCallbackBaiduPorkbunGoDaddyNamecheapNameSiloDynadotDNSLANowcnEranetGcoreEdgeOneIBM NS1 ConnectRainyundeSEC - Support interface / netcard / command to get IP
- Support running as a service
- Default interval is 5 minutes
- Support configuring multiple DNS service providers at the same time
- Support multiple domain name resolution at the same time
- Support multi-level domain name
- Configured on the web page, simple and convenient
- In the web page, you can quickly view the latest 50 logs
- Support Webhook notification
- Support TTL
- Support for some domain service providers to pass custom parameters to achieve multi-IP and other functions
[!NOTE] If you enable public network access, it is recommended to use Nginx and other reverse proxy software to enable HTTPS access to ensure security.
Use in system
- Download and unzip ddns-go from Releases
- Run in service mode
- Mac/Linux:
sudo ./ddns-go -s install - Win(Run as administrator):
.\ddns-go.exe -s install
- Mac/Linux:
- Config
- Please open the browser and visit
http://localhost:9876for initial configuration
- Please open the browser and visit
- [Optional] Uninstall service
- Mac/Linux:
sudo ./ddns-go -s uninstall - Win(Run as administrator):
.\ddns-go.exe -s uninstall
- Mac/Linux:
- [Optional] Support installation with parameters
-llisten address-fsync frequency(seconds)-cacheTimesinterval N times compared with service providers-ccustom configuration file path-nowebdoes not start web service-skipVerifyskip certificate verification-dnscustom DNS server-resetPasswordreset password
- [Optional] Examples
- 10 minutes to synchronize once, and the configuration file address is specified
./ddns-go -s install -f 600 -c /Users/name/.ddns_go_config.yaml - Every 10 seconds to check the local IP changes, every 30 minutes to compare the IP changes, to achieve IP changes immediately trigger updates and will not be limited by the service providers, if the use of api to obtain IP, need to pay attention to the api side of the flow limit
./ddns-go -s install -f 10 -cacheTimes 180 - reset password
./ddns-go -resetPassword 123456
- 10 minutes to synchronize once, and the configuration file address is specified
Use in docker
Mount the host directory, use the docker host mode. You can replace
/opt/ddns-gowith any directory on your host, the configuration file is a hidden filedocker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-goPlease open the browser and visit
http://DOCKER_IP:9876for initial configuration[Optional] Use
ghcr.iomirrordocker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root ghcr.io/jeessy2/ddns-go[Optional] Support startup with parameters
-llisten address-fSync frequency(seconds)docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go -l :9877 -f 600[Optional] Without using docker host mode
docker run -d --name ddns-go --restart=always -p 9876:9876 -v /opt/ddns-go:/root jeessy/ddns-go[Optional] Reset password
docker exec ddns-go ./ddns-go -resetPassword 123456 docker restart ddns-go
Webhook
Support webhook, when the domain name is updated successfully or not, the URL filled in will be called back
Support variables
Variable name Comments #{ipv4Addr} The new IPv4 #{ipv4Result} IPv4 update result: no changedsuccessfailed#{ipv4Domains} IPv4 domains,Split by ,#{ipv6Addr} The new IPv6 #{ipv6Result} IPv6 update result: no changedsuccessfailed#{ipv6Domains} IPv6 domains,Split by ,#{timestamp} Current UTC+0 timestamp in seconds If RequestBody is empty, it is a
GETrequest, otherwise it is aPOSTrequestTelegram
Discord
- Discord client -> Server -> Channel Settings -> Integration -> View Webhook -> New Webhook -> Copy Webhook URL
- Input the
Webhook URLcopied from Discord in the URL - Input in RequestBody
{ "content": "The domain name #{ipv4Domains} dynamically resolves to #{ipv4Result}.", "embeds": [ { "description": "Domains: #{ipv4Domains}, Result: #{ipv4Result}, IP: #{ipv4Addr}", "color": 15258703, "author": { "name": "DDNS" }, "footer": { "text": "DDNS #{ipv4Result}" } } ] }
Callback
Support more third-party DNS service providers through custom callback
Callback will be called as many times as there are lines in the configured domain name
Support variables
Variable name Comments #{ip} The new IPv4/IPv6 address #{domain} Current domain #{recordType} Record type AorAAAA#{ttl} TTL If RequestBody is empty, it is a
GETrequest, otherwise it is aPOSTrequest
Web interfaces

Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,398 starspublic-apis/public-apis
A collective list of free APIs
497,679 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
447,495 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,261 stars