{"id":24756863,"url":"https://github.com/tn3w/cloudflare-ddns","last_synced_at":"2026-05-19T07:32:33.465Z","repository":{"id":274311972,"uuid":"922535098","full_name":"tn3w/cloudflare-ddns","owner":"tn3w","description":"Automatically update Cloudflare A records when your IP changes.","archived":false,"fork":false,"pushed_at":"2025-06-18T18:48:59.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-18T19:45:40.338Z","etag":null,"topics":["cloudflare","cloudflare-ddns","consensus","ddns","ddns-updater","internet-protocol","ip","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tn3w.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-26T13:31:21.000Z","updated_at":"2025-06-18T18:49:03.000Z","dependencies_parsed_at":"2025-06-18T19:35:07.845Z","dependency_job_id":"624c7f15-9feb-4d09-b878-642928491840","html_url":"https://github.com/tn3w/cloudflare-ddns","commit_stats":null,"previous_names":["tn3w/cloudflare-ddns"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tn3w/cloudflare-ddns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tn3w%2Fcloudflare-ddns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tn3w%2Fcloudflare-ddns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tn3w%2Fcloudflare-ddns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tn3w%2Fcloudflare-ddns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tn3w","download_url":"https://codeload.github.com/tn3w/cloudflare-ddns/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tn3w%2Fcloudflare-ddns/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278722719,"owners_count":26034460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare","cloudflare-ddns","consensus","ddns","ddns-updater","internet-protocol","ip","rust"],"created_at":"2025-01-28T14:21:10.149Z","updated_at":"2025-10-07T04:33:22.911Z","avatar_url":"https://github.com/tn3w.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"```\n  ____ _____   ____  ____  _   _ ____\n / ___|  ___| |  _ \\|  _ \\| \\ | / ___|\n| |   | |_    | | | | | | |  \\| \\___ \\\n| |___|  _|   | |_| | |_| | |\\  |___) |\n \\____|_|     |____/|____/|_| \\_|____/\n```\n\n# Cloudflare DDNS Updater\n\nAutomatically update Cloudflare A records when your IP changes.\n\n## Features\n\n- Reliable IP detection using multiple sources for consensus\n- Support for multiple DNS records\n- Systemd service with security hardening\n- Configurable update intervals\n- Detailed logging\n- Flexible configuration via file or command-line arguments\n\n## Usage\n\nYou can configure the updater either through a config file or command-line arguments:\n\n```bash\n# Using config file\ncloudflare-ddns -c /path/to/config.toml\n\n# Using command-line arguments\ncloudflare-ddns --auth-email your@email.com --auth-key your_api_key --zone-id your_zone_id --records example.com --records subdomain.example.com\n\n# Mix both (command-line args override config file)\ncloudflare-ddns -c /path/to/config.toml --records override.example.com\n```\n\n### Command-line Options\n\n```\nOptions:\n  -c, --config \u003cCONFIG\u003e\n          Path to config file (optional if all other args are provided)\n  -e, --auth-email \u003cAUTH_EMAIL\u003e\n          Cloudflare account email\n  -k, --auth-key \u003cAUTH_KEY\u003e\n          Cloudflare API key or API token\n  -z, --zone-id \u003cZONE_ID\u003e\n          Cloudflare zone ID from domain overview page\n  -i, --reload-interval \u003cRELOAD_INTERVAL\u003e\n          Update interval in seconds [default: 300]\n  -r, --records \u003cRECORDS\u003e\n          DNS records to update (can be specified multiple times)\n  -d, --debug\n          Enable debug logging\n  -h, --help\n          Print help\n  -V, --version\n          Print version\n```\n\n## Installation\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/tn3w/cloudflare-ddns\ncd cloudflare-ddns\n```\n\n### 2. Build the Binary\n\n```bash\ncargo build --release\n```\n\n### 3. Create System User\n\nCreate a dedicated system user and group for the service:\n```bash\nsudo useradd -r -s /bin/false cloudflare-ddns\n```\n\n### 4. Create Required Directories\n\n```bash\n# Create configuration and log directories\nsudo mkdir -p /etc/cloudflare-ddns\nsudo mkdir -p /var/log/cloudflare-ddns\n\n# Set proper ownership\nsudo chown cloudflare-ddns:cloudflare-ddns /var/log/cloudflare-ddns\n```\n\n### 5. Install Files\n\n```bash\n# Copy binary\nsudo cp target/release/cloudflare-ddns /usr/local/bin/\nsudo chmod 755 /usr/local/bin/cloudflare-ddns\n\n# Copy and configure service file\nsudo cp cloudflare-ddns.service /etc/systemd/system/\nsudo chmod 644 /etc/systemd/system/cloudflare-ddns.service\n\n# Copy and configure config file\nsudo cp config.toml.example /etc/cloudflare-ddns/config.toml\nsudo chmod 644 /etc/cloudflare-ddns/config.toml\nsudo chown cloudflare-ddns:cloudflare-ddns /etc/cloudflare-ddns/config.toml\n```\n\n### 6. Configure the Service\n\nEdit the configuration file with your Cloudflare credentials:\n```bash\nsudo nano /etc/cloudflare-ddns/config.toml\n```\n\nExample configuration:\n```toml\n# Required fields (unless provided via command-line)\nauth_email = \"your@email.com\"\nauth_key = \"your_cloudflare_api_key\"\nzone_id = \"your_zone_id\"\n\n# Optional: Update interval in seconds (default: 300 = 5 minutes)\nreload_interval = 300\n\n# Required: List of DNS records to update\nrecords = [\n    \"example.com\",\n    \"subdomain.example.com\"\n]\n```\n\n### 7. Start the Service\n\n```bash\n# Reload systemd to recognize the new service\nsudo systemctl daemon-reload\n\n# Enable service to start on boot\nsudo systemctl enable cloudflare-ddns\n\n# Start the service\nsudo systemctl start cloudflare-ddns\n```\n\n### 8. Verify Installation\n\nCheck if the service is running properly:\n```bash\n# Check service status\nsudo systemctl status cloudflare-ddns\n\n# View logs\nsudo journalctl -u cloudflare-ddns -f\n```\n\n## License\n\nCopyright 2025 TN3W\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftn3w%2Fcloudflare-ddns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftn3w%2Fcloudflare-ddns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftn3w%2Fcloudflare-ddns/lists"}