| .github/workflows | ||
| src | ||
| .gitignore | ||
| Cargo.toml | ||
| dist-workspace.toml | ||
| LICENSE | ||
| README.md | ||
| rust-toolchain.toml | ||
| rustfmt.toml | ||
━━━━ ❖ ━━━━
❖ 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
powershell -ExecutionPolicy ByPass -c "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 json 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.json
Dedicated Logfile
zendns --config /path/to/config.json --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:
{
"type": "cloudflare",
"key": "your-api-key",
"zone": "domain.com",
"hostname": "hostname.domain.com",
"ttl": 1,
"proxied": false
}
Notes:
hostnamecan be set to@if you want to updateyour-website.comand not a subdomainttlis set to 1 for auto, otherwise it should be between60and86400
❖ Namecheap
See Namecheap's Guide on enabling DDNS
The configuration for Namecheap looks as follows:
{
"type": "namecheap",
"password": "your-password-key",
"host": "your-hostname",
"domain": "your-domain.com"
}
❖ DuckDNS
Copy the token from DuckDNS profile page
The configuration for DuckDNS looks as follows:
{
"type": "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
{
"providers": [
{
"type": "cloudflare",
"key": "your-api-key",
"zone": "domain.com",
"hostname": "hostname.domain.com",
"ttl": 1,
"proxied": false
},
{
"type": "namecheap",
"password": "your-password-key",
"host": "your-hostname",
"domain": "your-domain.com"
},
{
"type": "duckdns",
"token": "your-token",
"domain": "your-hostname.duckdns.org"
}
]
}
❖ What's New?
1.0.0 - Switch to json for schema