{"id":29985907,"url":"https://github.com/aollivierre/cloudflare-ddns-updater","last_synced_at":"2026-04-05T08:34:42.412Z","repository":{"id":305389761,"uuid":"1022759904","full_name":"aollivierre/cloudflare-ddns-updater","owner":"aollivierre","description":"🔄 Multi-platform Dynamic DNS updater for Cloudflare |  Supports Windows (PowerShell) and Linux (Python/systemd) | Auto-updates DNS records when your IP changes","archived":false,"fork":false,"pushed_at":"2025-07-19T19:29:06.000Z","size":141,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-04T22:52:08.330Z","etag":null,"topics":["automation","cloudflare","ddns","devops","dns-updater","dynamic-dns","infrastructure","linux","powershell","python","self-hosted","systemd","windows"],"latest_commit_sha":null,"homepage":"https://github.com/aollivierre/cloudflare-ddns-updater#readme","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aollivierre.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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-07-19T19:05:10.000Z","updated_at":"2025-07-19T20:04:46.000Z","dependencies_parsed_at":"2025-07-19T22:21:46.766Z","dependency_job_id":"7b1a8464-851d-4a52-80a3-c7e4d0c49435","html_url":"https://github.com/aollivierre/cloudflare-ddns-updater","commit_stats":null,"previous_names":["aollivierre/cloudflare-ddns-updater"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aollivierre/cloudflare-ddns-updater","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aollivierre%2Fcloudflare-ddns-updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aollivierre%2Fcloudflare-ddns-updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aollivierre%2Fcloudflare-ddns-updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aollivierre%2Fcloudflare-ddns-updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aollivierre","download_url":"https://codeload.github.com/aollivierre/cloudflare-ddns-updater/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aollivierre%2Fcloudflare-ddns-updater/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31430009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T08:13:15.228Z","status":"ssl_error","status_checked_at":"2026-04-05T08:13:11.839Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["automation","cloudflare","ddns","devops","dns-updater","dynamic-dns","infrastructure","linux","powershell","python","self-hosted","systemd","windows"],"created_at":"2025-08-04T22:02:01.250Z","updated_at":"2026-04-05T08:34:42.348Z","avatar_url":"https://github.com/aollivierre.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cloudflare DDNS Updater\r\n\r\nA robust Dynamic DNS (DDNS) updater for Cloudflare that automatically updates your DNS records when your public IP address changes. Available in both Windows (PowerShell) and Linux (Python) implementations.\r\n\r\n## 🌟 Features\r\n\r\n- **Automatic IP Detection**: Monitors your public IP and updates DNS records when it changes\r\n- **Multi-Platform Support**: Native implementations for both Windows and Linux\r\n- **Reliable Updates**: Multiple IP detection services with automatic fallback\r\n- **Secure**: Encrypted credential storage and minimal permission requirements\r\n- **24/7 Operation**: Runs continuously as a background service\r\n- **Comprehensive Logging**: Detailed logs for troubleshooting and monitoring\r\n- **Easy Configuration**: Simple JSON-based configuration\r\n\r\n## 🚀 Quick Start\r\n\r\n### Windows (PowerShell)\r\n\r\n```powershell\r\n# Run with administrator privileges\r\n.\\Update-CloudflareDDNS.ps1\r\n\r\n# Install as scheduled task\r\n.\\Update-CloudflareDDNS.ps1 -InstallTask\r\n```\r\n\r\n### Linux (Python)\r\n\r\n```bash\r\n# Install and start service\r\nsudo ./install.sh\r\n\r\n# Check status\r\nsystemctl status cloudflare-ddns\r\n```\r\n\r\n## 📋 Requirements\r\n\r\n### Common Requirements\r\n- Cloudflare account with a domain\r\n- API token with DNS edit permissions\r\n- Internet connection\r\n\r\n### Windows Specific\r\n- Windows 10/11 or Windows Server 2016+\r\n- PowerShell 5.1 or newer\r\n- Administrator privileges\r\n\r\n### Linux Specific\r\n- Linux with systemd (Ubuntu, Debian, CentOS, etc.)\r\n- Python 3.6+\r\n- sudo access\r\n\r\n## 🛠️ Installation\r\n\r\n### Windows Installation\r\n\r\n1. Download the PowerShell scripts to a permanent location\r\n2. Run PowerShell as Administrator\r\n3. Navigate to the script directory\r\n4. Run: `.\\Update-CloudflareDDNS.ps1`\r\n5. Follow the interactive menu to configure and install\r\n\r\n### Linux Installation\r\n\r\n1. Clone the repository or download the files\r\n2. Edit `linux-config/config.json` with your details\r\n3. Run: `sudo ./install.sh`\r\n4. Service starts automatically\r\n\r\n## ⚙️ Configuration\r\n\r\n### Cloudflare API Token\r\n\r\n1. Log in to [Cloudflare Dashboard](https://dash.cloudflare.com)\r\n2. Go to My Profile → API Tokens\r\n3. Click \"Create Token\"\r\n4. Use \"Edit zone DNS\" template with:\r\n   - Permissions: Zone:DNS:Edit, Zone:Zone:Read\r\n   - Zone Resources: Your specific domain\r\n\r\n### Configuration File\r\n\r\n```json\r\n{\r\n    \"Domain\": \"yourdomain.com\",\r\n    \"Hostname\": \"subdomain\",\r\n    \"ApiToken\": \"YOUR_API_TOKEN\",\r\n    \"ZoneId\": \"YOUR_ZONE_ID\",\r\n    \"TTL\": 120,\r\n    \"Proxied\": false\r\n}\r\n```\r\n\r\n## 🌳 Branches\r\n\r\n- `main`: Windows PowerShell implementation\r\n- `linux-native`: Linux Python implementation\r\n\r\n## 📁 Project Structure\r\n\r\n```\r\ncloudflare-ddns/\r\n├── Windows (main branch)\r\n│   ├── Update-CloudflareDDNS.ps1\r\n│   ├── DDNS/\r\n│   │   └── CloudflareDDNS/\r\n│   │       ├── CloudflareDDNS.psd1\r\n│   │       ├── CloudflareDDNS.psm1\r\n│   │       ├── Public/\r\n│   │       └── Private/\r\n│   └── config/\r\n│\r\n└── Linux (linux-native branch)\r\n    ├── cloudflare_ddns.py\r\n    ├── cloudflare-ddns.service\r\n    ├── install.sh\r\n    ├── uninstall.sh\r\n    └── linux-config/\r\n```\r\n\r\n## 🔧 Usage\r\n\r\n### Windows Commands\r\n\r\n```powershell\r\n# Interactive menu\r\n.\\Update-CloudflareDDNS.ps1\r\n\r\n# Silent update\r\n.\\Update-CloudflareDDNS.ps1 -Silent\r\n\r\n# View logs\r\n.\\Update-CloudflareDDNS.ps1 -ShowLog\r\n```\r\n\r\n### Linux Commands\r\n\r\n```bash\r\n# Service management\r\nsystemctl start cloudflare-ddns\r\nsystemctl stop cloudflare-ddns\r\nsystemctl restart cloudflare-ddns\r\nsystemctl status cloudflare-ddns\r\n\r\n# View logs\r\njournalctl -u cloudflare-ddns -f\r\n\r\n# Manual test\r\npython3 cloudflare_ddns.py --config /etc/cloudflare-ddns/config.json --once\r\n```\r\n\r\n## 📊 Monitoring\r\n\r\n### Windows\r\n- Logs: `C:\\ProgramData\\CloudflareDDNS\\*.log`\r\n- Task Scheduler for status\r\n\r\n### Linux\r\n- Logs: `/var/log/cloudflare-ddns/cloudflare-ddns.log`\r\n- systemd journal: `journalctl -u cloudflare-ddns`\r\n\r\n## 🐛 Troubleshooting\r\n\r\n### Common Issues\r\n\r\n1. **Authentication Errors**\r\n   - Verify API token is valid\r\n   - Check token permissions\r\n   - Ensure Zone ID is correct\r\n\r\n2. **IP Detection Failures**\r\n   - Check internet connectivity\r\n   - Verify firewall allows HTTPS outbound\r\n   - Try different IP detection services\r\n\r\n3. **Service Won't Start**\r\n   - Check logs for specific errors\r\n   - Verify configuration file syntax\r\n   - Ensure proper permissions\r\n\r\n## 🤝 Contributing\r\n\r\n1. Fork the repository\r\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\r\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\r\n4. Push to the branch (`git push origin feature/AmazingFeature`)\r\n5. Open a Pull Request\r\n\r\n## 📄 License\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## 🙏 Acknowledgments\r\n\r\n- Cloudflare for their excellent API\r\n- Community contributors and testers\r\n- IP detection services (ipify, ifconfig.me, etc.)\r\n\r\n## 📞 Support\r\n\r\n- **Issues**: [GitHub Issues](https://github.com/aollivierre/cloudflare-ddns-updater/issues)\r\n- **Discussions**: [GitHub Discussions](https://github.com/aollivierre/cloudflare-ddns-updater/discussions)\r\n- **Wiki**: [Project Wiki](https://github.com/aollivierre/cloudflare-ddns-updater/wiki)\r\n\r\n## 🔗 Links\r\n\r\n- [Cloudflare API Documentation](https://developers.cloudflare.com/api/)\r\n- [PowerShell Documentation](https://docs.microsoft.com/en-us/powershell/)\r\n- [Python Documentation](https://docs.python.org/3/)\r\n- [systemd Documentation](https://www.freedesktop.org/software/systemd/man/)\r\n\r\n---\r\n\r\nMade with ❤️ for the self-hosting community","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faollivierre%2Fcloudflare-ddns-updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faollivierre%2Fcloudflare-ddns-updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faollivierre%2Fcloudflare-ddns-updater/lists"}