2020-01-23 15:44:08 -09:00
|
|
|
# Navidrome Music Streamer
|
2016-02-24 14:28:23 -09:00
|
|
|
|
2020-03-27 17:51:24 -08:00
|
|
|
[](https://github.com/deluan/navidrome/releases)
|
|
|
|
|
[](https://github.com/deluan/navidrome/actions)
|
|
|
|
|
[](https://hub.docker.com/r/deluan/navidrome)
|
|
|
|
|
[](https://discord.gg/xh7j7yF)
|
|
|
|
|
[](https://www.reddit.com/r/navidrome/)
|
2016-02-26 06:56:57 -09:00
|
|
|
|
2020-01-23 18:57:51 -09:00
|
|
|
Navidrome is an open source web-based music collection server and streamer. It gives you freedom to listen to your
|
2020-02-05 04:40:15 -09:00
|
|
|
music collection from any browser or mobile device. It's like your personal Spotify!
|
2020-01-25 08:35:28 -09:00
|
|
|
|
2020-01-25 18:01:37 -09:00
|
|
|
__Any feedback is welcome!__ If you need/want a new feature, find a bug or think of any way to improve Navidrome,
|
2020-03-31 11:11:33 -08:00
|
|
|
please fill a [GitHub issue](https://github.com/deluan/navidrome/issues) or join the discussion in our
|
|
|
|
|
[Subreddit](https://www.reddit.com/r/navidrome/). If you want to contribute to the project in any other way
|
2020-03-31 15:54:38 -08:00
|
|
|
(ui/backend dev, translations, [themes](ui/src/themes/README.md)), please join the chat in our
|
|
|
|
|
[Discord server](https://discord.gg/xh7j7yF).
|
2020-01-27 04:04:55 -09:00
|
|
|
|
2020-01-25 08:35:28 -09:00
|
|
|
|
2020-01-23 18:57:51 -09:00
|
|
|
## Features
|
|
|
|
|
|
|
|
|
|
- Handles very large music collections
|
|
|
|
|
- Streams virtually any audio format available
|
|
|
|
|
- Reads and uses all your beautifully curated metadata (id3 tags)
|
|
|
|
|
- Multi-user, each user has their own play counts, playlists, favourites, etc..
|
|
|
|
|
- Very low resource usage: Ex: with a library of 300GB (~29000 songs), it uses less than 50MB of RAM
|
|
|
|
|
- Multi-platform, runs on macOS, Linux and Windows. Docker images are also provided
|
2020-03-15 09:26:48 -08:00
|
|
|
- Ready to use Raspberry Pi binaries available
|
2020-01-23 18:57:51 -09:00
|
|
|
- Automatically monitors your library for changes, importing new files and reloading new metadata
|
2020-03-31 16:42:59 -08:00
|
|
|
- [Themeable](ui/src/themes/README.md), modern and responsive Web interface based on Material UI, to manage users and
|
|
|
|
|
browse your library
|
2020-04-29 13:38:03 -08:00
|
|
|
- Compatible with all Subsonic/Madsonic/Airsonic clients. See below for a list of tested clients
|
2020-03-18 17:23:45 -08:00
|
|
|
- Transcoding/Downsampling on-the-fly. Can be set per user/player. Opus encoding is supported
|
2020-02-07 14:02:44 -09:00
|
|
|
- Integrated music player (WIP)
|
2020-02-05 04:40:15 -09:00
|
|
|
|
2020-03-17 11:17:46 -08:00
|
|
|
Navidrome should be compatible with all Subsonic clients. The following clients are tested and confirmed to work properly:
|
2020-03-21 10:11:57 -08:00
|
|
|
- Android: [DSub](https://play.google.com/store/apps/details?id=github.daneren2005.dsub),
|
|
|
|
|
[Ultrasonic](https://play.google.com/store/apps/details?id=org.moire.ultrasonic) and
|
|
|
|
|
[Music Stash](https://play.google.com/store/apps/details?id=com.ghenry22.mymusicstash)
|
|
|
|
|
- iOS: [play:Sub](http://michaelsapps.dk/playsubapp/)
|
|
|
|
|
- Web: [Jamstash](http://jamstash.com),
|
|
|
|
|
[Aurial](http://shrimpza.github.io/aurial/),
|
|
|
|
|
[Subfire](http://p.subfireplayer.net/) and
|
|
|
|
|
[Subplayer](https://github.com/peguerosdc/subplayer)
|
2020-03-15 09:26:48 -08:00
|
|
|
|
|
|
|
|
For more options, look at the [list of clients](https://airsonic.github.io/docs/apps/) maintained by
|
2020-03-17 11:17:46 -08:00
|
|
|
the Airsonic project. Please open an [issue](https://github.com/deluan/navidrome/issues) if you have any
|
2020-03-17 11:22:37 -08:00
|
|
|
trouble with the client of your choice.
|
2020-03-18 17:23:45 -08:00
|
|
|
|
|
|
|
|
|
2020-01-24 05:28:00 -09:00
|
|
|
## Road map
|
2020-01-23 18:57:51 -09:00
|
|
|
|
|
|
|
|
This project is being actively worked on. Expect a more polished experience and new features/releases
|
|
|
|
|
on a frequent basis. Some upcoming features planned:
|
|
|
|
|
|
2020-03-31 16:42:59 -08:00
|
|
|
- Complete WebUI, to browse and listen to your library
|
2020-02-05 04:40:15 -09:00
|
|
|
- Last.FM integration
|
2020-01-23 18:57:51 -09:00
|
|
|
- Smart/dynamic playlists (similar to iTunes)
|
2020-02-05 04:40:15 -09:00
|
|
|
- Support for audiobooks (bookmarking)
|
2020-01-23 18:57:51 -09:00
|
|
|
- Jukebox mode
|
|
|
|
|
- Sharing links to albums/songs/playlists
|
|
|
|
|
- Podcasts
|
|
|
|
|
|
2020-02-05 04:40:15 -09:00
|
|
|
|
2020-01-23 18:57:51 -09:00
|
|
|
## Installation
|
|
|
|
|
|
2020-01-26 08:36:24 -09:00
|
|
|
Various options are available:
|
2020-01-23 18:57:51 -09:00
|
|
|
|
2020-02-06 05:19:32 -09:00
|
|
|
### Pre-built executables
|
2020-01-26 08:36:24 -09:00
|
|
|
|
|
|
|
|
Just head to the [releases page](https://github.com/deluan/navidrome/releases) and download the latest version for you
|
2020-03-13 08:40:08 -08:00
|
|
|
platform. There are builds available for Linux (amd64 and arm), macOS and Windows (32 and 64 bits).
|
|
|
|
|
For Raspberry Pi (tested with Raspbian Buster on Pi 4), use the Linux arm builds.
|
2020-01-26 08:36:24 -09:00
|
|
|
|
2020-03-15 09:26:48 -08:00
|
|
|
Remember to install [ffmpeg](https://ffmpeg.org/download.html) in your system, a requirement for Navidrome to work
|
|
|
|
|
properly. You may find the latest static build for your platform here: https://johnvansickle.com/ffmpeg/
|
2020-01-26 08:36:24 -09:00
|
|
|
|
|
|
|
|
If you have any issues with these binaries, or need a binary for a different platform, please
|
|
|
|
|
[open an issue](https://github.com/deluan/navidrome/issues)
|
|
|
|
|
|
|
|
|
|
### Docker
|
|
|
|
|
|
2020-03-15 09:26:48 -08:00
|
|
|
[Docker images](https://hub.docker.com/r/deluan/navidrome) are available. They include everything needed
|
|
|
|
|
to run Navidrome. Example of usage:
|
2020-01-23 18:57:51 -09:00
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
# This is just an example. Customize it to your needs.
|
|
|
|
|
|
|
|
|
|
version: "3"
|
|
|
|
|
services:
|
|
|
|
|
navidrome:
|
|
|
|
|
image: deluan/navidrome:latest
|
|
|
|
|
ports:
|
|
|
|
|
- "4533:4533"
|
|
|
|
|
environment:
|
|
|
|
|
# All options with their default values:
|
2020-01-23 21:29:31 -09:00
|
|
|
ND_MUSICFOLDER: /music
|
2020-01-26 12:42:56 -09:00
|
|
|
ND_DATAFOLDER: /data
|
2020-01-24 06:27:49 -09:00
|
|
|
ND_SCANINTERVAL: 1m
|
|
|
|
|
ND_LOGLEVEL: info
|
2020-01-23 21:29:31 -09:00
|
|
|
ND_PORT: 4533
|
2020-03-18 17:23:45 -08:00
|
|
|
ND_TRANSCODINGCACHESIZE: 100MB
|
|
|
|
|
ND_SESSIONTIMEOUT: 30m
|
2020-04-03 13:50:42 -08:00
|
|
|
ND_BASEURL: ""
|
2020-01-23 18:57:51 -09:00
|
|
|
volumes:
|
|
|
|
|
- "./data:/data"
|
2020-03-17 11:17:46 -08:00
|
|
|
- "/path/to/your/music/folder:/music:ro"
|
2020-01-23 18:57:51 -09:00
|
|
|
```
|
2016-02-29 10:16:51 -09:00
|
|
|
|
2020-02-05 04:40:15 -09:00
|
|
|
To get the cutting-edge, latest version from master, use the image `deluan/navidrome:develop`
|
|
|
|
|
|
2020-01-30 12:07:54 -09:00
|
|
|
### Build from source
|
2016-02-24 14:28:23 -09:00
|
|
|
|
2020-04-16 20:21:42 -08:00
|
|
|
You will need to install [Go 1.14](https://golang.org/dl/) and [Node 13](http://nodejs.org).
|
2020-01-30 12:07:54 -09:00
|
|
|
You'll also need [ffmpeg](https://ffmpeg.org) installed in your system. The setup is very strict, and
|
2020-04-29 13:38:03 -08:00
|
|
|
the steps below only work with these specific versions (enforced in the Makefile)
|
2016-03-31 18:28:33 -08:00
|
|
|
|
2020-01-30 12:07:54 -09:00
|
|
|
After the prerequisites above are installed, clone this repository and build the application with:
|
2020-01-04 17:16:10 -09:00
|
|
|
|
2020-01-30 12:07:54 -09:00
|
|
|
```shell script
|
|
|
|
|
$ git clone https://github.com/deluan/navidrome
|
|
|
|
|
$ cd navidrome
|
|
|
|
|
$ make setup # Install tools required for Navidrome's development
|
|
|
|
|
$ make buildall # Build UI and server, generates a single executable
|
2016-03-31 18:28:33 -08:00
|
|
|
```
|
2020-01-04 17:16:10 -09:00
|
|
|
|
2020-02-04 11:17:10 -09:00
|
|
|
This will generate the `navidrome` executable binary in the project's root folder.
|
2020-01-26 08:36:24 -09:00
|
|
|
|
|
|
|
|
### Running for the first time
|
|
|
|
|
|
|
|
|
|
Start the server with:
|
2020-01-23 18:57:51 -09:00
|
|
|
```shell script
|
|
|
|
|
./navidrome
|
2020-01-20 09:35:59 -09:00
|
|
|
```
|
2020-01-23 18:57:51 -09:00
|
|
|
The server should start listening for requests on the default port __4533__
|
2020-01-06 11:19:14 -09:00
|
|
|
|
2020-01-25 13:10:16 -09:00
|
|
|
After starting Navidrome for the first time, go to http://localhost:4533. It will ask you to create your first admin
|
|
|
|
|
user.
|
2016-02-26 07:39:14 -09:00
|
|
|
|
2020-01-26 17:54:49 -09:00
|
|
|
For more options, run `navidrome --help`
|
|
|
|
|
|
2020-03-21 03:57:15 -08:00
|
|
|
### Running as a service
|
|
|
|
|
|
|
|
|
|
Check the [contrib](https://github.com/deluan/navidrome/tree/master/contrib)
|
|
|
|
|
folder for startup files for your init system.
|
|
|
|
|
|
|
|
|
|
|
2020-01-23 18:57:51 -09:00
|
|
|
## Screenshots
|
|
|
|
|
|
|
|
|
|
<p align="center">
|
|
|
|
|
<p float="left">
|
2020-02-07 14:21:51 -09:00
|
|
|
<img width="270" src="https://raw.githubusercontent.com/deluan/navidrome/master/.github/screenshots/ss-mobile-login.png">
|
|
|
|
|
<img width="270" src="https://raw.githubusercontent.com/deluan/navidrome/master/.github/screenshots/ss-mobile-player.png">
|
|
|
|
|
<img width="270" src="https://raw.githubusercontent.com/deluan/navidrome/master/.github/screenshots/ss-mobile-album-view.png">
|
2020-03-21 10:11:57 -08:00
|
|
|
<img width="900" src="https://raw.githubusercontent.com/deluan/navidrome/master/.github/screenshots/ss-desktop-player.png">
|
2020-01-23 18:57:51 -09:00
|
|
|
</p>
|
|
|
|
|
</p>
|
2016-02-26 23:35:01 -09:00
|
|
|
|
2016-02-26 07:39:14 -09:00
|
|
|
|
2020-01-23 19:46:30 -09:00
|
|
|
## Subsonic API Version Compatibility
|
2016-02-23 14:41:35 -09:00
|
|
|
|
2020-04-11 09:19:58 -08:00
|
|
|
Check the up to date [compatibility table](https://www.navidrome.org/docs/developers/subsonic-api)
|
2020-01-23 18:57:51 -09:00
|
|
|
for the latest Subsonic features available.
|