Summary
Legacy config.json mode now uses the same shared provider abstraction as environment variable mode, and adds ip4_provider / ip6_provider fields so you
can override the default IP detection method directly from your config file.
What's changed
New: ip4_provider and ip6_provider in config.json
You can now specify the IP detection provider in your config.json, using the same values as the IP4_PROVIDER / IP6_PROVIDER environment variables:
{
"a": true,
"aaaa": true,
"ip4_provider": "cloudflare.trace",
"ip6_provider": "none"
}
Supported values: cloudflare.trace, cloudflare.doh, ipify, local, local.iface:<name>, url:<https://...>, none.
Setting a provider to "none" disables detection for that address family, even if a or aaaa is true.
Fixed: "IPv4 trace returned IPv6 address, skipping" warning on dual-stack hosts
Legacy config mode previously used its own trace-specific detection path with a normal HTTP client. On dual-stack systems (common on Raspberry Pi and Docker
--net=host), the IPv4 trace request could go out over IPv6, triggering a misleading warning before retrying.
Config.json mode now uses the shared cloudflare.trace provider, which builds an IP-family-bound HTTP client (0.0.0.0 for IPv4, [::] for IPv6). This forces
the trace request onto the correct address family, eliminating the warning in normal operation.
Docker
docker pull timothyjmiller/cloudflare-ddns:2.0.5
Multi-arch: linux/amd64, linux/arm64