Convert Figma logo to code with AI

navidrome logonavidrome

๐ŸŽงโ˜๏ธ Your Personal Streaming Service

12,943
957
12,943
164

Top Related Projects

3,831

Looks and smells like Sonarr but made for music.

:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)

1,774

music streaming server / free-software subsonic server API implementation

Linux/FreeBSD DAAP (iTunes) and MPD audio server with support for AirPlay 1 and 2 speakers (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio.

Quick Overview

Navidrome is a self-hosted, open-source music server and streaming application. It allows users to organize and stream their personal music collection from anywhere, supporting various audio formats and providing a web-based interface as well as compatibility with subsonic/airsonic clients.

Pros

  • Easy to set up and maintain, with a single binary distribution
  • Supports a wide range of audio formats and automatic metadata retrieval
  • Provides a modern, responsive web interface and compatibility with many mobile apps
  • Lightweight and efficient, suitable for running on low-powered devices like Raspberry Pi

Cons

  • Limited advanced features compared to some other music servers
  • Smaller community and ecosystem compared to more established alternatives
  • May require additional setup for remote access and SSL/TLS encryption
  • Some users report occasional issues with metadata handling and library scanning

Getting Started

To get started with Navidrome:

  1. Download the latest release for your platform from the GitHub releases page.
  2. Extract the downloaded file and place the navidrome binary in a directory of your choice.
  3. Create a configuration file named navidrome.toml in the same directory with the following content:
MusicFolder = "/path/to/your/music/folder"
DataFolder = "/path/to/navidrome/data"
  1. Run the Navidrome binary:
./navidrome
  1. Access the web interface at http://localhost:4533 and create your admin account.

For more detailed instructions and configuration options, refer to the official documentation.

Competitor Comparisons

3,831

Looks and smells like Sonarr but made for music.

Pros of Lidarr

  • More comprehensive music management with automated downloading and organizing
  • Integrates with various indexers and download clients
  • Offers detailed metadata and album/artist tracking

Cons of Lidarr

  • More complex setup and configuration
  • Requires additional services for full functionality
  • Heavier resource usage due to its extensive features

Code Comparison

Navidrome (Go):

func (s *sonic) GetAlbums(ctx context.Context, req *pb.GetAlbumsRequest) (*pb.GetAlbumsResponse, error) {
    albums, err := s.ds.Album(ctx).GetAll(req.Id)
    if err != nil {
        return nil, err
    }
    return &pb.GetAlbumsResponse{Album: albums}, nil
}

Lidarr (C#):

public List<Album> GetAlbums(int artistId, bool includeAllArtistAlbums = false)
{
    return _albumRepository.GetAlbums(artistId, includeAllArtistAlbums);
}

Both projects handle album retrieval, but Lidarr's implementation is more straightforward, while Navidrome's uses a protobuf-style approach with context handling.

Navidrome focuses on streaming and playback, while Lidarr emphasizes music library management and acquisition. Navidrome is lighter and easier to set up, but Lidarr offers more advanced features for serious music collectors.

:satellite: :cloud: :notes:Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)

Pros of Airsonic

  • More mature project with a longer history and larger user base
  • Supports a wider range of audio formats, including FLAC and OGG
  • Offers advanced features like podcast support and internet radio

Cons of Airsonic

  • Written in Java, which can be resource-intensive and slower to start up
  • Less active development and slower release cycle
  • More complex setup and configuration process

Code Comparison

Airsonic (Java):

public class MediaScannerService {
    private static final Logger LOG = LoggerFactory.getLogger(MediaScannerService.class);

    @Autowired
    private MediaFileService mediaFileService;
}

Navidrome (Go):

type Scanner struct {
    folders    model.MediaFolders
    fileSystem fs.FileSystem
    albumRepo  model.AlbumRepository
    artistRepo model.ArtistRepository
}

Navidrome is a newer, more lightweight alternative to Airsonic, written in Go. It offers a modern web interface and faster performance, especially on low-powered devices. Navidrome has a simpler setup process and a more active development community. However, it may lack some of the advanced features found in Airsonic, and its audio format support is more limited. Both projects aim to provide self-hosted music streaming solutions, but Navidrome focuses on simplicity and efficiency, while Airsonic offers a more feature-rich experience at the cost of higher resource usage.

1,774

music streaming server / free-software subsonic server API implementation

Pros of Gonic

  • Lightweight and efficient, with lower resource usage
  • Supports on-the-fly audio transcoding
  • Implements the Subsonic API more completely

Cons of Gonic

  • Less active development and smaller community
  • Fewer features and customization options
  • Limited web UI functionality compared to Navidrome

Code Comparison

Gonic (Go):

func (c *Controller) GetAlbumList2(w http.ResponseWriter, r *http.Request) {
    params := r.Context().Value(CtxParams).(params.Params)
    listType := params.Get("type")
    size := params.GetIntOr("size", 10)
    offset := params.GetIntOr("offset", 0)
    // ...
}

Navidrome (Go):

func (api *Router) GetAlbumList2(w http.ResponseWriter, r *http.Request) (*responses.Subsonic, error) {
    params := api.getParams(r)
    listType := params.Get("type")
    size := utils.ParamInt(r, "size", 10)
    offset := utils.ParamInt(r, "offset", 0)
    // ...
}

Both projects implement similar functionality for the Subsonic API, but Gonic's implementation tends to be more lightweight and focused on core features. Navidrome offers a more comprehensive set of features and a more polished web UI, making it suitable for users who prefer a full-featured music server with an intuitive interface. Gonic, on the other hand, may appeal to users looking for a minimalist, efficient solution with strong support for the Subsonic API.

Linux/FreeBSD DAAP (iTunes) and MPD audio server with support for AirPlay 1 and 2 speakers (multiroom), Apple Remote (and compatibles), Chromecast, Spotify and internet radio.

Pros of OwnTone

  • Supports AirPlay and Chromecast streaming protocols
  • Offers advanced audio features like gapless playback and ReplayGain
  • Includes a built-in web interface for configuration and playback control

Cons of OwnTone

  • Less modern and responsive web UI compared to Navidrome
  • Limited support for music metadata management and editing
  • Fewer options for user management and access control

Code Comparison

OwnTone (C):

static int
daap_reply_server_info(struct evhttp_request *req, struct evbuffer *evbuf, char **uri, struct evkeyvalq *query)
{
  return dmap_send_server_info(evbuf);
}

Navidrome (Go):

func (c *Controller) GetAlbum(w http.ResponseWriter, r *http.Request) (*responses.Album, error) {
    id, err := reqParams(r).GetString("id")
    if err != nil {
        return nil, err
    }
    return c.album.Get(r.Context(), id)
}

Both projects use different programming languages and architectures, making direct code comparison challenging. OwnTone is written in C, focusing on low-level system interactions and performance, while Navidrome uses Go, emphasizing readability and modern web development practices.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Navidrome logo

Navidrome Music Server ย Tweet

Last Release Build Downloads Docker Pulls Dev Chat Subreddit Contributor Covenant Gurubase

Navidrome is an open source web-based music collection server and streamer. It gives you freedom to listen to your music collection from any browser or mobile device. It's like your personal Spotify!

Note: The master branch may be in an unstable or even broken state during development. Please use releases instead of the master branch in order to get a stable set of binaries.

Check out our Live Demo!

Any feedback is welcome! If you need/want a new feature, find a bug or think of any way to improve Navidrome, please file a GitHub issue or join the discussion in our Subreddit. If you want to contribute to the project in any other way (ui/backend dev, translations, themes), please join the chat in our Discord server.

Installation

See instructions on the project's website

Cloud Hosting

PikaPods has partnered with us to offer you an officially supported, cloud-hosted solution. A share of the revenue helps fund the development of Navidrome at no additional cost for you.

PikaPods

Features

  • Handles very large music collections
  • Streams virtually any audio format available
  • Reads and uses all your beautifully curated metadata
  • Great support for compilations (Various Artists albums) and box sets (multi-disc albums)
  • Multi-user, each user has their own play counts, playlists, favourites, etc...
  • Very low resource usage
  • Multi-platform, runs on macOS, Linux and Windows. Docker images are also provided
  • Ready to use binaries for all major platforms, including Raspberry Pi
  • Automatically monitors your library for changes, importing new files and reloading new metadata
  • Themeable, modern and responsive Web interface based on Material UI
  • Compatible with all Subsonic/Madsonic/Airsonic clients
  • Transcoding on the fly. Can be set per user/player. Opus encoding is supported
  • Translated to various languages

Translations

Navidrome uses POEditor for translations, and we are always looking for more contributors

Documentation

All documentation can be found in the project's website: https://www.navidrome.org/docs. Here are some useful direct links:

Screenshots