如何配置Cloudflare DDNS获取服务器的动态IP?

查看公网IP地址

# 使用 curl 命令
curl ifconfig.me
curl icanhazip.com
curl ipinfo.io/ip

# 使用 wget 命令
wget -qO- ifconfig.me

# 查看详细IP信息
curl ipinfo.io

1. 准备配置文件

首先创建配置目录和文件:

# 创建配置目录
mkdir -p /opt/cloudflare-ddns
cd /opt/cloudflare-ddns

# 创建配置文件
cat > config.json << 'EOF'
{
  "cloudflare": [
    {
      "authentication": {
        "api_token": "你的_Cloudflare_API_Token"
      },
      "zone_id": "你的_Zone_ID",
      "subdomains": [
        {
          "name": "", #你的子域名,必须填写
          "proxied": false
        }
      ]
    }
  ],
  "a": true,
  "aaaa": false,
  "purgeUnknownRecords": false,
  "ttl": 300
}
EOF

2. 获取必要信息

  1. 获取 API Token

  2. 获取 Zone ID

    • 登录 Cloudflare 仪表板
    • 选择你的域名
    • 在概览页面右侧找到 Zone ID

3. 使用 Docker Compose 部署

创建 docker-compose.yml 文件:

cat > docker-compose.yml << 'EOF'
version: '3.3'
services:
  cloudflare-ddns:
    image: timothyjmiller/cloudflare-ddns:latest
    container_name: cloudflare-ddns
    security_opt:
      - no-new-privileges:true
    network_mode: 'host'
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./config.json:/config.json
    restart: unless-stopped
EOF

4. 启动服务

# 启动容器
docker-compose up -d

# 查看日志
docker-compose logs -f

配置示例

基础配置(单个根域名)

{
  "cloudflare": [
    {
      "authentication": {
        "api_token": "你的API_Token"
      },
      "zone_id": "你的Zone_ID",
      "subdomains": [
        {
          "name": "",
          "proxied": false
        }
      ]
    }
  ],
  "a": true,
  "aaaa": false,
  "purgeUnknownRecords": false,
  "ttl": 300
}

多子域名配置

{
  "cloudflare": [
    {
      "authentication": {
        "api_token": "你的API_Token"
      },
      "zone_id": "你的Zone_ID",
      "subdomains": [
        {
          "name": "",
          "proxied": false
        },
        {
          "name": "www",
          "proxied": false
        },
        {
          "name": "blog",
          "proxied": false
        }
      ]
    }
  ],
  "a": true,
  "aaaa": false,
  "purgeUnknownRecords": false,
  "ttl": 300
}

常用命令

# 查看容器状态
docker ps | grep cloudflare-ddns

# 查看日志
docker logs cloudflare-ddns

# 重启服务
docker-compose restart

# 停止服务
docker-compose down

# 更新镜像
docker-compose pull
docker-compose up -d

注意事项

  1. IPv6 支持:如果需要 IPv6,设置 "aaaa": true 并确保 network_mode: 'host'
  2. Proxied 设置
    • true:启用 Cloudflare CDN/SSL(会禁用 SSH)
    • false:仅使用 DNS 解析
  3. TTL:可设置 30 秒到 1 天之间的值

这个 DDNS 服务会自动检测你的公网 IP 变化,并更新 Cloudflare 的 DNS 记录。