summary refs log tree commit diff
path: root/services/pds.nix
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2024-12-26 17:24:04 +0100
committerMel <einebeere@gmail.com>2024-12-26 17:31:29 +0100
commitce64e6e1990b62451acb3822b7ab914e16b122b6 (patch)
tree3793d855dc49b849e82c919a36d4c376bf00f36f /services/pds.nix
parent98cdef36e124b0b5ae90021a92408bb7899660c2 (diff)
downloadnetwork-ce64e6e1990b62451acb3822b7ab914e16b122b6.tar.zst
network-ce64e6e1990b62451acb3822b7ab914e16b122b6.zip
Pull out web configuration from specific machine modules
Signed-off-by: Mel <einebeere@gmail.com>
Diffstat (limited to 'services/pds.nix')
-rw-r--r--services/pds.nix35
1 files changed, 31 insertions, 4 deletions
diff --git a/services/pds.nix b/services/pds.nix
index 671dc6a..5f1c8e0 100644
--- a/services/pds.nix
+++ b/services/pds.nix
@@ -3,9 +3,10 @@
 let
   inherit (pkgs) dockerTools glibc;
   inherit (auxiliaryPkgs) common;
-
   inherit (auxiliaryPkgs.bluesky) pds pdsadmin;
 
+  inherit (config.age) secrets;
+
   pdsLocalPort = 16419;
   pdsDir = "/srv/pds";
 
@@ -25,8 +26,9 @@ let
 
 in
 {
-  age.secrets.pds-secrets = {
-    file = ../secrets/pds-secrets.age;
+  age.secrets = {
+    pds-secrets.file = ../secrets/pds-secrets.age;
+    cloudflare-dns.file = ../secrets/cloudflare-dns.age;
   };
 
   foundation.services.pds = {
@@ -55,9 +57,34 @@ in
       LOG_ENABLED = "true";
     };
 
-    environmentFiles = [ config.age.secrets.pds-secrets.path ];
+    environmentFiles = [ secrets.pds-secrets.path ];
 
     workdir = "/pds";
     entrypoint = "${pds}/bin/pds";
   };
+
+  security.acme.certs."pds.rnrd.eu" = {
+    group = "nginx";
+    domain = "*.pds.rnrd.eu";
+    extraDomainNames = [ "pds.rnrd.eu" ];
+    dnsProvider = "cloudflare";
+    credentialFiles = {
+      CLOUDFLARE_DNS_API_TOKEN_FILE = secrets.cloudflare-dns.path;
+    };
+  };
+
+  services.nginx.virtualHosts."pds.rnrd.eu" = {
+    serverAliases = [ "*.pds.rnrd.eu" ];
+    forceSSL = true;
+    useACMEHost = "pds.rnrd.eu";
+
+    locations."/" = {
+      proxyWebsockets = true;
+      proxyPass = "http://127.0.0.1:16419";
+    };
+
+    extraConfig = ''
+      access_log /var/log/nginx/pds.access.log json_combined;
+    '';
+  };
 }