Jump to content

Navidrome: Difference between revisions

From Official NixOS Wiki
Onny (talk | contribs)
Initial page
 
m Add plugins information and change headers for better readability
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[https://www.navidrome.org Navidrome] is a self-hosted music streaming server that allows users to manage and play their personal music collections from various devices. Designed with a user-friendly interface, it supports features like playlists, searching, and streaming, all while emphasizing privacy and data ownership.
[https://www.navidrome.org Navidrome] is a self-hosted music streaming server that allows users to manage and play their personal music collections from various devices. Designed with a user-friendly interface, it supports features like playlists, searching, and streaming, all while emphasizing privacy and data ownership.


=== Setup ===
== Setup ==
 
Simply add to your system configuration and apply<syntaxhighlight lang="nix">
Simply add to your system configuration and apply<syntaxhighlight lang="nix">
services.navidrome.enable = true;
services.navidrome = {
</syntaxhighlight>The service should be available add <nowiki>http://127.0.0.1:4533</nowiki> . Continue adding an admin login including setting a password.
  enable = true;
  settings.MusicFolder = "/mnt/audio/music";
};
</syntaxhighlight>The service should be available add http://127.0.0.1:4533. Continue adding an admin login including setting a password.
 
==== Setting to localhost ====
 
<syntaxhighlight lang="nix">
services.navidrome = {
  settings = {
    Address = "0.0.0.0";
  };
};
</syntaxhighlight>
 
==== Open the Firewall ====
 
If it is enabled the following settings will open just for this port
 
<syntaxhighlight lang="nix">
services.navidrome = {
  openFirewall = true;
};
</syntaxhighlight>
 
== Plugins ==
Navidrome plugins packaged in Nixpkgs can be installed declaratively with the {{nixos:option|services.navidrome.plugins}} option.<syntaxhighlight lang="nix">
{ pkgs, ... }:
{
  services.navidrome = {
    enable = true;
 
    plugins = with pkgs.navidromePlugins; [
      audiomuseai
      apple-music
      listenbrainz-daily-playlist
      lyrics-plugin
    ];
 
    # The lyrics plugin bundle is named lyrics-plugin.ndp.
    settings.LyricsPriority = ".ttml,.yaml,.yml,.elrc,.srt,lyrics-plugin,embedded,.lrc,.txt";
  };
}
</syntaxhighlight>Available packages are exposed under <code>pkgs.navidromePlugins</code>. The NixOS module validates the selected packages, builds a Navidrome package containing their <code>.ndp</code> bundles, and manages the plugin folder automatically. The Nix attribute name can differ from the installed bundle name; use the attribute names shown above in {{nixos:option|services.navidrome.plugins}}.
 
Installing a plugin makes it available to Navidrome. Enable it, grant its requested permissions, and configure plugin-specific settings in the Navidrome web interface under <code>Settings → Plugins</code>. Do not set <code>services.navidrome.settings.Plugins.Folder</code>, because the NixOS module manages that value.
 
== Tips and Tricks ==
 
==== Import playlists ====
 
Place m3u or m3u8 playlist files in a specific folder, configure it in the Navidrome service and after a library scan it should get imported. In this example the playlist files are stored in <code>/mnt/audio/playlists</code>.
 
<syntaxhighlight lang="nix">
services.navidrome = {
  enable = true;
  settings.PlaylistsPath = "/mnt/audio/playlists";
};
</syntaxhighlight>
 
==== Enable sharing ====
Single tracks, albums or playlists can be publicly shared. To enable the feature, add
 
<syntaxhighlight lang="nix">
services.navidrome = {
  enable = true;
  settings.EnableSharing = true;
};
</syntaxhighlight>

Latest revision as of 10:59, 27 July 2026

Navidrome is a self-hosted music streaming server that allows users to manage and play their personal music collections from various devices. Designed with a user-friendly interface, it supports features like playlists, searching, and streaming, all while emphasizing privacy and data ownership.

Setup

Simply add to your system configuration and apply

services.navidrome = {
  enable = true;
  settings.MusicFolder = "/mnt/audio/music";
};

The service should be available add http://127.0.0.1:4533. Continue adding an admin login including setting a password.

Setting to localhost

services.navidrome = {
  settings = {
    Address = "0.0.0.0";
  };
};

Open the Firewall

If it is enabled the following settings will open just for this port

services.navidrome = {
  openFirewall = true;
};

Plugins

Navidrome plugins packaged in Nixpkgs can be installed declaratively with the services.navidrome.plugins option.

{ pkgs, ... }:
{
  services.navidrome = {
    enable = true;

    plugins = with pkgs.navidromePlugins; [
      audiomuseai
      apple-music
      listenbrainz-daily-playlist
      lyrics-plugin
    ];

    # The lyrics plugin bundle is named lyrics-plugin.ndp.
    settings.LyricsPriority = ".ttml,.yaml,.yml,.elrc,.srt,lyrics-plugin,embedded,.lrc,.txt";
  };
}

Available packages are exposed under pkgs.navidromePlugins. The NixOS module validates the selected packages, builds a Navidrome package containing their .ndp bundles, and manages the plugin folder automatically. The Nix attribute name can differ from the installed bundle name; use the attribute names shown above in services.navidrome.plugins.

Installing a plugin makes it available to Navidrome. Enable it, grant its requested permissions, and configure plugin-specific settings in the Navidrome web interface under Settings → Plugins. Do not set services.navidrome.settings.Plugins.Folder, because the NixOS module manages that value.

Tips and Tricks

Import playlists

Place m3u or m3u8 playlist files in a specific folder, configure it in the Navidrome service and after a library scan it should get imported. In this example the playlist files are stored in /mnt/audio/playlists.

services.navidrome = {
  enable = true;
  settings.PlaylistsPath = "/mnt/audio/playlists";
};

Enable sharing

Single tracks, albums or playlists can be publicly shared. To enable the feature, add

services.navidrome = {
  enable = true;
  settings.EnableSharing = true;
};