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
|
|
@ -14,6 +14,8 @@ homelab/
|
||||||
│ ├── catalog.json # generated index used by the installer (CDN listing)
|
│ ├── catalog.json # generated index used by the installer (CDN listing)
|
||||||
│ ├── nginx-proxy-manager/ # reverse proxy dashboard (NPM)
|
│ ├── nginx-proxy-manager/ # reverse proxy dashboard (NPM)
|
||||||
│ │ └── metadata.json
|
│ │ └── metadata.json
|
||||||
|
│ ├── cloudflare-ddns/ # keeps ezequielcf.dev + *.ezequielcf.dev on the public IP
|
||||||
|
│ │ └── metadata.json
|
||||||
│ ├── authelia/ # SSO / IdP (login portal, OIDC, forward-auth)
|
│ ├── authelia/ # SSO / IdP (login portal, OIDC, forward-auth)
|
||||||
│ │ ├── metadata.json
|
│ │ ├── metadata.json
|
||||||
│ │ ├── configuration.yml
|
│ │ ├── configuration.yml
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,16 @@
|
||||||
{
|
{
|
||||||
"generatedAt": "2026-09-10T22:09:23.859Z",
|
"generatedAt": "2026-09-10T22:29:53.437Z",
|
||||||
"services": [
|
"services": [
|
||||||
{
|
{
|
||||||
"id": "authelia",
|
"id": "authelia",
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"path": "services/authelia/metadata.json"
|
"path": "services/authelia/metadata.json"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "cloudflare-ddns",
|
||||||
|
"version": "1.17.0",
|
||||||
|
"path": "services/cloudflare-ddns/metadata.json"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "forgejo",
|
"id": "forgejo",
|
||||||
"version": "11.0.0",
|
"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