Add cloudflare-ddns service
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
parent
cc247e2ad6
commit
48c472fe6f
3 changed files with 62 additions and 1 deletions
|
|
@ -1,11 +1,16 @@
|
|||
{
|
||||
"generatedAt": "2026-09-10T22:09:23.859Z",
|
||||
"generatedAt": "2026-09-10T22:29:53.437Z",
|
||||
"services": [
|
||||
{
|
||||
"id": "authelia",
|
||||
"version": "3.0.1",
|
||||
"path": "services/authelia/metadata.json"
|
||||
},
|
||||
{
|
||||
"id": "cloudflare-ddns",
|
||||
"version": "1.17.0",
|
||||
"path": "services/cloudflare-ddns/metadata.json"
|
||||
},
|
||||
{
|
||||
"id": "forgejo",
|
||||
"version": "11.0.0",
|
||||
|
|
|
|||
54
services/cloudflare-ddns/metadata.json
Normal file
54
services/cloudflare-ddns/metadata.json
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
"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."
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue