RompMusic

Libre and gratis music streaming — your music, your server.

RompMusic is a complete self-hosted streaming system: GPL-3.0, no telemetry, gapless playback, and cross-platform clients (Android, iOS, web). You own the library, the deployment, and the data path end to end.

Components

rompmusic-server

Python API: JWT auth, library scan, playlists, history, HTTP range streaming, optional beets hooks, admin UI.

rompmusic-client

Cross-platform app with gapless playback, paginated library, playlists—Android, iOS, and web targets.

rompmusic-website

Marketing and docs at rompmusic.com, including install and self-hosting guides.

Docker

Umbrella docker compose brings up the stack from a single clone with .env configuration.

Architecture (server)

The backend is an ASGI app (uvicorn) exposing REST under /api/v1/, with metadata via Mutagen and PostgreSQL/SQLite storage depending on deployment.

ConcernJWT-authenticated sessions; per-user library views; background scans without blocking the UI tab.
StreamingHTTP range requests for seeking; content types appropriate for FLAC/MP3/etc.
OpsDockerfile for repeatable builds; MUSIC_PATH volume mount; optional scheduled library/art jobs.

Design stance

No proprietary lock-in: the four freedoms are the product goal. The client prioritizes offline-friendly playback and predictable library UX; the server keeps administration explicit (paths, scans, credentials) so self-hosters stay in control.

Quick start (Docker)

git clone --recursive https://github.com/151henry151/rompmusic.git
cd rompmusic
cp .env.example .env
# Edit .env — DB_PASSWORD, JWT_SECRET, etc.
docker compose up -d

Detailed install and configuration: rompmusic.com/docs/install.