Cloudflare ddns
Execute to check relative public IP address and compare to update Cloudflare to sync change.
Configuration
Create a lock environment file:
cp .env.example .env
Fill inn API_TOKEN and ZONE_ID.
API_TOKEN should be generated from https://cloudflare.com/profile/generate-token and have access to all zones you wish to update.
ZONE_ID should be the zone where a addr A record that will be compared to actual address to see if it should be updated.
Setup
Prefered way to Build using dockerfile:
(sudo) docker build -t cloudflare-ddns .
docker run --rm -it cloudflare-dns
(Optional Installing python dependencies and running:)
virtualenv
source -p $(which python3) env/bin/activate
pip install -r requirements.txt
python src/main.py
Kubernetes
I am currenly running in kubernetes cluster as a cronjob checking periodically. Substitute ${IMAGE} in job.yml manually or using CI script similar to: https://github.com/KevinMidboe/cloudflare-ddns/blob/main/.drone.yml#L49-L51.
After job is created you also want to set environment variables from kubernetes secret, example .kuberenetes/secret.yml:
apiVersion: v1
kind: Secret
metadata:
name: secret-env-values
namespace: cloudflare-ddns
type: Opaque
data:
API_KEY: CLOUDFLARE_API_KEY
DDNS_ZONE: CLOUDFLARE_ZONE_ID
(Optional: receive a SMS from gateway API by appending to secrets data)
SMS_API_KEY: GATEWAY_API_API_KEY
SMS_RECIPIENT: PHONE_NUMBER_TO_RECEIVE
kubectl apply -f .kuberenetes/secret.yml