zendns

Crates.iozendns
lib.rszendns
version0.3.0
sourcesrc
created_at2024-08-28 20:18:29.82375
updated_at2024-10-09 05:05:00.439155
descriptionManage Dynamic DNS with serenity
homepagehttps://github.com/dotzenith/ZenDNS
repositoryhttps://github.com/dotzenith/ZenDNS
max_upload_size
id1355287
size76,628
zenith (dotzenith)

documentation

README

━━━━ ❖ ━━━━



❖ ZenDNS

ZenDNS is an easy-to-use commandline utility to manage DDNS on Cloudflare, Namecheap, and DuckDNS


❖ Installation

Shell

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/dotzenith/zendns/releases/latest/download/zendns-installer.sh | sh

Brew

brew install dotzenith/tap/zendns

Powershell

irm https://github.com/dotzenith/zendns/releases/latest/download/zendns-installer.ps1 | iex

Cargo

cargo install zendns

Binaries

Pre-Compiled binaries for linux, mac, and windows are available in Releases

Source

  • First, install rust
git clone https://github.com/dotzenith/ZenDNS.git
cd ZenDNS
cargo build --release
./target/release/zendns

❖ Usage

Manage Dynamic DNS with serenity

Usage: zendns [OPTIONS] --config <CONFIG>

Options:
  -c, --config <CONFIG>  The yaml config file to use
  -l, --log <LOGFILE>    Where the output will be logged, uses stdout if not used
  -f, --force            Overrides the check for caching
  -h, --help             Print help
  -V, --version          Print version

Normal

zendns --config /path/to/config.yaml

Dedicated Logfile

zendns --config /path/to/config.yaml --log /path/to/logfile

❖ Configuration

❖ Cloudflare

Create an API token for your zone in Profile Settings. The token must have Zone::DNS::Read and Zone::DNS::Edit permissions. Zone Resource can be set to Specific Zone and set to the zone you want to update. If you would like to use this same token for all other zones, please select All Zones. Leave Client IP Address Filtering as is, and define how long this token should stay valid for in the TTL section.

The configuration for Cloudflare looks as follows:

cloudflare:
  - key: "your-api-key"
    zone: "your-website.com"
    hostname: "your-hostname" # `@` if you want to update `your-website.com`
    ttl: 1 # 1 for auto, otherwise between 60 and 86400
    proxied: false

❖ Namecheap

See Namecheap's Guide on enabling DDNS

The configuration for Namecheap looks as follows:

namecheap:
  - password: "your-password-key"
    host: "your-hostname"
    domain: "your-website.com"

❖ DuckDNS

Copy the token from DuckDNS profile page

The configuration for DuckDNS looks as follows:

duckdns:
  - token: "your-token"
    domain: "your-hostname.duckdns.org"

❖ All Together

All of the providers can be added to the same file, with multiple entries per provider as well

cloudflare:
  - key: "your-api-key"
    zone: "your-website.com"
    hostname: "your-hostname" # `@` if you want to update `your-website.com`
    ttl: 1 # 1 for auto, otherwise between 60 and 86400
    proxied: false

namecheap:
  - password: "your-password-key"
    host: "your-hostname"
    domain: "your-website.com"

duckdns:
  - token: "your-token"
    domain: "your-hostname.duckdns.org"
  - token: "your-token"
    domain: "your-other-hostname.duckdns.org"

❖ What's New?

0.3.0 - Add fallbacks for fetching public IP


Commit count: 29

cargo fmt