Crates.io | zendns |
lib.rs | zendns |
version | 0.3.0 |
source | src |
created_at | 2024-08-28 20:18:29.82375 |
updated_at | 2024-10-09 05:05:00.439155 |
description | Manage Dynamic DNS with serenity |
homepage | https://github.com/dotzenith/ZenDNS |
repository | https://github.com/dotzenith/ZenDNS |
max_upload_size | |
id | 1355287 |
size | 76,628 |
ZenDNS is an easy-to-use commandline utility to manage DDNS on Cloudflare, Namecheap, and DuckDNS
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/dotzenith/zendns/releases/latest/download/zendns-installer.sh | sh
brew install dotzenith/tap/zendns
irm https://github.com/dotzenith/zendns/releases/latest/download/zendns-installer.ps1 | iex
cargo install zendns
Pre-Compiled binaries for linux, mac, and windows are available in Releases
git clone https://github.com/dotzenith/ZenDNS.git
cd ZenDNS
cargo build --release
./target/release/zendns
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
zendns --config /path/to/config.yaml
zendns --config /path/to/config.yaml --log /path/to/logfile
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
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"
Copy the token
from DuckDNS profile page
The configuration for DuckDNS looks as follows:
duckdns:
- token: "your-token"
domain: "your-hostname.duckdns.org"
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"
0.3.0 - Add fallbacks for fetching public IP