A music requester and download management system — Like Jellyseerr but for music.
Riparr allows users to search for and request songs, albums, and artists. It leverages streamrip for automated downloading, with planned features for advanced metadata processing and Jellyfin library integration.
- Music Search & Request: Search via MusicBrainz API for accurate metadata.
- Automatic Downloading: Seamlessly fetch music via Qobuz, Deezer, or Tidal.
- Jellyfin Integration: (Planned) Sync your existing library to prevent duplicate downloads.
- Smart Metadata: (Planned) Integrated post-processing with MusicBrainz Picard for perfect tags.
- User Roles: Separate admin and user accounts.
Note: Post-processing and Jellyfin library integration are currently in development and not yet fully implemented.
Before running, you need to set up your environment:
cp .env.example .env
# Edit .env and set a secure SECRET_KEYCopy the example config and add your streaming service credentials:
mkdir -p config
cp config/streamrip.toml.example config/streamrip.toml
# Edit config/streamrip.toml with your account detailsTip
Riparr focuses on credentials in the streamrip.toml. Download paths and quality are managed through the web interface or .env.
The recommended way to run the backend locally:
uv sync
uv run flask --app backend/app.py init-db
uv run flask --app backend/app.py run --debugRunning with the development overwrite allows for hot-reloading and easy dependency management:
# Using Podman (or docker compose)
podman compose -f docker-compose.yml -f docker-compose.dev.yml up -dFor a stable service on a NAS or server, use the standard compose file.
podman compose up -dOn your first deployment, run the initialization command:
podman compose exec app flask --app backend/app.py init-dbservices:
app:
image: riparr:latest
restart: unless-stopped
ports:
- "5000:5000"
volumes:
- ./instance:/app/instance # Database and app state
- ./music:/app/music # Your music library path
- ./config:/app/config # streamrip.toml location
environment:
- SECRET_KEY=your_secret_here- Default Admin:
admin/admin(Change this immediately!) - Storage: Customize how music is organized (e.g.,
{artist}/{album}/{title}) in the web settings.
This project relies heavily on the incredible work of the streamrip project. Huge thanks to nathom and all the streamrip contributors for building the core engine that makes Riparr possible.
This project has been almost 100% vibecoded with the help of GitHub Copilot and Antigravity. It is provided "as is", and I take no responsibility for any harm, data loss, or emotional distress caused by its use.
Riparr is for educational and private use only. I cannot be held responsible for how this software is used. By using this software, you agree to comply with the Terms of Service of the streaming services you access. You are responsible for your own actions and any consequences that may arise from using this software.