Prerequisites
Docker
Cassette Player runs inside Docker — a tool that packages software so it works the same way on every computer. If you don't have Docker:
- Mac: Download Docker Desktop — install it and start it before continuing.
- Windows: Docker Desktop for Windows — requires WSL 2, which the installer will guide you through.
- Linux: Docker Engine — install via your package manager or the official script.
Confirm Docker is running: open Terminal (Mac/Linux) or Command Prompt (Windows) and run docker --version. You should see a version number, not an error.
A music folder
You need a folder on your computer that contains your music files. FLAC, MP3, AAC, OGG, and OPUS are all supported. The files can be organized however you like — by artist, by album, flat — Cassette Player will read the embedded tags and build its own library.
If you don't have music files yet, get some first. The where to buy music guide is a good starting point. Bandcamp and Qobuz both let you download what you purchase as FLAC.
Install Cassette Player
Open Terminal (Mac/Linux) or Command Prompt (Windows). Run this command, replacing the two paths with your actual music folder and a data folder where Cassette Player will store its database:
docker run -d \
--name cassette-player \
--restart unless-stopped \
-v "/path/to/your/music:/music" \
-v "/path/to/cassette-data:/data" \
-p 4533:4533 \
-e ND_MUSICFOLDER=/music \
-e ND_DATAFOLDER=/data \
-e ND_SESSIONTIMEOUT=24h \
-e ND_LOGLEVEL=info \
deluan/navidrome:latestReplace /path/to/your/music with the actual path to your music folder. On a Mac this might be /Users/yourname/Music/Library. Replace /path/to/cassette-data with any folder you want to use for the database — for example /Users/yourname/cassette-data. Docker will create it if it doesn't exist.
The first run downloads Cassette Player (about 60 MB). When it finishes, the container starts automatically. Confirm it's running:
docker psYou should see cassette-player in the list with a status of Up.
First login
Open http://localhost:4533 in your browser. On the first visit, Cassette Player will ask you to create an admin account. Choose a username and password — you'll use these to log in from the iOS app later.
Add your music
Cassette Player is already watching the music folder you pointed it at. Add or move files into that folder and Cassette Player will pick them up automatically within an hour (or you can trigger a manual scan from Settings → Scanning → Scan Now).
Organize your files however makes sense to you. A common structure is:
Music/
├── Artist Name/
│ ├── Album Title (Year)/
│ │ ├── 01 - Track Title.flac
│ │ ├── 02 - Track Title.flac
│ │ └── ...Cassette Player reads embedded ID3/Vorbis tags, not folder names, so the structure is just for your own organization. What matters is that the files have proper tags (artist, album, title, year). Most downloads from Bandcamp and Qobuz come correctly tagged.
Verify it works
After a scan completes, you should see your library in the web interface at http://localhost:4533. Browse to an artist, click an album, click a track — it should play in the browser.
If your library doesn't appear: go to Settings → Scanning and trigger a manual scan. Check that the path you used in the Docker command matches where your files actually are.
Next: connect the iOS app
Your library is running. Now put it on your phone.