cloudflareDDNS/README.md
2024-01-09 09:33:16 -05:00

51 lines
2.1 KiB
Markdown

# Cloudflare Dynamic DNS Updater
This Python script automatically updates your Cloudflare DNS records with your current public IP address whenever it changes.
## Features
- Automatically detects IP changes: The script checks your public IP and compares it to the last recorded IP.
- Updates all 'A' type records: If a change is detected, it updates all 'A' type DNS records in the specified zone to the new IP.
- Securely stores credentials: Cloudflare API credentials are stored in a separate JSON file for security.
- User-friendly setup: The script guides you through the initial setup process, including entering your Cloudflare credentials.
- Clear logging: The script provides informative messages about its actions, such as success or failure of DNS updates.
## Requirements
- Python 3.x
- requests library (pip install requests)
## Setup
1. Obtain Cloudflare API credentials:
- Log in to your Cloudflare account.
- Go to My Profile > API Tokens.
- Create a new API token with the Zone.Zone and DNS.Edit permissions.
- Copy the API key and your Cloudflare email address.
2. Install the required library:
``` Bash
pip install requests
```
3. Run the script:
```Bash
python update.py
```
The script will prompt you for your Cloudflare Zone ID, email, and API key if the credentials file doesn't exist.
4. (Optional) Set up a cron job or create a service or use task scheduler in Windows:
To automate the script's execution, set up a cron job to run it at regular intervals (e.g., every hour).
## Usage
- The script will automatically check for IP changes and update DNS records accordingly.
- You can manually trigger a DNS update by running the script again.
## Additional Notes
- The script stores the last recorded IP in a file named last_ip.txt.
- The script stores Cloudflare credentials in a file named credentials.json. **Keep this file secure.**
- For more advanced usage, refer to the Cloudflare API documentation: https://api.cloudflare.com/
## License
This project is licensed under the [The MIT License](https://mit-license.org/) - see the [LICENSE](LICENSE) file for details.