jeessy2 eec98404fe feat: support english (#967)
* 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
2024-01-11 15:52:53 +08:00
new
2020-08-26 23:56:01 +08:00
2024-01-11 15:52:53 +08:00
2024-01-11 15:52:53 +08:00
2024-01-11 15:52:53 +08:00
2024-01-11 15:52:53 +08:00
2024-01-11 15:52:53 +08:00
2024-01-11 15:52:53 +08:00
2023-11-03 22:14:24 -07:00
2021-02-23 18:15:45 +08:00
2024-01-11 15:52:53 +08:00
2024-01-11 15:52:53 +08:00
2020-08-31 17:06:54 +08:00
2024-01-11 15:52:53 +08:00
2024-01-11 15:52:53 +08:00
2024-01-11 15:52:53 +08:00

ddns-go

GitHub release GitHub release downloads Go version

中文 | 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
  • [Optional] Uninstall service

    • Mac/Linux: sudo ./ddns-go -s uninstall
    • Win(Run as administrator): .\ddns-go.exe -s uninstall
  • [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 file

    docker 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 mirror

    docker 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
    

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 domainsSplit by ,
    #{ipv6Addr} The new IPv6
    #{ipv6Result} IPv6 update result: no changed success failed
    #{ipv6Domains} IPv6 domainsSplit by ,
  • If RequestBody is empty, it is a GET request, otherwise it is a POST request

  • Telegram

    ddns-telegram-bot

  • 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}"
                  }
              }
          ]
      }
      
  • More webhook configuration reference

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 or AAAA
    #{ttl} TTL
  • If RequestBody is empty, it is a GET request, otherwise it is a POST request

Web interfaces

screenshots

Description
No description provided
Readme MIT 26 MiB
Languages
Go 74.6%
HTML 14.5%
JavaScript 8.6%
CSS 2%
Makefile 0.2%