Update Cloudflare Proxy IP
I use Cloudflare to proxy my home IP for this blog (more details).
To keep this up to date, I run a script on the synology that's this:
cd /var/services/homes/andyreagan/cron-tasks/update-dns-cloudflare venv/bin/python update_cloudflare_ip.py
The python script is:
import requests import os from cloudflare import Cloudflare from dotenv import load_dotenv load_dotenv() ZONE_ID = os.environ['ZONE_ID'] assert ZONE_ID != '' assert os.environ['CLOUDFLARE_API_TOKEN'] is not None # uses CLOUDFLARE_API_TOKEN from the environment client = Cloudflare() def get_ip() -> str: response = requests.get('https://api.ipify.org') return response.text dns_a_records = client.dns.records.list( zone_id=ZONE_ID, type="A" ) print(f"Found {len(list(dns_a_records))} DNS records") assert len(list(dns_a_records)) == 2 external_ip = get_ip() print(f"External IP is {external_ip}") assert external_ip != '' for record in dns_a_records: if record.content != external_ip: print(f"Update needed from {record.content} -> {external_ip}. Before:") print(record) result = client.dns.records.edit( dns_record_id=record.id, zone_id=ZONE_ID, content=external_ip ) print("After:") print(result) assert result.content == external_ip print("Complete")
All in all, here's what the folder looks like on Synology File Station:

and here's the settings for the task:

Happy self-hosting!