diff --git a/hosts/nixos/nfss/system.nix b/hosts/nixos/nfss/system.nix index 41f3662..e63c587 100644 --- a/hosts/nixos/nfss/system.nix +++ b/hosts/nixos/nfss/system.nix @@ -138,6 +138,7 @@ user = "yanlin"; audiobookshelf.enable = true; deluge.enable = true; + navidrome.enable = true; }; # Samba file sharing diff --git a/hosts/nixos/vps/proxy.nix b/hosts/nixos/vps/proxy.nix index 7485220..fe09aa0 100644 --- a/hosts/nixos/vps/proxy.nix +++ b/hosts/nixos/vps/proxy.nix @@ -28,6 +28,17 @@ }; }; + music = { + rule = "Host(`music.yanlincs.com`)"; + service = "music"; + tls = { + certResolver = "cloudflare"; + domains = [{ + main = "*.yanlincs.com"; + }]; + }; + }; + deluge = { rule = "Host(`deluge.yanlincs.com`)"; service = "deluge"; @@ -59,6 +70,14 @@ }; }; + music = { + loadBalancer = { + servers = [{ + url = "http://nfss.yanlincs.com:4533"; + }]; + }; + }; + deluge = { loadBalancer = { servers = [{ diff --git a/modules/media-server.nix b/modules/media-server.nix index e82c05f..22b6f16 100644 --- a/modules/media-server.nix +++ b/modules/media-server.nix @@ -25,6 +25,12 @@ in lidarr.enable = lib.mkEnableOption "Lidarr music management"; # port 8686 bazarr.enable = lib.mkEnableOption "Bazarr subtitle management"; # port 6767 audiobookshelf.enable = lib.mkEnableOption "Audiobookshelf audiobook server"; # port 8000 + navidrome.enable = lib.mkEnableOption "Navidrome music server"; # port 4533 + navidrome.musicFolder = lib.mkOption { + type = lib.types.str; + default = "/home/Media/music"; + description = "Path to music folder for Navidrome"; + }; }; config = { @@ -92,5 +98,19 @@ in host = "0.0.0.0"; openFirewall = false; }; + + services.navidrome = lib.mkIf cfg.navidrome.enable { + enable = true; + user = cfg.user; + group = cfg.group; + openFirewall = false; + settings = { + MusicFolder = cfg.navidrome.musicFolder; + }; + }; + + systemd.services.navidrome.serviceConfig = lib.mkIf cfg.navidrome.enable { + ProtectHome = lib.mkForce false; + }; }; }