Cloudflare DDNS Script
Go to file
2024-02-27 17:59:00 +01:00
.github 1.3.0 (#6) 2022-10-20 15:18:57 +02:00
src use bun and remove some deps 2024-02-27 17:59:00 +01:00
.dockerignore use bun and remove some deps 2024-02-27 17:59:00 +01:00
.gitignore use bun and remove some deps 2024-02-27 17:59:00 +01:00
.sample.env typo 2024-02-27 17:55:58 +01:00
bun.lockb use bun and remove some deps 2024-02-27 17:59:00 +01:00
CHANGELOG.md use bun and remove some deps 2024-02-27 17:59:00 +01:00
docker-compose.yml pnpm & typescript 2021-10-22 17:47:49 +02:00
Dockerfile use bun and remove some deps 2024-02-27 17:59:00 +01:00
package.json use bun and remove some deps 2024-02-27 17:59:00 +01:00
README.md use bun and remove some deps 2024-02-27 17:59:00 +01:00
tsconfig.json use bun and remove some deps 2024-02-27 17:59:00 +01:00

Docker DDNS Cloudflare

Docker Pulls Docker Image Size (tag) Docker Image Version (tag latest semver)

Features 🌈

  • Simple container for setting setting and updating cloudflare records to your local ip address.
  • Only makes requests if the IP has changed.
  • By default it runs once every minute and the IP is resolved by https://api.ipify.org/.

Quickstart 🚀

  1. Get your API Token here (Top right -> My Profile -> API Tokens)

Click create token. You can then use the Edit DNS Zone template. Give it a name.

  1. Create an .env file:
TOKEN=mytoken

ZONE=example.org
DNS_RECORD=some.example.org
PROXIED=false
  1. Run the container
docker run -d --name ddns --restart always --env-file .env cupcakearmy/ddns-cloudflare

Docker-Copmose

With docker-compose:

git clone https://github.com/CupCakeArmy/docker-ddns-cloudflare.git
cp .sample.env .env
# Edit the .env file with your data
docker-compose up -d

ENV Reference

Env Default Description
TOKEN API Token.
ZONE Cloudflare zone where your domain is.
DNS_RECORD The actual DNS record that should be updated.
PROXIED true Whether the record is proxied by CloudFlare or not.
CRON */5 * * * * Frequency of updates. The following syntax is supported
RESOLVER https://api.ipify.org/ The endpoint used to determine your public ip.
LOG_LEVEL info Log level to run at. See winston for possible values

Customize

Custom CRON

By default the script runs every 5 minutes. You can customize this by simply setting the CRON value in the .env file.

# .env

# e.g. every minute
CRON=* * * * *

Custom Resolver

By default the script checks the own ip by calling https://api.ipify.org/. This also can be configured. It has to be an endpoint that return a plain text containing the ip by get request.

# .env

RESOLVER=https://ipv4.icanhazip.com/