basings/selfhosted-music-overview
basings/selfhosted-music-overview has 1,308 GitHub stars and 54 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 06:48 UTC. Last push 2026-11-01.
A table listing software network services which can be hosted on your own servers
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Originalselfhosted-music-overview
selfhosted-music-overview intends to provide an overview of self-hostable music streaming servers and clients.
Table of Contents
Server Overview
| Scrobbling | Jukebox Mode | Read Tags | Write Tags | API | Share Music | Multi-User | Multi-Library | Smart Playlists | Heart/ Favorites | 5 Star Rating | Replay Gain | Transcode | DLNA | Multi-Room | Lyrics | free | Demo | Source Code | License | Reviewed Version | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Airsonic | last.fm | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | Subsonic | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark::heavy_dollar_sign: | :heavy_check_mark::heavy_dollar_sign: | :x: | GitHub | GPLv3 | 10.6.2 | Airsonic | ||||||
| Airsonic-advanced | last.fm | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | Subsonic | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | GitHub | GPLv3 | 11 | Airsonic-advanced | ||||||
| gonic | last.fm, ListenBrainz | :heavy_check_mark: | :heavy_check_mark: | :x: | OpenSubsonic | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: ^gonic-recipies | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: ^gonic-recipies | :heavy_check_mark: | :x: | GitHub | GPLv3 | 0.16.2 | gonic | |||
| Ampache | last.fm, ListenBrainz, libre.fm | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | Subsonic, custom | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Demo | GitHub | aGPLv3 | 5.6.0 | Ampache | |
| Jellyfin | last.fm ^github-lastfm-jellyfin, ListenBrainz^github-jellyfin-plugin-listenbrainz | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Jellyfin | :heavy_check_mark: [^jellyfin-share] | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | Demo | GitHub | GPLv2 | 10.10.7 | Jellyfin | |
| Funkwhale | last.fm, ListenBrainz, libre.fm, Maloja^funkwhale-scrobbling | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | WIP custom, subsonic | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | GitLab | aGPLv3 | 1.2.6 | Funkwhale |
| Lightweight Music Server | ListenBrainz | :heavy_check_mark: | :heavy_check_mark: | :x: | Subsonic, OpenSubsonic | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | Demo | GitHub | GPLv3 | 3.75.0 | Lightweight Music Server |
| Logitech Media Server | last.fm | :heavy_check_mark: | :heavy_check_mark: | :x: | custom | :heavy_check_mark: [^logitech-share] | :heavy_check_mark: :grey_question: [^review1] | :heavy_check_mark: [^logitech-multi] | :heavy_check_mark: [^logitech-comment-playlist] | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | GitHub | GPLv2 | 8.2 | Logitech Media Server |
| mStream | last.fm | :heavy_check_mark: | :heavy_check_mark: | :x: | [custom][^mstream-api] | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | Demo | GitHub | GPLv3 | 5.9.4 | mStream |
| Navidrome | last.fm, ListenBrainz | :heavy_check_mark: | :heavy_check_mark: | :x: | OpenSubsonic | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | Demo | GitHub | GPLv3 | 0.58.0 | Navidrome |
| Plex | last.fm | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :heavy_check_mark: :heavy_dollar_sign: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark::heavy_dollar_sign: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark::heavy_dollar_sign: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark::heavy_dollar_sign: | Demo | GitHub | :grey_question: | :grey_question: | Plex | ||
| Polaris | :x: | :grey_question: | :heavy_check_mark: | :x: | custom | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | GitHub | MIT | 0.13.5 | Polaris | ||||||
| Roon | last.fm | :x: | :heavy_check_mark: | :heavy_check_mark: | custom | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x::heavy_dollar_sign: | :x: | GitHub | Closed Source | 2.0.44 | Roon | |
| Orynivo Server | last.fm | :grey_question: | :heavy_check_mark: | :x: [^orynivo-tags] | custom [^orynivo-api] | :heavy_check_mark: [^orynivo-share] | :grey_question: | :grey_question: [^orynivo-multi] | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: [^orynivo-transcode] | :x: | :grey_question: [^orynivo-multiroom] | :heavy_check_mark: | :heavy_check_mark: | :x: | GitHub | Apache-2.0 | 0.48.1 | ||
| Scrobbling | Jukebox Mode | Read Tags | Write Tags | API | Share Music | Multi-User | Multi-Library | Smart Playlists | Heart/ Favorites | 5 Star Rating | Replay Gain | Transcode | DLNA | Multi-Room | Lyrics | free | Demo | Source Code | License | Reviewed Version |
[^jellyfin-share]: Direct links to files can be shared, which don't require authentification. Proper sharing links are not supported [^logitech-comment-playlist]: works best if music library has been analysed by MusicIP beforehand, otherwise limited capability [^logitech-multi]: Plugin [^logitech-share]: Native Plugin enabling UPnP/DNLA support [^mstream-api]: https://github.com/IrosTheBeggar/mStream/blob/master/docs/API.md [^orynivo-api]: Custom REST API with authenticated HTTP streaming, documented in the project README and Wiki. [^orynivo-multi]: One library per server instance; clients can connect to several servers and merge them into unified views. [^orynivo-multiroom]: AirPlay (RAOP / AirPlay 2) output is provided by the desktop client, not the server. [^orynivo-share]: Library is shared over the local network via authenticated stream URLs; no public share links. [^orynivo-tags]: Favorite, rating and genre edits are stored library-side only; media files are never rewritten. [^orynivo-transcode]: FFmpeg-backed transcoding for CUE-sheet segments and DSD-to-PCM conversion. [^review1]: needs review [^roadmap-navidrome]: on Navidrome''s public road map
Client Overview
| OS | Gapless Playback | Album View | Songs View | Folder View | Album Artist View | Artist View | Genre View | Decade View | Year View | Playlist Support | Most Played Song | Most Played Album | Recently Played Song | Recently Played Album | Recently Added Song | Recently Added Album | Frequently Played Album | Offline Mode | Download Music | Podcasts | Scrobbling | Musicbrainz | Similar Songs | Artist Top Songs | Shuffle Play | Random Album | Favorites / Starred | Bookmarks | 5 Stars | Search function | Chromecast Support | Android Auto | Dark Mode | Themeable | Open Source | free | Smart Recommendations | Video Support | Internet Radio | Lyrics | Crossfade | API | F-droid | Source Code | License | Reviewed Version | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dsub | Android | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :grey_question: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | Subsonic | F-Droid | GitHub | GPLv3 | 5.5.2 | Dsub |
| Finamp | Android, iOS | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark:[^finamp-scrobbling] | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | Jellyfin | F-Droid | Github | MPL 2.0 | 0.6.25 | Finamp |
| Polaris Android | Android | :x: | :x: | :x: | :heavy_check_mark: | :x: | :grey_question: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | last.fm | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | custom | F-Droid | GitHub | MIT | 0.13.5 | Polaris Android |
| substreamer | Android, iOS | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | Subsonic | :x: | :x: | :grey_question: | 0.5.1 | substreamer |
| Subtracks | Android | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :grey_question:[^help-subtracks-download] | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :white_circle: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | Subsonic | F-Droid | GitHub | GPLv3 | 1.0.1 | Subtracks |
| Ultrasonic | Android | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | Subsonic, Airsonic, Supysonic, Ampache | F-Droid | GitHub | GPLv3 | 2.23.1 | Ultrasonic |
| SubMusic | Garmin | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | Subsonic, Ampache, Plex | :white_circle: | GitHub | GPLv3 | 0.2.8-oebalus | SubMusic |
| Lightweight Music Server | Web | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | custom | :white_circle: | GitHub | GPLv3 | 3.75.0 | Lightweight Music Server |
| Navidrome | Web | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark:[^cannot-write-tags] | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark:[^time-synced-lyrics] | :x: | Subsonic | :white_circle: | GitHub | GPLv3 | 0.58.0 | Navidrome |
| Polaris Web | Web | :x: | :x: | :x: | :heavy_check_mark: | :x: | :grey_question: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | custom | :white_circle: | GitHub | MIT | 0.13.5 | Polaris Web |
| Tauon Music Box | Linux | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :grey_question: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | Airsonic, Jellyfin, Plex, Subsonic, Koel, Emby, Spotify | :white_circle: | Github | GPLv3 | 7.0.1 | Tauon Music Box |
| Jellyamp | L, W, M | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :white_circle: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | Jellyfin | :white_circle: | Github | MIT | 1.1.1 | Jellyamp |
| Feishin^[^feishin-sonixd] | L, W, M | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x:[^feishin-offline] | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | Navidrome, Jellyfin, OpenSubsonic, Plex[^feishin-api-plex] | :white_circle: | Github | GPLv3 | 1.1.0 | Feishin^[^feishin-sonixd] |
| Funkwhale | Web | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :white_circle: | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | custom | :white_circle: | Gitlab | aGPLv3 | 1.2.6 | Funkwhale |
| Funkwhale Android | Android | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :grey_question: | :grey_question: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :grey_question: | :grey_question: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | custom | F-Droid | Gitlab | MIT | 0.1.4 | Funkwhale Android |
| Symfonium[^symfonium-store] | Android | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | Plex, Emby, Jellyfin, Subsonic, Kodi | :x: | :x: | Proprietary | 14.1.0 | Symfonium |
| Supersonic | L, W, M | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :x: | :x: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :x: | :x: | :x: | Subsonic, OpenSubsonic, Jellyfin | :white_circle: | GitHub | GPLv3 | 0.8.2 | Supersonic |
| Tempus | Android | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | Subsonic, OpenSubsonic | F-Droid | GitHub | GPLv3 | 4.25.5 | Tempus |
| Orynivo | L, W, M | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :grey_question: | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :white_circle: [^orynivo-local] | :white_circle: [^orynivo-local] | :heavy_check_mark: | last.fm | :heavy_check_mark: | :heavy_check_mark: | :grey_question: | :heavy_check_mark: | :grey_question: | :heavy_check_mark: | :heavy_check_mark: [^orynivo-resume] | :heavy_check_mark: | :heavy_check_mark: | :x: | :white_circle: | :heavy_check_mark: | :grey_question: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | Orynivo custom REST | :white_circle: | GitHub | Apache-2.0 | 0.48.1 | |
| tempo | Android | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | Subsonic | F-Droid | GitHub | GPLv3 | 3.2.8 | tempo |
| Siansa | Android | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | :heavy_check_mark: | OpenSubsonic (Navidrome, Gonic, Airsonic, Ampache), Emby, Audiobookshelf | F-Droid Repo | GitHub | GPLv3 | 0.40.0beta | Siansa |
| OS | Gapless Playback | Album View | Songs View | Folder View | Album Artist View | Artist View | Genre View | Decade View | Year View | Playlist Support | Most Played Song | Most Played Album | Recently Played Song | Recently Played Album | Recently Added Song | Recently Added Album | Frequently Played Album | Offline Mode | Download Music | Podcasts | Scrobbling | Musicbrainz | Similar Songs | Artist Top Songs | Shuffle Play | Random Album | Favorites / Starred | Bookmarks | 5 Stars | Search function | Chromecast Support | Android Auto | Dark Mode | Themeable | Open Source | free | Smart Recommendations | Video Support | Internet Radio | Lyrics | Crossfade | API | F-droid | Source Code | License | Reviewed Version |
[^cannot-write-tags]: Can't write tags to file. [^feishin-api-plex]: Plex API not natively supported but is through fork by lux032 [^feishin-offline]: No immediate plans, potentially after Navidrome releases stable API [^feishin-sonixd]: Feishin is a rewrite of sonixd. [^finamp-scrobbling]: Scrobbles to Jellyfin, from there Jellyfin can scrobble to other services. [^help-subtracks-download]: There is a download button. It doesn't work for me. [^orynivo-local]: The desktop client plays a local library; offline mode and download do not apply. [^orynivo-resume]: Per-track resume positions are remembered and synchronized across devices via the server. [^symfonium-store]: You can buy the premium version directly from Symfonium. The app generates a unique key once it gets installed which can not be inserted manually. [^time-synced-lyrics]: Web UI only supports embedded time-synced lyrics as a limitation of the current player
Emoji Definitions
- :heavy_check_mark: means yes, it is supported
- :x: means no, it is not supported
- :heavy_dollar_sign: means the service/feature has a price
pwherep>0 - :grey_question: means help wanted, original author wasn't sure or couldn't judge the covered topic.
- :white_circle: means the feature doesn't apply to this service and cannot be evaluated.
- an empty cell is missing information. It is not intentionally left blank.
How to Contribute (WIP)
work in an editor that supports no forced line breaks (word wrap), otherwise you can't read the raw markdown table. VSCodium, Atom, Notepad++, Kate and others are suitable for raw markdown editing.
work in an editor that supports some sort of WYSIWYG like Obsidian or Typora otherwise it is a real mess to fill a markdown table. Typora can clean the final raw markdown table as well, and so can Obsidian with the Advanced Tables plugin.
To add a service it is always good to take the current version of the table to match the columns. I'll try to merge all PRs in a timely manner.
open issue or a PR
matrix-room: #selfhosted-music-overview
Noteworthy
Music Assistant is useful in order to connect streaming services with speakers.
Multi-Scrobbler is a docker application that consolidates your listening activity across applications and can scrobble to multiple services.
Selfhosted Photos
To get an overview of selfhosted photo libraries please visit foss_photo_libraries. I just found it and thought I should share it since it provides a nive overview and is similar to this project but for photos instead of music.
Footnotes
Explore related projects
awesome-selfhosted/awesome-selfhosted
A list of Free Software network services and web applications which can be hosted on your own servers
335,265 starsimmich-app/immich
High performance self-hosted photo and video management solution.
118,568 starsStirling-Tools/Stirling-PDF
#1 PDF Application on GitHub that lets you edit PDFs on any device anywhere
96,048 starslouislam/uptime-kuma
A fancy self-hosted monitoring tool
93,389 stars