summaryrefslogtreecommitdiff
path: root/modules/www
diff options
context:
space:
mode:
authorMel <mel@rnrd.eu>2025-02-12 18:39:45 +0100
committerMel <mel@rnrd.eu>2025-02-12 18:54:57 +0100
commit2d90edb0be0ec6063a646b4473d1663179dd55fc (patch)
tree529e20f854df47debe4381d70141b24d0d5d3114 /modules/www
parent7afb39935e8dabd1c6797aefa3d36f6061794040 (diff)
downloadnetwork-2d90edb0be0ec6063a646b4473d1663179dd55fc.tar.zst
network-2d90edb0be0ec6063a646b4473d1663179dd55fc.zip
Create wildcard certificates for rnrd external and internal domain
Signed-off-by: Mel <mel@rnrd.eu>
Diffstat (limited to 'modules/www')
-rw-r--r--modules/www/default.nix44
1 files changed, 40 insertions, 4 deletions
diff --git a/modules/www/default.nix b/modules/www/default.nix
index 9a97522..ecc9b66 100644
--- a/modules/www/default.nix
+++ b/modules/www/default.nix
@@ -1,6 +1,16 @@
-{ me, pkgs, util, ... }:
+{
+ me,
+ config,
+ pkgs,
+ lib,
+ util,
+ ...
+}:
let
+ inherit (lib) mergeAttrsList;
+ inherit (config.age) secrets;
+
rnrdUrl = if me.is.renard then "rnrd.eu" else "${me.name}.rnrd.eu";
base-index = pkgs.substituteAll {
@@ -13,15 +23,40 @@ let
"favicon.png" = ../../assets/favicon.png;
};
+ certificate = domain: {
+ ${domain} = {
+ domain = "*.${domain}";
+ extraDomainNames = [ domain ];
+
+ dnsProvider = "cloudflare";
+ credentialFiles = {
+ CLOUDFLARE_DNS_API_TOKEN_FILE = secrets.cloudflare-dns.path;
+ };
+ };
+ };
in
{
imports = [ ./tailnet.nix ];
+ age.secrets = {
+ cloudflare-dns.file = ../../secrets/cloudflare-dns.age;
+ };
+
security.acme = {
acceptTerms = true;
- defaults.email = "mel@rnrd.eu";
# causes issues with tailscale certificates
preliminarySelfsigned = false;
+ defaults = {
+ email = "mel@rnrd.eu";
+ # our certificates are really only used with Nginx
+ group = config.services.nginx.group;
+ reloadServices = [ "nginx.service" ];
+ };
+
+ certs = mergeAttrsList [
+ (certificate "rnrd.eu")
+ (certificate "rnrd.fyi")
+ ];
};
services.nginx = {
@@ -57,9 +92,10 @@ in
base = {
default = true;
serverName = rnrdUrl;
- root = base;
forceSSL = true;
- enableACME = true;
+ useACMEHost = "rnrd.eu";
+
+ root = base;
extraConfig = ''
access_log /var/log/nginx/base.access.log json_combined;
'';