cfdydns

**Cloudflare dynamic DNS client** A simplistic dynamic DNS client that only works with Cloudflare, for only one domain. It's easily configurable via environment variables, making it an ideal choice to use in containers. ## Installation The recommended way of using `cfdydns` is through containers. Built containers are available in: - GitHub Container Registry: `ghcr.io/xjonathanlei/cfdydns:latest` - [Docker Hub](https://hub.docker.com/r/xjonathanlei/cfdydns): `xjonathanlei/cfdydns:latest` You may also install the binary directly. With the Rust toolchain installed: ```console cargo install --locked --path . ``` ## Getting started `cfdydns` is configurable via command line options and environment variables. Running `cfdydns --help` reveals the options: | Option | Env var | Optional | Description | | ------------- | ------------------- | -------- | ------------------------------------------------------------------------ | | `--fqdn` | `CFDYDNS_FQDN` | No | Fully-qualified domain name to set A record on | | `--zone` | `CFDYDNS_ZONE` | No | Zone name of the FQDN (e.g. `example.com`) | | `--api-token` | `CFDYDNS_API_TOKEN` | No | Cloudflare API token with the `DNS: Edit` permission for the target zone | | `--interval` | `CFDYDNS_INTERVAL` | Yes | Number of seconds to wait between each check | > [!TIP] > > `cfdydns` does not create new records for you. The target `A` record for the FQDN must already exist. ## Why not [ddclient](https://github.com/ddclient/ddclient)? `ddclient` is hard to configure and barely maintained. Who cares about all the DNS provider integration when you're only using Cloudflare anyways. ## License Licensed under either of - Apache License, Version 2.0 ([LICENSE-APACHE](./LICENSE-APACHE) or ) - MIT license ([LICENSE-MIT](./LICENSE-MIT) or ) at your option.