Navidrome: Difference between revisions
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 == | |||
Simply add to your system configuration and apply<syntaxhighlight lang="nix"> | Simply add to your system configuration and apply<syntaxhighlight lang="nix"> | ||
services.navidrome | services.navidrome = { | ||
</syntaxhighlight>The service should be available add | 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;
};