From ce1c3352301a439f2b7c09842eee49308da0e1ea Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Thu, 9 Apr 2026 19:46:40 -0400 Subject: [PATCH] caddy: wildcard TLS via DNS-01 challenge + ddns-updater for Njalla Build Caddy with the caddy-dns/njalla plugin to enable DNS-01 ACME challenges. This issues a single wildcard certificate for *.sigkill.computer instead of per-subdomain certificates, reducing Let's Encrypt API calls and certificate management overhead. Add ddns-updater service (nixpkgs services.ddns-updater) configured with Njalla provider to automatically update DNS records when the server's public IP changes. --- configuration.nix | 2 ++ modules/age-secrets.nix | 14 ++++++++++++++ secrets/ddns-updater-config.age | Bin 0 -> 417 bytes secrets/njalla-api-token-env.age | Bin 0 -> 292 bytes services/caddy/caddy.nix | 17 +++++++++++++++-- services/ddns-updater.nix | 14 ++++++++++++++ 6 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 secrets/ddns-updater-config.age create mode 100644 secrets/njalla-api-token-env.age create mode 100644 services/ddns-updater.nix diff --git a/configuration.nix b/configuration.nix index 6bcd45e..79f0159 100644 --- a/configuration.nix +++ b/configuration.nix @@ -71,6 +71,8 @@ ./services/mollysocket.nix ./services/harmonia.nix + + ./services/ddns-updater.nix ]; # Hosts entries for CI/CD deploy targets diff --git a/modules/age-secrets.nix b/modules/age-secrets.nix index d3d8912..cd43825 100644 --- a/modules/age-secrets.nix +++ b/modules/age-secrets.nix @@ -46,6 +46,20 @@ group = "caddy"; }; + # Njalla API token (NJALLA_API_TOKEN=...) for Caddy DNS-01 challenge + njalla-api-token-env = { + file = ../secrets/njalla-api-token-env.age; + mode = "0400"; + owner = "caddy"; + group = "caddy"; + }; + + # ddns-updater config.json with Njalla provider credentials + ddns-updater-config = { + file = ../secrets/ddns-updater-config.age; + mode = "0400"; + }; + jellyfin-api-key = { file = ../secrets/jellyfin-api-key.age; mode = "0400"; diff --git a/secrets/ddns-updater-config.age b/secrets/ddns-updater-config.age new file mode 100644 index 0000000000000000000000000000000000000000..1fe9a46fac88ac96ac13ef29a8300fa3b85367bf GIT binary patch literal 417 zcmZQ@_Y83kiVO&0_^@J;nHxis;DsFLfA{CPJ~0sW*H!DeQMyjzhS8pj8=7yqsOar> z3|y`vUu*H}VQpDaK=zNj`_6@LHaUCtko&6%c2SEY6ZiX-sf*wFZt{sj{WK zen%%|d^xjf=Q;h(YnjRX?7s6poeSx-USrVjF+alLUs9v1X&9&Cgq`Ahx=Q+8?&iOk zkazLe_0@|PJXn` zC&}@+{}xaAp|WA8?GKmoHM5>Z&AF8xCn&>R;$_l*e`=QZqP|Z|f0uc`W1aZ4#IQc8 zXA+ZBo=2tY>g<;mJAVAK&gk4L&cF+5UXp zGZxw1zm0e7SNf#BPbJ56_l;KjmX~IJm5OK0S24Y|IKE3@$5fBczm7gRX?&^unj9-f z%`<`0_v>!WJ$dR-%fZc(@dBz#J1);P+{Sy_(|ui;_L(In-vzGwb!xxjzw6|5eC~?p zz5hA1rhkk7`1+~#