基于cloudflare的ddns部署#
最近在研究如何使用cloudflare的api来实现动态域名解析(DDNS),这里记录一下部署的过程。
准备工作#
- 注册cloudflare账号并添加域名。
- 获取API令牌,确保具有编辑DNS记录的权限。
项目部署#
我是基于https://github.com/favonia/cloudflare-ddns
这个项目来进行部署的,下面是具体步骤:
- 克隆仓库:
git clone https://github.com/favonia/cloudflare-ddns.git2.构建项目:
cd cloudflare-ddns
go build cmd/ddns/ddns.go3.安装命令行工具
sudo install -m 0755 ddns /usr/local/bin/ddns4.配置systemd服务: 执行以下命令创建服务文件:
# 创建ddns用户和组
sudo useradd -r -s /usr/sbin/nologin -m -d /var/lib/ddns ddns#由于环境变量比较多,我们把它们放在一个单独的文件中,服务文件中引用它。
mkdir /etc/ddns
cat >/etc/ddns/config.env <<EOF
CLOUDFLARE_API_TOKEN="在这里填写你的cloudflare的api令牌"
DOMAINS="在这里填写你的域名,多个域名用,分隔"
PROXIED=false
IP4_PROVIDER=
IP6_PROVIDER=
TZ=Asia/Shanghai
RECORD_COMMENT=
DELETE_ON_STOP=true
UPDATE_ON_START=true
#这里填入你的健康检查地址,如果不需要可以留空
HEALTHCHECKS=
EOF# 创建systemd服务文件
sudo tee >/etc/systemd/system/ddns.service >/dev/null <<EOF
[Unit]
Description=Cloudflare DDNS Updater
Documentation=https://github.com/favonia/cloudflare-ddns
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=ddns
Group=ddns
# 从文件加载环境变量
EnvironmentFile=/etc/ddns/config.env
ExecStart=/usr/local/bin/ddns
Restart=always
RestartSec=10
# 安全加固
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
RemoveIPC=yes
[Install]
WantedBy=multi-user.target
EOF- 启动服务:
sudo systemctl daemon-reload
sudo systemctl enable --now ddns验证服务状态:#
sudo systemctl status ddns查看日志:#
sudo journalctl -u ddns -f




