A Rust-based tool that automatically updates a Cloudflare DNS A record to match your public IP. Perfect for home servers, Raspberry Pi setups, or any environment without a static IP.
- ✅ Automatically fetches your public IP
- ✅ Updates DNS A record using Cloudflare API
- ✅ Configurable via a
config.tomlfile - ✅ Systemd-compatible with
.serviceand.timersupport - ✅
.debpackaging withcargo-debfor easy deployment
After building (or downloading) the .deb file:
sudo dpkg -i cloudflare-ddns_0.1.0_armhf.debEdit the config file at:
/etc/cloudflare-ddns/config.tomlExample:
zone_id = "your-cloudflare-zone-id"
record_name = "your.domain.com"
auth_email = "you@example.com"
auth_key = "your-global-api-key"Run manully:
cloudflare-ddnsOr as a service using systemd:
sudo systemctl enable --now cloudflare-ddns.timerCheck status:
systemctl status cloudflare-ddns.timercargo build --releaseTo build a .deb package:
cargo install cargo-deb
cargo debcloudflare-ddns/
├── Cargo.toml
├── src/main.rs
├── config/config.toml
├── systemd/cloudflare-ddns.service
├── systemd/cloudflare-ddns.timer
Make sure to test:
- Public IP fetch works
- DNS record updates correctly
- Systemd service runs on schedule