Add DNS accounts, Let's Encrypt, password change, reboot, HTTP redirect

- router.dnsProviders: named accounts at DNS providers, used by dynamic
  DNS and certificates (ddclient and lego provider lists in
  pkgs/router-webui/providers.json). Schema 2 migrates router.ddns.
- router.acme: a Let's Encrypt certificate for the web UI via
  security.acme (DNS-01, resolver 1.1.1.1), served and reloaded by the
  web UI; Certificate page.
- Web UI: password change (web UI and root), reboot button, HTTP to HTTPS
  redirect (router.webui.httpPort), grouped menu.
- Latest kernel (linuxPackages_latest); 7.3 and 7.3.0 are the same kernel
  for the reboot hint.
- SPECS.md: wanted later (REST API, GraphQL, MCP).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AeFqV9dZrK6nipHkPfyM4F
This commit is contained in:
2026-10-30 19:27:49 +01:00
co-authored by Claude Sonnet 5.5
parent a32bf42777
commit caf2c6b26d
33 changed files with 1985 additions and 224 deletions
+272
View File
@@ -0,0 +1,272 @@
{
"ddns": [
"1984",
"changeip",
"cloudflare",
"cloudns",
"ddns.fm",
"digitalocean",
"dinahosting",
"directnic",
"dnsexit2",
"dnsmadeeasy",
"domeneshop",
"dondominio",
"dslreports1",
"duckdns",
"dyndns1",
"dyndns2",
"easydns",
"enom",
"freedns",
"freemyip",
"gandi",
"godaddy",
"he.net",
"hetzner",
"infomaniak",
"inwx",
"keysystems",
"mythicdyn",
"namecheap",
"nfsn",
"njalla",
"noip",
"ovh",
"porkbun",
"regfishde",
"sitelutions",
"yandex",
"zoneedit1"
],
"acme": [
"abion",
"acmedns",
"active24",
"alidns",
"aliesa",
"allinkl",
"alwaysdata",
"anexia",
"artfiles",
"arvancloud",
"auroradns",
"autodns",
"axelname",
"azion",
"azuredns",
"baiducloud",
"beget",
"binarylane",
"bindman",
"bluecat",
"bluecatv2",
"bookmyname",
"bunny",
"checkdomain",
"civo",
"clouddns",
"cloudflare",
"cloudns",
"cloudru",
"com35",
"connbyte",
"conoha",
"conohav3",
"constellix",
"corenetworks",
"cpanel",
"curanet",
"czechia",
"dandomain",
"ddnss",
"derak",
"desec",
"designate",
"digitalocean",
"dinahosting",
"directadmin",
"dns51",
"dnscale",
"dnsexit",
"dnshomede",
"dnsimple",
"dnsla",
"dnsmadeeasy",
"dnsmint",
"dnsservices",
"dnsupdate",
"dode",
"domeneshop",
"dreamhost",
"duckdns",
"dyn",
"dynadot",
"dyndnsfree",
"dynu",
"easydns",
"edgecenter",
"edgedns",
"edgeone",
"efficientip",
"epik",
"eurodns",
"euserv",
"excedo",
"exoscale",
"f5xc",
"feno",
"fornex",
"freemyip",
"gandi",
"gandiv5",
"gcloud",
"gcore",
"gehirn",
"gigahostno",
"glesys",
"gname",
"godaddy",
"gravity",
"hetzner",
"hostingde",
"hostinger",
"hostingnl",
"hosttech",
"hostup",
"httpnet",
"httpreq",
"huaweicloud",
"hurricane",
"hyperone",
"ibmcloud",
"iijdpf",
"infoblox",
"infomaniak",
"internetbs",
"inwx",
"ionos",
"ionoscloud",
"ipv64",
"ispconfig",
"ispconfigddns",
"jdcloud",
"joker",
"katapult",
"keyhelp",
"leaseweb",
"liara",
"lightsail",
"limacity",
"linode",
"liquidweb",
"loopia",
"luadns",
"mailinabox",
"manageengine",
"metaname",
"metaregistrar",
"mijnhost",
"mittwald",
"myaddr",
"mydnsjp",
"myra",
"mythicbeasts",
"namecheap",
"namedotcom",
"namesilo",
"namesurfer",
"nearlyfreespeech",
"nederhost",
"neodigit",
"netcup",
"netlify",
"netnod",
"nexdns",
"ngenix",
"nicmanager",
"nicru",
"nifcloud",
"njalla",
"nodion",
"ns1",
"octenium",
"omglol",
"onecloudru",
"onlinenet",
"openprovider",
"opusdns",
"oraclecloud",
"otc",
"ovh",
"pdns",
"plesk",
"pointdns",
"porkbun",
"poweradmin",
"rackspace",
"rage4",
"rainyun",
"rcodezero",
"regfish",
"regru",
"rimuhosting",
"route53",
"safedns",
"sakuracloud",
"scaleway",
"scannet",
"selectel",
"selectelv2",
"selfhostde",
"servercow",
"shellrent",
"simply",
"sonic",
"spaceship",
"stackpath",
"syse",
"technitium",
"tele3",
"tencentcloud",
"timewebcloud",
"todaynic",
"transip",
"ucloud",
"ultradns",
"uniteddomains",
"variomedia",
"veesp",
"vegadns",
"vercel",
"versio",
"vinyldns",
"virtualname",
"vkcloud",
"volcengine",
"vscale",
"vultr",
"wannafind",
"webglobe",
"webnamesca",
"webnamesru",
"websupport",
"wedos",
"westcn",
"xinnet",
"yandex",
"yandex360",
"yandexcloud",
"zilore",
"zoneedit",
"zoneee",
"zonomi"
],
"acmeToken": {
"cloudflare": "CF_DNS_API_TOKEN_FILE",
"duckdns": "DUCKDNS_TOKEN_FILE",
"hetzner": "HETZNER_API_KEY_FILE",
"digitalocean": "DO_AUTH_TOKEN_FILE",
"desec": "DESEC_TOKEN_FILE"
}
}