From f17a38ce1ea8de01f741a079aff2b5f386a333fa Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Mon, 28 Apr 2025 00:23:46 +0100 Subject: [PATCH] Configure Nginx virtual host for paperless-ngx --- hosts/nixedo/modules/acme.nix | 1 + hosts/nixedo/modules/paperless.nix | 43 +++++++++++++++++++++--------- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/hosts/nixedo/modules/acme.nix b/hosts/nixedo/modules/acme.nix index 08df357c..64a9296d 100644 --- a/hosts/nixedo/modules/acme.nix +++ b/hosts/nixedo/modules/acme.nix @@ -21,6 +21,7 @@ "jellyfin.oliverdavies.uk" "luke.oliverdavies.uk" "nixedo.oliverdavies.uk" + "paperless.oliverdavies.uk" "phpsw-sculpin-demo.oliverdavies.uk" "rebuilding-acquia.oliverdavies.uk" "rebuilding-bartik.oliverdavies.uk" diff --git a/hosts/nixedo/modules/paperless.nix b/hosts/nixedo/modules/paperless.nix index 3fdbb146..72429bcf 100644 --- a/hosts/nixedo/modules/paperless.nix +++ b/hosts/nixedo/modules/paperless.nix @@ -1,21 +1,38 @@ { config, ... }: { - services = { - paperless = { - enable = true; + services = + let + cfg = config.services.paperless; + hostname = "paperless.oliverdavies.uk"; + in + { + paperless = { + enable = true; - dataDir = "/mnt/media/paperless"; + dataDir = "/mnt/media/paperless"; - settings = { - PAPERLESS_URL = "https://paperless.oliverdavies.uk"; + settings = { + PAPERLESS_URL = "https://${hostname}"; + }; + }; + + nginx.virtualHosts."${hostname}" = { + forceSSL = true; + useACMEHost = "oliverdavies.uk"; + + locations."/" = { + proxyPass = "http://localhost:${toString cfg.port}"; + + extraConfig = '' + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Host $http_host; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Protocol $scheme; + proxy_set_header X-Real-IP $remote_addr; + ''; + }; }; }; - - caddy.virtualHosts."${config.services.paperless.settings.PAPERLESS_URL}" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = "reverse_proxy localhost:28981"; - }; - }; }