この紹介文は現在英語版のみです。
🌐 Project Overview
DDNS-Go is a lightweight, cross-platform Dynamic DNS client written in Go. It automatically updates your DNS records when your public IP address changes, supporting 15+ major DNS providers including Cloudflare, Aliyun, Tencent Cloud, and more. With its intuitive web interface and flexible deployment options, DDNS-Go makes dynamic DNS management effortless for both beginners and advanced users.
⭐ Core Features
-
🏢 Multi-Provider Support
- 15+ DNS providers supported
- Cloudflare, Aliyun, Tencent Cloud, Dnspod
- GoDaddy, Namecheap, NameSilo, Porkbun
- Huawei Cloud, Baidu Cloud, and more
-
🌍 IPv4 & IPv6 Dual Stack
- Full IPv6 support
- Automatic IP detection
- Dual stack configuration
- Network interface selection
-
⚡ Smart Updates
- Configurable check intervals
- IP change detection
- Cache mechanism to prevent API abuse
- Real-time IP monitoring
-
🔔 Notification System
- Webhook support for status updates
- Integration with popular services
- Custom callback functions
- Multiple notification channels
🛠️ Technology Stack
Core Technology
- Go - High-performance backend (71.8%)
- HTML/CSS/JavaScript - Web interface (28.2%)
- Cross-platform - Windows, Linux, macOS, ARM
Supported DNS Providers
- Cloudflare - Global CDN and DNS
- Aliyun DNS - Alibaba Cloud DNS service
- Tencent Cloud - Tencent’s DNS platform
- Dnspod - Professional DNS service
- GoDaddy - Domain registrar DNS
- Namecheap - Domain and DNS services
- Porkbun - Modern domain services
- Google Domains - Google’s domain service
- Custom Callback - DIY integration support
🚀 Quick Start
Download & Install
# Download latest release
wget https://github.com/jeessy2/ddns-go/releases/latest/download/ddns-go_linux_x86_64.tar.gz
# Extract and run
tar -xzf ddns-go_linux_x86_64.tar.gz
./ddns-go
Web Interface Setup
- Open browser and visit
http://localhost:9876 - Set admin password
- Configure DNS provider credentials
- Add domains to monitor
- Start DDNS service
Command Line Options
# Install as system service
./ddns-go -s install
# Custom check interval (600 seconds)
./ddns-go -s install -f 600
# Specify config file location
./ddns-go -c /path/to/config.yaml
# Reset password
./ddns-go -resetPassword newpassword
🐳 Docker Deployment
Basic Docker Run
# Using host network mode (recommended)
docker run -d --name ddns-go \
--restart=always \
--net=host \
-v /opt/ddns-go:/root \
jeessy/ddns-go
Docker Compose
version: '3'
services:
ddns-go:
image: jeessy/ddns-go
container_name: ddns-go
restart: always
network_mode: host
volumes:
- /opt/ddns-go:/root
Advanced Options
# Custom port and interval
docker run -d --name ddns-go \
--restart=always \
--net=host \
-v /opt/ddns-go:/root \
jeessy/ddns-go -l :9877 -f 600
# Using GitHub Container Registry
docker run -d --name ddns-go \
--restart=always \
--net=host \
-v /opt/ddns-go:/root \
ghcr.io/jeessy2/ddns-go
🔔 Webhook Integration
Supported Variables
| Variable | Description |
|---|---|
#{ipv4Addr} |
New IPv4 address |
#{ipv4Result} |
IPv4 update result |
#{ipv4Domains} |
IPv4 domains (comma-separated) |
#{ipv6Addr} |
New IPv6 address |
#{ipv6Result} |
IPv6 update result |
#{ipv6Domains} |
IPv6 domains (comma-separated) |
Popular Integrations
Server酱 (ServerChan)
URL: https://sctapi.ftqq.com/[SendKey].send?title=IP变更通知&desp=IPv4变更为#{ipv4Addr},更新结果:#{ipv4Result}
Bark (iOS)
URL: https://api.day.app/[YOUR_KEY]/IP变更#{ipv4Addr}/更新结果#{ipv4Result}
DingTalk (钉钉)
{
"msgtype": "markdown",
"markdown": {
"title": "DDNS更新通知",
"text": "#### IP地址变更 \n - IPv4: #{ipv4Addr} \n - 结果: #{ipv4Result}"
}
}
Discord
{
"content": "DDNS更新: #{ipv4Domains} -> #{ipv4Addr}",
"embeds": [{
"description": "域名 #{ipv4Domains} 已更新到 #{ipv4Addr}",
"color": 5814783,
"author": {"name": "DDNS-Go"}
}]
}
🔧 Advanced Configuration
IPv6 Support
- Prerequisites: IPv6 connectivity required
- Windows/Mac: System installation recommended
- Linux: Docker host mode for best compatibility
- NAS: Enable Docker host networking
Custom Callbacks
Supports custom DNS providers through callback mechanism:
| Variable | Description |
|---|---|
#{ip} |
New IP address |
#{domain} |
Current domain |
#{recordType} |
Record type (A/AAAA) |
#{ttl} |
TTL value |
Performance Optimization
# Fast IP change detection (10s) with rate limiting (30min)
./ddns-go -s install -f 10 -cacheTimes 180
# Custom configuration file
./ddns-go -c /etc/ddns-go/config.yaml
📊 Project Statistics
- ⭐ 14.4k+ GitHub Stars
- 🍴 1.6k+ Forks
- 🐛 34 Open Issues
- 👥 60 Watchers
- 📦 MIT License
- 🏷️ 170 Releases
🎯 Use Cases
- Home Server - Keep your home lab accessible
- Self-hosted Services - Dynamic IP for personal cloud
- IoT Devices - Remote access to embedded systems
- Development - Testing webhooks and APIs
- Small Business - Cost-effective DNS management
🌟 Key Benefits
- Simplicity - Web interface for easy configuration
- Reliability - Robust error handling and retry logic
- Performance - Efficient Go implementation
- Flexibility - Multiple deployment options
- Community - Active development and support
🔗 Resources
- Live Demo: Web interface at
http://localhost:9876 - GitHub Repository: jeessy2/ddns-go
- Documentation: Comprehensive setup guides
- Releases: GitHub Releases
📖 Installation Guides
System Service Installation
# Install as system service
./ddns-go -s install
# Start/Stop/Restart service
./ddns-go -s start
./ddns-go -s stop
./ddns-go -s restart
# Uninstall service
./ddns-go -s uninstall
Platform-Specific Instructions
- Windows: Run as Windows Service
- Linux: Systemd service integration
- macOS: LaunchDaemon support
- NAS: Synology, QNAP compatible
- OpenWrt: Router firmware support
🤝 Contributing
We welcome contributions in various forms:
- DNS provider integrations
- Bug reports and fixes
- Feature enhancements
- Documentation improvements
- Webhook integrations
Please read our Contributing Guide before submitting changes.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.