| Crates.io | zendns |
| lib.rs | zendns |
| version | 1.1.0 |
| created_at | 2024-08-28 20:18:29.82375+00 |
| updated_at | 2026-01-18 04:24:06.881929+00 |
| description | Manage Dynamic DNS with serenity |
| homepage | https://github.com/dotzenith/ZenDNS |
| repository | https://github.com/dotzenith/ZenDNS |
| max_upload_size | |
| id | 1355287 |
| size | 89,373 |
ZenDNS is an easy-to-use commandline utility to manage DDNS on Cloudflare, Namecheap, DuckDNS, and Porkbun
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/dotzenith/zendns/releases/latest/download/zendns-installer.sh | sh
brew install dotzenith/tap/zendns
powershell -ExecutionPolicy ByPass -c "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 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
zendns --config /path/to/config.json
zendns --config /path/to/config.json --log /path/to/logfile
The configuration looks as follows:
{
"providers": [
{ "..." },
{ "..." },
{ "..." },
{ "..." }
]
}
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:
hostname can be set to @ if you want to update your-website.com and not a subdomainttl is set to 1 for auto, otherwise it should be between 60 and 86400See 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"
}
Copy the token from DuckDNS profile page
The configuration for DuckDNS looks as follows:
{
"type": "duckdns",
"token": "your-token",
"domain": "your-hostname.duckdns.org"
}
API Key and Secret KeyAPI Access on the domain you'll be updatingThe configuration for Porkbun looks as follows:
{
"type": "porkbun",
"domain": "your-domain.com",
"subdomain": "your-subdomain",
"apikey": "API Key",
"secretapikey": "Secret Key",
"ttl": "600"
}
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"
},
{
"type": "porkbun",
"domain": "your-domain.com",
"subdomain": "your-subdomain",
"apikey": "API Key",
"secretapikey": "Secret Key",
"ttl": "600"
}
]
}
1.1.0 - Add Porkbun support