51 lines
2.1 KiB
Markdown
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. |