Skip to content

Repository files navigation

RSPlayer

RSPlayer

RSPlayer is an open-source, headless music server primarily for Linux, with experimental macOS and Windows builds — run it on your NAS, home server, Raspberry Pi, or any x86_64/ARM machine and control it from any browser. A native desktop app (Linux x86_64, macOS, Windows) is also available.

It runs as a systemd service and exposes a responsive web UI, making it a great fit for machines without a monitor or keyboard — but equally at home on a dedicated desktop audio PC. Under the hood it uses Symphonia for decoding and Cpal for output, with a Rust-native pipeline for low-latency, high-performance playback.

📖 Full documentation: https://ljufa.github.io/rsplayer/

See it in action

🖥️ Online demo: https://rsplayer.dlj.freemyip.com/

🎬 One-minute video tour — navigation, queue, library, and settings:

rsplayer-tutorial.mp4

Highlights

  • Pure-Rust playback engine (Symphonia + cpal) — Linux, macOS, and Windows; also a native desktop app
  • Native multiroom (beta): synchronized playback across devices with automatic discovery and encrypted QUIC streaming
  • Low-latency ALSA / PipeWire output, plus local playback straight to your browser
  • Formats: FLAC, MP3, AAC, OGG Vorbis, WAV, AIFF, CAF, DSD (DSF/DFF), APE
  • Built-in DSP: parametric EQ, filters, and presets
  • EBU R128 per-song loudness normalization
  • Automatic high-quality resampling when the DAC can't match the source rate
  • Real-time music visualizer (12 styles) and synchronized lyrics (LRCLIB)
  • Library browsing, dynamic playlists, priority queue, drag-and-drop reordering
  • Network storage (SMB/CIFS, NFS) mount management from the settings page
  • Home Assistant integration and optional DIY hardware control

See the full feature list and feature comparison for details.

Quick Start

Linux

Headless server

Requires curl. The script auto-detects your distribution (Debian/Ubuntu, Fedora/RHEL, Arch/Manjaro) and architecture (x86_64, ARM64/ARMv7/ARMv6, RISC-V 64), adds the RSPlayer package repository on deb/rpm distros (so updates arrive via regular apt/dnf upgrade), then installs and starts the systemd service.

bash <(curl -s https://raw.githubusercontent.com/ljufa/rsplayer/master/install.sh)

Or add the repository yourself — Debian/Ubuntu/Raspberry Pi OS:

sudo curl -fsSL -o /usr/share/keyrings/rsplayer.gpg https://ljufa.github.io/rsplayer-pkg/rsplayer.gpg
echo "deb [signed-by=/usr/share/keyrings/rsplayer.gpg] https://ljufa.github.io/rsplayer-pkg/deb stable main" | sudo tee /etc/apt/sources.list.d/rsplayer.list
sudo apt update && sudo apt install rsplayer

Fedora/RHEL/openSUSE:

sudo curl -fsSL -o /etc/yum.repos.d/rsplayer.repo https://ljufa.github.io/rsplayer-pkg/rpm/rsplayer.repo
sudo dnf install rsplayer

Desktop app (flatpak or snap)

Get it from the Snap Store

Flatpak, from the RSPlayer flatpak repo (updates arrive via flatpak update):

flatpak install https://ljufa.github.io/rsplayer-flatpak/io.github.ljufa.rsplayer.flatpakref

Playback works out of the box. To enable bit-perfect direct ALSA output to USB DACs and music on host mounts like /mnt, see desktop app sandbox permissions.

or deb/rmp install using script

bash <(curl -s https://raw.githubusercontent.com/ljufa/rsplayer/master/install_desktop.sh)

Prefer to install a package manually (.deb / .rpm / .tgz) or run the raw binary? See the Linux installation guide.

macOS (experimental)

No install script — download directly from the latest release:

  • Server binary: rsplayer_darwin_arm64 (Apple Silicon) or rsplayer_darwin_amd64 (Intel), then chmod +x rsplayer && ./rsplayer
  • Desktop app: open the .dmg and drag RSPlayer to Applications

Audio output uses CoreAudio via cpal. See the macOS installation guide.

Windows (experimental)

Download directly from the latest release:

  • Server: rsplayer_windows_amd64.exe — run it directly, then open http://localhost:8000
  • Desktop app: run the rsplayer-desktop_windows_amd64.exe NSIS installer (fetches WebView2 automatically if needed)

Audio output uses WASAPI by default via cpal, and installed ASIO drivers are selectable in Settings → Audio interface for exclusive, low-latency, bit-perfect playback. See the Windows installation guide.

ASIO is a trademark and software of Steinberg Media Technologies GmbH.

Docker

docker run -p 8000:80 -v ${MUSIC_DIR}:/music -v rsplayer_data:/opt/rsplayer --device /dev/snd -it --rm ljufa/rsplayer:latest

Or use docker compose:

services:
  rsplayer:
    image: ljufa/rsplayer:latest
    devices:
      - /dev/snd
    ports:
      - 8000:80
    volumes:
      - ${MUSIC_DIR}:/music:ro
      - 'rsplayer_volume:/opt/rsplayer'
    restart: unless-stopped
volumes:
  rsplayer_volume:
    driver: local

Open the UI

Navigate to http://localhost (or the IP of the machine running RSPlayer). For the Docker command above, the UI is at http://localhost:8000. For configuration, see the documentation.

Documentation

Topic Link
Overview & full feature list https://ljufa.github.io/rsplayer/
Installation https://ljufa.github.io/rsplayer/#/installation
Configuration https://ljufa.github.io/rsplayer/#/configuration
Usage guide https://ljufa.github.io/rsplayer/#/usage
Troubleshooting https://ljufa.github.io/rsplayer/#/troubleshooting
Building from source https://ljufa.github.io/rsplayer/#/build
Feature comparison https://ljufa.github.io/rsplayer/#/feature_parity

Home Assistant & DIY Hardware

RSPlayer can be controlled from Home Assistant via the rsplayer_hacs_plugin. For DIY builds, see rsplayer_hardware and rsplayer_firmware.

Contributing

Contributions are welcome — submit a pull request or open an issue. To build from source, see the Building from Source documentation.

License

RSPlayer is licensed under the MIT license. See the LICENSE file for more information.

Releases

Packages

Used by

Contributors

Languages