repo/services/cloudflare-ddns/metadata.json
Ezequiel C. 48c472fe6f Add cloudflare-ddns service
Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-11 00:29:53 +02:00

54 lines
2 KiB
JSON

{
"id": "cloudflare-ddns",
"name": "Cloudflare DDNS",
"description": "Keeps the homelab's public DNS records (ezequielcf.dev + wildcard subdomains) pointed at the current public IP via the Cloudflare API.",
"version": "1.17.0",
"category": "network",
"tags": ["ddns", "cloudflare", "dns", "dynamic-dns"],
"author": "favonia",
"license": "Apache-2.0",
"homepage": "https://github.com/favonia/cloudflare-ddns",
"documentation": "https://github.com/favonia/cloudflare-ddns/blob/main/docs/README.md",
"compose": {
"image": "favonia/cloudflare-ddns:1.17.0",
"container_name": "cloudflare-ddns",
"restart": "unless-stopped",
"environment": [
"CLOUDFLARE_API_TOKEN=${CLOUDFLARE_API_TOKEN}",
"DOMAINS=${DOMAINS}",
"PROXIED=${PROXIED}",
"IP6_PROVIDER=${IP6_PROVIDER}",
"TZ=${TZ}"
],
"networks": ["homelab"]
},
"networks": { "homelab": { "external": true } },
"env": [
{
"name": "CLOUDFLARE_API_TOKEN",
"label": "Cloudflare API token",
"description": "Scoped token: Zone > DNS > Edit on ezequielcf.dev",
"required": true,
"secret": true
},
{
"name": "DOMAINS",
"label": "Domains to update",
"default": "ezequielcf.dev,*.ezequielcf.dev"
},
{
"name": "PROXIED",
"label": "Proxied through Cloudflare",
"description": "false = DNS-only (direct to origin, needed for direct LE HTTP-01); true = orange-cloud",
"default": "false"
},
{
"name": "IP6_PROVIDER",
"label": "IPv6 provider",
"description": "none = IPv4-only updates",
"default": "none"
},
{ "name": "TZ", "label": "Timezone", "default": "UTC" }
],
"notes": "Updates `ezequielcf.dev` (@) and the wildcard `*.ezequielcf.dev` A record whenever the public IP changes. Records are DNS-only (gray cloud) so the router DMZ -> 10.0.0.10:80/443 path serves origin traffic directly; flip PROXIED=true in the .env to route through Cloudflare instead. The API token lives only in ~/.homelab/services/cloudflare-ddns/.env."
}