* feat: init the i18n * fix: porkbun * refactor: http_util GetHTTPResponse * fix: save * fix: add more i18n * feat: i18n at writing.html * feat: README EN * fix: default api * fix: pic
ddns-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 architecture
- Support domain service providers
Aliyun
Tencent
Dnspod
Cloudflare
Huawei
Callback
Baidu
Porkbun
GoDaddy
Google Domain
Namecheap
NameSilo
- 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
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:
-
[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
-l
listen address-f
Sync frequency(seconds)-cacheTimes
interval N times compared with service providers-c
custom configuration file path-noweb
does not start web service-skipVerify
skip certificate verification-dns
custom DNS server. example:./ddns-go -s install -l :9876 -f 600 -c /Users/name/ddns-go.yaml
-
[Optional] You can use Homebrew to install ddns-go
brew install ddns-go
Use in docker
-
Mount the host directory, use the docker host mode. You can replace
/opt/ddns-go
with 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-go
-
Open
http://DOCKER_IP:9876
in the browser, modify your configuration -
[Optional] Use
ghcr.io
mirrordocker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root ghcr.io/jeessy2/ddns-go
-
[Optional] Support startup with parameters
-l
listen address-f
Sync 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
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 changed
success
failed
#{ipv4Domains} IPv4 domains,Split by ,
#{ipv6Addr} The new IPv6 #{ipv6Result} IPv6 update result: no changed
success
failed
#{ipv6Domains} IPv6 domains,Split by ,
-
If RequestBody is empty, it is a
GET
request, otherwise it is aPOST
request -
Telegram
-
Discord
- Discord client -> Server -> Channel Settings -> Integration -> View Webhook -> New Webhook -> Copy Webhook URL
- Input the
Webhook URL
copied 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 A
orAAAA
#{ttl} TTL - If RequestBody is empty, it is a
GET
request, otherwise it is aPOST
request