Commit d81c9f030a97

Vincent Demeester <vincent@sbr.pm>
2025-12-10 09:21:34
feat(aion): Add Navidrome music streaming server
- Enable self-hosted Spotify-like streaming from personal library - Support independent multi-user playback on mobile devices - Provide Subsonic API for mobile app compatibility Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent 6ab54f9
Changed files (2)
systems
systems/aion/extra.nix
@@ -45,9 +45,33 @@
         };
       };
     };
+
+    navidrome = {
+      enable = true;
+      settings = {
+        MusicFolder = "/neo/music";
+        Address = "0.0.0.0";
+        Port = 4533;
+        BaseURL = "https://music.sbr.pm";
+
+        # Paths
+        DataFolder = "/var/lib/navidrome";
+        CacheFolder = "/var/cache/navidrome";
+
+        # Features
+        EnableTranscodingConfig = true;
+        EnableSubsonic = true;
+
+        # Optional: Scrobbling (can enable later)
+        # LastFM.Enabled = true;
+      };
+    };
   };
 
-  networking.useDHCP = lib.mkDefault true;
+  networking = {
+    useDHCP = lib.mkDefault true;
+    firewall.allowedTCPPorts = [ 4533 ]; # Navidrome
+  };
 
   environment.systemPackages = with pkgs; [
     lm_sensors
systems/rhea/extra.nix
@@ -126,6 +126,7 @@
               altHosts = [ "t.sbr.pm" ];
             };
             immich.port = 2283;
+            navidrome.port = 4533;
           };
 
           # Generate routers for local services
@@ -221,6 +222,7 @@
                 n8n = mkService "http://${builtins.head globals.machines.sakhalin.net.ips}:5678";
                 paperless = mkService "http://${builtins.head globals.machines.sakhalin.net.ips}:8000";
                 grafana = mkService "http://${builtins.head globals.machines.sakhalin.net.ips}:3000";
+                navidrome = mkService "http://${builtins.head globals.machines.aion.net.ips}:4533";
               };
             middlewares =
               syncthingMiddlewares