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!