Skip to content

Navidrome, beatstash, and beets

Navidrome plays the files on your server. beatstash gets music onto that server through Telegram, invites people, and shares tracks in chats. beets identifies releases, corrects tags, and organizes files. They do different jobs and work together.

What you want to doNavidrome on its ownWith beatstashbeets
Add a track a friend sent in TelegramSave the file and copy it to a music folder on the serverForward it to the botImport a file you already have through the CLI
Bring over your streaming collectionFind the audio and add it yourselfConnect a supported service and start an importNot supported
Invite a friendCreate an account, set library access, send the loginSend an invite link; the bot creates the accountNot supported
Keep everyone’s music separateCreate a library per person and assign access by handEach participant gets a personal library automaticallyNot supported
Limit how much music each friend addsWatch server storage yourselfSet a quota in TelegramNot supported
Share a track in a Telegram chatFind it, create a listening link, paste itSearch inline or send npNot supported
Listen in a browser or appWeb player and Subsonic clientsThe same player and clientsThrough a player or plugin
Fill in track detailsReads existing tagsFills in missing tags and artwork, then writes them to the fileMatches releases and corrects tags
Organize files into foldersScans the folders you madeFiles new music by artist and albumConfigurable naming and layout

Without the bot, every new track and every new person is work for you. A friend sends an album, and you put the files on the server. Someone joins, and you create their account and pick the libraries they can see. As the group grows, so does the list of libraries and permissions to keep straight.

With beatstash, participants do this themselves. They accept an invite, upload through Telegram, and decide what to put in the shared library. The bot creates their libraries and sets access in Navidrome. You set storage limits instead of handling each upload.

Navidrome still owns playback, accounts, and access control; the bot drives them through its API. Your existing libraries stay where they are, and who sees them is still decided in Navidrome. To add the bot to your server, follow the connection guide. Navidrome’s own features are described in its overview and sharing documentation.

A music server can’t replace a streaming library until the audio files are on it. For supported services, beatstash downloads your collection: you connect an account, review what will be imported, and start. Later, sync brings in music you save there. Check the source table first, because only some services are supported.

Use beets when your files have inconsistent tags or folder names. Its import step identifies each release and fixes the metadata before organizing the files. Start with its getting-started guide and plugins.

All three can run together. Organize a collection with beets, add its folder as a Navidrome library, and connect beatstash to search and share it from Telegram. Keep the beets folder apart from the bot’s managed folders. Changes appear in the bot after Navidrome scans them and the bot refreshes its records.