Skip to content

DDNS-Go

TrendingActive
jeessy2/ddns-go

Simple and easy to use DDNS. Support Aliyun, Tencent Cloud, Dnspod, Cloudflare, Callback, Huawei Cloud, Baidu Cloud, Porkbun, GoDaddy, Namecheap, NameSilo and more.

View on GitHub
Stars
17.4k
Forks
1.9k
Watchers
17.4k
Open issues
15

🌐 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

  1. Open browser and visit http://localhost:9876
  2. Set admin password
  3. Configure DNS provider credentials
  4. Add domains to monitor
  5. 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)

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

  1. Simplicity - Web interface for easy configuration
  2. Reliability - Robust error handling and retry logic
  3. Performance - Efficient Go implementation
  4. Flexibility - Multiple deployment options
  5. 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.


Similar open-source projects, ranked by shared categories and tags.

All Network projects →