Cloudflare DDNS¶
グローバル IPv4 を取得し、Cloudflare の A レコードを更新する。
IP が変わったときだけ更新し、任意で Discord に通知する。
スクリプト本体は ddns/cloudflare-ddns.sh にある。
構成上の位置づけ
LXC ddns(インベントリ)を実行ホストの一例とする。
このページはセットアップ手順だけを置く。
必要なもの¶
curljq- Cloudflare API トークン(対象 Zone の DNS Edit 権限)
手順¶
1. スクリプトを配置する¶
2. 設定ファイルを作成する¶
sudo cp cloudflare-ddns.env.example /etc/cloudflare-ddns.env
sudo chmod 600 /etc/cloudflare-ddns.env
sudo edit /etc/cloudflare-ddns.env
| 変数 | 必須 | 説明 |
|---|---|---|
CF_API_TOKEN |
○ | Cloudflare API トークン |
CF_ZONE_ID |
△ | Zone ID(未設定時は CF_ZONE_NAME が必要) |
CF_ZONE_NAME |
△ | Zone 名(例: example.com)。CF_ZONE_ID があれば不要 |
CF_RECORD_NAME |
○ | 更新する A レコード(例: mail.example.com) |
CF_TTL |
○ | TTL(秒) |
CF_PROXIED |
○ | Cloudflare Proxy の有無(true / false) |
DISCORD_WEBHOOK_URL |
× | 設定時のみ Discord 通知 |
3. 動作確認する¶
設定ファイルのパスを変える場合は次のとおり実行する。
4. cron で定期実行する¶
5 分ごとに実行する例:
動作の流れ¶
- 複数ソースからグローバル IPv4 を取得する
- Cloudflare 上の現在の A レコードと比較する
- 差分がある場合のみ更新する
- 更新の成功時と失敗時に Discord 通知する(Webhook 設定時)