Runtipi 'app update' validates required form_fields against its own DB-tracked form state, not against app.env. Adding new required fields to a pre-installed app blocks every update with 'Variable X is required'. The manager binary already gracefully no-ops basic auth if either env var is empty (logs a WARN). Drop required:true so updates pass; values that exist in app.env keep working at runtime.
88 lines
2.8 KiB
JSON
88 lines
2.8 KiB
JSON
{
|
|
"$schema": "../app-info-schema.json",
|
|
"name": "Cloudflare DDNS",
|
|
"id": "cfddns",
|
|
"available": true,
|
|
"port": 8533,
|
|
"exposable": true,
|
|
"dynamic_config": true,
|
|
"no_gui": false,
|
|
"tipi_version": 8,
|
|
"version": "v1-ui1",
|
|
"categories": [
|
|
"network",
|
|
"utilities"
|
|
],
|
|
"description": "Automatically updates Cloudflare DNS records with your current public IP. Manage domains, proxied state, schedule, API token, and view live status & logs from a built-in web UI. Fork of favonia/cloudflare-ddns with an added management binary.",
|
|
"short_desc": "Dynamic DNS for Cloudflare, with web UI",
|
|
"author": "alexz (fork of favonia/cloudflare-ddns)",
|
|
"source": "https://git.alexzaw.dev/alexz/cloudflare-ddns",
|
|
"website": "https://github.com/favonia/cloudflare-ddns",
|
|
"form_fields": [
|
|
{
|
|
"type": "text",
|
|
"label": "Web UI Username",
|
|
"env_variable": "CFDDNS_WEB_USER",
|
|
"required": false,
|
|
"default": "admin",
|
|
"min": 3,
|
|
"max": 50,
|
|
"hint": "Username for HTTP basic auth on the management UI. Leave blank to disable auth (the manager will log a WARN)."
|
|
},
|
|
{
|
|
"type": "random",
|
|
"label": "Web UI Password",
|
|
"env_variable": "CFDDNS_WEB_PASSWORD",
|
|
"required": false,
|
|
"min": 24,
|
|
"encoding": "hex",
|
|
"hint": "Auto-generated on first install. View in the app's Settings tab. Leave blank to disable auth (manager logs a WARN)."
|
|
},
|
|
{
|
|
"type": "password",
|
|
"label": "Cloudflare API Token",
|
|
"env_variable": "CLOUDFLARE_API_TOKEN",
|
|
"required": true,
|
|
"hint": "API token with Zone:DNS:Edit permissions. After first start the UI manages this."
|
|
},
|
|
{
|
|
"type": "text",
|
|
"label": "Initial Domains (comma-separated)",
|
|
"env_variable": "DOMAINS",
|
|
"required": false,
|
|
"hint": "First-run seed only — managed by the web UI afterward. e.g. home.example.com,vpn.example.com"
|
|
},
|
|
{
|
|
"type": "boolean",
|
|
"label": "Initial Proxied (Orange Cloud)",
|
|
"env_variable": "PROXIED",
|
|
"required": false,
|
|
"default": false,
|
|
"hint": "First-run seed only — proxy state is managed per-domain by the UI afterward"
|
|
},
|
|
{
|
|
"type": "text",
|
|
"label": "Initial Update Schedule",
|
|
"env_variable": "UPDATE_CRON",
|
|
"required": false,
|
|
"default": "@every 5m",
|
|
"hint": "First-run seed only — managed by the UI afterward. Cron expression or @every Xm."
|
|
},
|
|
{
|
|
"type": "text",
|
|
"label": "Initial Timezone",
|
|
"env_variable": "TZ",
|
|
"required": false,
|
|
"default": "UTC",
|
|
"hint": "First-run seed only — managed by the UI afterward"
|
|
}
|
|
],
|
|
"supported_architectures": [
|
|
"amd64"
|
|
],
|
|
"created_at": 1736974800000,
|
|
"updated_at": 1747555200000,
|
|
"deprecated": false,
|
|
"min_tipi_version": "4.5.0"
|
|
}
|