A modern web client for Subsonic servers, delivering seamless music streaming across devices.
10K+
Subsonic player is a responsive, modern web-based client designed for Subsonic music servers.
Built with Nuxt 4, a modern Vue 3 framework, this open-source application provides a seamless and enjoyable music listening experience across all devices.
Compatible Servers:
Fully Responsive UI (Further design improvements are ongoing.)
Comprehensive Library Browsing
Advanced Functionality
Ctrl + / to open or close the shortcuts modal). Single-key shortcuts do not run while focus is in an input field.Progressive Web App (PWA) Feature
Settings
Click on the images to see video of the app in action.
Prerequisites:
The simplest way to run the application is via Docker Compose. This method automatically handles dependencies and configuration.
The environment variables are optional and can be customized as needed.
Create a file named docker-compose.yml with the following content.
services:
subsonic-player:
container_name: subsonic-player
image: vd39/subsonic-player:latest
ports:
- '3000:3000'
restart: unless-stopped
Execute the following command in your terminal:
docker compose up -d
The application will be accessible at http://localhost:3000.
A preview version (vd39/subsonic-player:preview) is available for those who want to try the latest changes early. Note that this version contains changes that are still undergoing internal testing and may contain bugs or stability issues. Use at your own risk.
image: vd39/subsonic-player:preview
This method offers more granular control.
docker run -d \
--name subsonic-player \
-p 3000:3000 \
--restart unless-stopped \
vd39/subsonic-player:latest
The application will be accessible at http://localhost:3000.
Pre-built static SPA archives are published as GitHub Releases. Each release contains a .tar.gz tarball that can be served by any static file host (Nginx, Caddy, Apache, S3, etc.).
Download the latest tarball from the Releases page.
Extract the archive:
tar -xzvf subsonic-player-static-*.tar.gz -C /var/www/subsonic-player
Serve the extracted directory with your preferred static file server.
This method skips Docker and runs the application directly using Node.js and npm.
Clone the repository:
git clone https://github.com/VD39/subsonic-player.git
Navigate to the project directory:
cd subsonic-player
Install dependencies:
npm install
(Optional) Create a .env file: Create a file named .env in the project's root directory. This file will hold your environment variables.
Start the development server:
npm run dev
The development server will start at http://localhost:3000.
Changes you make to the code will automatically trigger a rebuild and refresh of the browser.
Settings in this application can be configured at two levels. Environment variables establish default values that apply to all users across all devices (ideal for Docker deployments sharing a single server). These defaults can be overridden at an individual user level via localStorage when a setting is changed in the UI; the environment variable then acts as the fallback value.
All environment variables are optional. NUXT_PUBLIC_SERVER_URL pre-fills the server URL so users can bypass entry at the login screen. Every other variable defines an app default that users can subsequently override in the UI.
| Variable | Default | Description |
|---|---|---|
NUXT_PUBLIC_SERVER_URL | '' | Subsonic server URL |
NUXT_PUBLIC_MAIN_APP_TITLE | Music App | Browser tab title |
NUXT_PUBLIC_LOAD_SIZE | 50 | Items loaded per scroll |
NUXT_PUBLIC_IMAGE_SIZE | 500 | Album art image size (in pixels) |
NUXT_PUBLIC_ENABLE_QUEUE_SYNC | false | Enable server queue sync via Subsonic API |
NUXT_PUBLIC_BITRATE | 0 | Max streaming bitrate (0 = no limit) |
| Variable | Default | Description |
|---|---|---|
NUXT_PUBLIC_THEME | auto | Theme preference (auto, light, dark) |
NUXT_PUBLIC_LAYOUT | gridLayout | Default view layout |
NUXT_PUBLIC_SCROBBLE_ENABLED | true | Enable scrobbling to Subsonic server |
NUXT_PUBLIC_SHOW_PODCASTS | true | Show podcasts in the library |
NUXT_PUBLIC_SHOW_RADIO_STATIONS | true | Show radio stations in the library |
NUXT_PUBLIC_DELETE_PODCAST_ON_END | false | Auto-delete podcast episode when finished |
NUXT_PUBLIC_CROSSFADE_ENABLED | false | Enable crossfade between tracks |
NUXT_PUBLIC_CROSSFADE_DURATION | 1 | Crossfade duration in seconds (range 1–12) |
NUXT_PUBLIC_REPLAY_GAIN_MODE | off | Replay gain mode (off, track, or album) |
Contributions are always welcome! Feel free to contribute, provide feedback, or raise issues on GitHub!
This project is licensed under the GPL-3.0 license. Full license details available in the LICENSE file for details.
Content type
Image
Digest
sha256:7cc1a6d19…
Size
56.4 MB
Last updated
19 days ago
docker pull vd39/subsonic-player