From e1c30789a246631b08f9104a449d0e26adc9627f Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Mon, 28 Apr 2025 00:53:26 +0100 Subject: [PATCH] Configure Nginx virtual host for audiobookshelf --- hosts/nixedo/modules/acme.nix | 1 + hosts/nixedo/modules/audiobookshelf.nix | 19 +++++++++++++++++-- hosts/nixedo/services/homepage/services.nix | 9 +++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/hosts/nixedo/modules/acme.nix b/hosts/nixedo/modules/acme.nix index 64a9296d..1c2eb24a 100644 --- a/hosts/nixedo/modules/acme.nix +++ b/hosts/nixedo/modules/acme.nix @@ -14,6 +14,7 @@ extraDomainNames = [ "2020.oliverdavies.uk" + "audiobookshelf.oliverdavies.uk" "bootstrap-with-tailwind.oliverdavies.uk" "code.oliverdavies.uk" "eric.oliverdavies.uk" diff --git a/hosts/nixedo/modules/audiobookshelf.nix b/hosts/nixedo/modules/audiobookshelf.nix index 4d424c53..3c671eea 100644 --- a/hosts/nixedo/modules/audiobookshelf.nix +++ b/hosts/nixedo/modules/audiobookshelf.nix @@ -1,5 +1,8 @@ { config, ... }: +let + cfg = config.services.audiobookshelf; +in { services = { audiobookshelf = { @@ -8,10 +11,22 @@ port = 4001; }; - caddy.virtualHosts."audiobookshelf.oliverdavies.uk" = { + nginx.virtualHosts."audiobookshelf.oliverdavies.uk" = { + forceSSL = true; useACMEHost = "oliverdavies.uk"; - extraConfig = "reverse_proxy localhost:${toString config.services.audiobookshelf.port}"; + 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; + ''; + }; }; }; } diff --git a/hosts/nixedo/services/homepage/services.nix b/hosts/nixedo/services/homepage/services.nix index 94d416ed..77d1878c 100644 --- a/hosts/nixedo/services/homepage/services.nix +++ b/hosts/nixedo/services/homepage/services.nix @@ -11,6 +11,15 @@ siteMonitor = "http://localhost:8096"; }; } + + { + "Audiobookshelf" = { + href = "https://audiobookshelf.oliverdavies.uk"; + icon = "audiobookshelf"; + description = "Self-hosted audiobook and podcast server"; + siteMonitor = "http://localhost:4001"; + }; + } ]; }