feishin
A modern self-hosted music player.
What is it?
What it is
Feishin is a modern, cross‑platform music player client written in TypeScript that connects to self‑hosted music servers such as Navidrome, Jellyfin, and any OpenSubsonic‑compatible API. It is a rewrite of the Sonixd project and offers both a desktop Electron app and a web front‑end.
Why it exists
Feishin was created to provide a feature‑rich, user‑friendly interface for self‑hosted music libraries, adding modern UI, MPV and web playback back‑ends, scrobbling, smart playlist editing, and synchronized lyrics support. It also simplifies deployment with pre‑built binaries, AppImage, Flathub, Docker images, and a hosted web version.
Who should use it
Users who self-host music servers (Jellyfin, Navidrome, Subsonic/OpenSubsonic) and want a feature-rich desktop/web client with MPV backend, lyrics, smart playlists, and scrobbling.
Who should avoid it
Users who rely solely on commercial streaming services, lack a self-hosted music server, or prefer minimal-configuration mobile apps.
How it works
A quick walkthrough in plain English
How feishin works
Step 1 of 3
You interact with it
Open feishin, send a request, or connect it to your stack.
Features
Advantages
- Open source (GPL-3.0)
- Supports multiple music servers (Jellyfin, Navidrome, Subsonic/OpenSubsonic)
- Available as desktop client, web version, and Docker image
- Modern and customizable UI
- Built-in lyrics fetching and display
- Smart playlist editing for Navidrome
- Scrobbling to server
- Active community support (Discord, Matrix)
- Multi-language support via Weblate
- Regular releases and active development
Disadvantages
- Requires manual MPV binary configuration for desktop client
- Smart playlist editor limited to Navidrome
- Web client only supports web player backend
- Docker deployment requires environment variable setup
- Some Linux namespace issues may require additional configuration
- Plex support not native (requires fork)
Installation
cloud
https://feishin.vercel.app
docker
docker run --name feishin -p 9180:9180 ghcr.io/jeffvli/feishin:latest # Build the image locally docker build -t feishin . docker run --name feishin -p 9180:9180 feishin
compose
services:
feishin:
container_name: feishin
image: 'ghcr.io/jeffvli/feishin:latest'
restart: unless-stopped
environment:
- SERVER_NAME=jellyfin
- SERVER_LOCK=true
- SERVER_TYPE=jellyfin
- SERVER_URL=
- REMOTE_URL=
- LEGACY_AUTHENTICATION=false
- ANALYTICS_DISABLED=true
ports:
- 9180:9180FAQ
How do I install Feishin on macOS, Linux, or via Docker?
For macOS, download the latest desktop client from the releases page. On Linux, use Flathub or the Appimage installer script. Docker users can run the image via `docker run --name feishin -p 9180:9180 ghcr.io/jeffvli/feishin:latest`.
Why is MPV rapidly switching between pause/play states?
Ensure the MPV binary path is correct in settings. Reinstall MPV using version v0.35.x or v0.36.x, as v0.34.x is known to be unstable.
Which music servers does Feishin support?
Feishin supports Navidrome, Jellyfin, and OpenSubsonic-compatible servers (e.g., Airsonic-Advanced, Ampache, Funkwhale). Plex requires a fork by lux032.
How do I configure Feishin via Docker environment variables?
Set variables like `SERVER_NAME`, `SERVER_TYPE`, `SERVER_URL`, and `REMOTE_URL` in the Docker Compose file or command to customize server integration and behavior.
How do I fix the 'SUID sandbox helper binary' error on Linux?
Run `chmod 4755 chrome-sandbox` and `sudo chown root:root chrome-sandbox` to adjust permissions for the sandbox binary.
Why is the desktop client recommended over the web version?
The desktop client supports both MPV and web player backends, includes built-in lyric fetching, and offers a more feature-rich experience compared to the web client's limited web player support.
Featured in Videos
YouTube tutorials and walkthroughs for feishin
s6
1,671,961 views
Starts at 00:00
Alternatives
Similar projects ranked by category, topics, and text overlap.