[FEATURE REQUEST] Self-Hosted Music Streaming Support
Is your feature request related to a problem? Please describe.
I maintain a large self-hosted music library and would like to stream it like a personal streaming service from anywhere. Currently Namida supports only local playback, so I cannot access my library remotely or treat it like a streaming service.
Describe the solution you’d like
Enable support for streaming from a self-hosted music server so that :
- My music files on a remote server/NAS can be accessed and streamed by Namida.
- It should also read the remote library with full metadata, playlists and playback tracking.
- Sync of metadata, playlists and listening history across devices.
- Offline caching/download from my own collection for mobile use.
- Authentication, user access control and encryption (optional) so I retain data ownership and privacy.
Describe alternatives you’ve considered
- Uploading all my files to an external commercial streaming service (but this costs, and I also lose control).
- Using free open source alternative mentioned below, but then I don't want to loose the Namida experience.
Apps / services
A note to the dev @MSOB7YY
I understand that this feature request is quite ambitious and may require substantial work perhaps even infrastructure changes.
Still, I wanted to share the idea because it could greatly expand Namida’s versatility, turning it into a true all in one music hub for both local and remote collections.
Even partial implementation or future consideration would be deeply appreciated.
I have tried to put together an architecture that I think should work.
1. The Plan
Namida (the music player) stays as the app.
We simply add a small server that runs on a computer, NAS, or cloud instance.
That server will :
- Index all music files (based on included and excluded folders configured during server setup).
- Stream them securely to Namida wherever it's being used.
- Handle user logins, playlists, and metadata sync.
2. The Flow
I. Setup
We can install or run the Namida Server (a lightweight program). It points to the music folder(s).
The server :
- Scans all music files.
- Reads the ID3 tags (title, album, artist, ...)
- Stores that info in a small database for fast search.
II. Connect to the App
In Namida, we will add a new source :
Remote Server -> https://myhomeip:9000
We can then log in. Namida now knows where our personal music library lives.
III. Browsing & Playback
When we open Namida :
- It fetches the list of artists/albums/tracks/... from the server with REST API.
- If we tap on a song -> the app asks the server to stream that file.
- The server reads the file from disk and sends it over HTTP.
If our phone can play the format (for example MP3, FLAC), it’s sent directly. If not, the server automatically converts it on the fly using ffmpeg (to MP3/AAC).
IV. Caching and Offline
If we enable offline mode :
- Namida requests certain songs or playlists to download.
- The server bundles them (or sends them individually).
- The app stores them locally (in encrypted form - optional).
V. Sync and History
Each time we play a song :
- The app sends “I’m playing Track X at time Y” back to the server.
- This updates our play history, last-played position, and syncs across devices.
So if we start listening on our desktop and later open your phone, playback can resume from where we left off.
Note : More features like multiple users, server file management, etc can be added later.
thanks a lot for the detailed proposal (and sry for late reply), as u know and mentioned, this feature was requested many times and still not a priority, altho i would love to see it one day
i was thinking about a simple approach where we just fetch everything (metadata) on startup/refresh, and then treat as as local library, but still would require much much work since most parts assume the files are on disk (all file operations like edit tags/index/etc)
now ur approach is more complex and more wide, it assumes that the server is the "main namida", and namida on device is just a receiver (or can be one), which is really really complex but also can help with #621 , im not sure if i would get into that stuff any soon, so sorry in advance, but one day hopefully ^^
Thanks dev. Hopefully we'll get there someday.