━━━━ ❖ ━━━━


--- ## ❖ ZenDNS ZenDNS is an easy-to-use commandline utility to manage DDNS on [Cloudflare](www.cloudflare.com), [Namecheap](https://www.namecheap.com/), and [DuckDNS](https://www.duckdns.org/) --- ## ❖ Installation #### Shell ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/dotzenith/zendns/releases/latest/download/zendns-installer.sh | sh ``` #### Brew ```sh brew install dotzenith/tap/zendns ``` #### Powershell ```sh irm https://github.com/dotzenith/zendns/releases/latest/download/zendns-installer.ps1 | iex ``` #### Cargo ```sh cargo install zendns ``` #### Binaries Pre-Compiled binaries for linux, mac, and windows are available in [Releases](https://github.com/dotzenith/zendns/releases) #### Source - First, install [rust](https://rustup.rs/) ```sh 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 Options: -c, --config The yaml config file to use -l, --log 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 ```sh zendns --config /path/to/config.yaml ``` #### Dedicated Logfile ```sh zendns --config /path/to/config.yaml --log /path/to/logfile ``` --- ## ❖ Configuration ### ❖ Cloudflare Create an API token for your zone in [Profile Settings](https://dash.cloudflare.com/profile/api-tokens). 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: ```yaml 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](https://www.namecheap.com/support/knowledgebase/article.aspx/595/11/how-do-i-enable-dynamic-dns-for-a-domain/) on enabling DDNS The configuration for Namecheap looks as follows: ```yaml 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: ```yaml 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 ```yaml 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 ---