unsubbed.co

Feishin

Feishin is a TypeScript-based application that provides modern desktop music player.

A frontend-first take on escaping Spotify. Honest, no marketing fluff — just what you actually get.

TL;DR

  • What it is: A GPL-3.0 music player client — desktop app, web app, Docker container — that connects to your self-hosted Navidrome or Jellyfin music server [README][1].
  • Who it’s for: Music collectors who already run (or plan to run) a self-hosted media server and want a modern, polished frontend to replace aging web UIs [5][6].
  • Cost savings: Spotify is $11.99/mo, Apple Music $10.99/mo. Feishin + Navidrome on a $6/mo VPS costs $6/mo total — with your own library, zero per-stream cost, and no algorithm deciding what “counts” as listening [README].
  • Key strength: Gapless playback via MPV backend, synchronized lyrics, smart playlist editor (with Navidrome), and a genuinely modern interface that looks nothing like a 2009 Winamp clone [2][5].
  • Key weakness: It is a frontend, not a server. You need Navidrome or Jellyfin running first. The memory footprint is steep for a music player: 674MB for Feishin alone, 1GB+ when you add the required Jellyfin/mpv stack [2]. MPV detection on Linux has rough edges [1].

What is Feishin

Feishin is a rewrite of Sonixd — a previous self-hosted music player by the same author. The README describes it as “a modern self-hosted music player,” which is technically accurate but slightly misleading: Feishin doesn’t store or serve your music. It is a client that speaks the Subsonic/Navidrome and Jellyfin APIs, providing a polished UI layer on top of whatever music server you’re running [README][1].

That distinction matters. If you arrive expecting an all-in-one music server, you’ll need to install something else (Navidrome or Jellyfin) before Feishin does anything. If you already have a media server and are looking for a better way to interact with it than the default web UI, Feishin is the right conversation.

The project sits at 7,620 GitHub stars, is written in TypeScript, and is distributed under GPL-3.0 [README]. It ships as a desktop app (Windows, macOS, Linux), a hosted web app at feishin.vercel.app, and a Docker image for self-hosting the web interface [README].

Two audio backends are available. The MPV backend is the default on desktop and handles the heavy lifting: gapless playback, broader format support, hardware acceleration. The web player backend is browser-native and works in Docker or the hosted version but lacks gapless playback [2][README].


Why people choose it

The honest case for Feishin starts with why people hate what they’re currently using.

Streaming services. The cost math is straightforward. Spotify at $11.99/mo, Apple Music at $10.99/mo — both require permanent internet, both can remove albums from your library at any point, and both have gotten worse at discovery as their catalogues became the same. Running your own collection means you own every track permanently. Feishin + Navidrome on a $6 VPS is $72/year versus $143/year for Spotify. If you already own a NAS or a home server, the incremental cost is closer to zero [5].

Jellyfin’s own web UI. Jellyfin is a capable server but its built-in web interface is primarily designed around video. For music-focused use, dedicated clients like Feishin offer better library navigation, queue management, and features like lyrics sync and smart playlists that Jellyfin’s own UI doesn’t prioritize [1][5].

Sonixd. Feishin’s predecessor was popular in the Navidrome community but hasn’t received active development. Feishin is the maintained successor with a cleaner interface, though migrating from one to the other is essentially starting fresh — they’re separate applications, not upgrades [README][5].

The MPV argument. Several music servers have web-based clients with okay playback. What MPV brings is gapless playback — the ability to transition between tracks with no audible gap. LinuxLinks [2] calls this “a big plus” and explains why it matters: concept albums, classical recordings, electronic music, and progressive rock are all designed around continuous flow. A gap between tracks on a Pink Floyd record is not just annoying; it’s wrong. Most browser-native players can’t do this reliably. MPV can.


Features

Based on the README and first-hand testing reported in the reviews:

Playback:

  • MPV backend for desktop: gapless playback, broad format support (MP3, FLAC, OGG, and everything mpv handles) [2][6]
  • Web player backend: browser-native, works without MPV installed, no gapless [README]
  • Scrobble playback to your music server (tracks plays for statistics and recommendations) [README]
  • Media key support on desktop (macOS requires Trusted Accessibility Client permission) [README]

Library and organization:

  • Smart playlist editor — available when connected to a Navidrome server [README][2]
  • Synchronized and unsynchronized lyrics display [README]
  • Customizable column views (hide bitrate, album art columns, etc.) [2]
  • Album artist detail views [README screenshots]

Deployment options:

  • Desktop app: Windows, macOS, Linux (AppImage for x86_64 and ARM64) [README]
  • Web app: hosted at feishin.vercel.app (no self-hosting required, but web-only backend) [README]
  • Docker: self-hosted web container on port 9180 [README]
  • Docker Compose and Portainer compatible [README]

Compatibility:

  • Navidrome API (SubsonicAPI-compatible) [1][5]
  • Jellyfin API [1][5]
  • Any server implementing the Navidrome or Jellyfin API surface should work

What’s not there:

  • No built-in music server — you need Navidrome or Jellyfin separately [1]
  • Smart playlists are Navidrome-only, not available on Jellyfin [README][2]
  • No mobile app — the project is desktop and web only

Pricing: SaaS vs self-hosted math

Feishin itself costs nothing (GPL-3.0). The cost equation is about what you need to run alongside it.

Stack you actually need:

  • Feishin desktop: free download [README]
  • Navidrome (recommended music server): free, self-hosted [5]
  • VPS to run Navidrome: $5–10/mo on Hetzner or DigitalOcean
  • Your music library: whatever you already own

Versus streaming services:

ServiceMonthlyAnnualOwns your library?
Spotify Premium$11.99$143No
Apple Music$10.99$132No
Tidal HiFi$11.00$132No
Feishin + Navidrome (VPS)~$6~$72Yes
Feishin + Navidrome (home server)~$0~$0Yes

The catch the math doesn’t show: you need a music library. If you’ve been on streaming services for ten years and don’t own your tracks, you’ll need to rebuild one. Bandcamp, buying FLACs directly from artists, or ripping physical media are the common paths [5].

For collectors who already have a library — either ripped CDs, purchased downloads, or both — the math is obvious. The streaming bill disappears and you keep everything.


Deployment reality check

This is where reviews diverge from the marketing. Setting up Feishin is not just “install app, open app.” It’s a two-part job: first you need a music server, then you connect Feishin to it.

What you actually need:

  1. A music server: Navidrome (lighter, music-focused) or Jellyfin (heavier, media-general). Navidrome is the more common recommendation for music-only setups [5][6].
  2. A VPS or home server running Docker
  3. MPV installed locally if you’re using the desktop app on Linux [1][6]
  4. Your music files organized somewhere that Navidrome/Jellyfin can scan

Installation paths:

  • Desktop app: Download AppImage (Linux) or installer (Windows/macOS), install MPV separately, point at your server [1][6]
  • Web (hosted): Go to feishin.vercel.app, enter your server URL. Zero install but you’re using Vercel’s infrastructure [README]
  • Docker: docker run --name feishin -p 9180:9180 ghcr.io/jeffvli/feishin:latest, then access via browser [README]

What can go sideways:

MPV detection on Linux is unreliable. LinuxLinks [1] documented that Feishin failed to detect mpv at /usr/bin/mpv — the standard location — and forced manual binary selection. This is a friction point that shouldn’t exist in 2026. Using whereis mpv to find the path works, but the fact that you need to do it is a UX failure for a first-run experience.

Memory usage is a serious problem. LinuxLinks [2] reports Feishin alone consuming 674MB of RAM. Add Jellyfin’s footprint (~250MB) and mpv (~120MB) and you’re comfortably past 1GB just to play music. The reviewer concludes: “If Feishin was not such a memory hog, it would appeal to music lovers who want to run a music server.” On a VPS with 1GB RAM, this doesn’t fit. You need at least 2GB, probably 4GB if Jellyfin is also scanning a large library [2][6].

macOS has a quarantine issue on versions 12 (Monterey) and above — a workaround is documented in the GitHub issues but shouldn’t be necessary [README].

Realistic time to working setup for a technical user: 2–4 hours including Navidrome install, music library pointing, and Feishin configuration. For someone who’s never touched a Linux server or Docker: budget a full weekend and expect to hit forums at least once.


Pros and Cons

Pros

  • Gapless playback. The MPV backend delivers genuine gapless transitions — rare in the self-hosted music space and a hard requirement for anyone who listens to albums as intended [2].
  • Modern interface. LinuxLinks [2] and idroot [5][6] both describe the UI as contemporary and clean. The screenshots show a dark-mode interface with proper album art handling that doesn’t look like it was designed in 2008.
  • Synchronized lyrics. Built-in lyrics display with synchronization — not something most self-hosted players include out of the box [README].
  • Smart playlists (Navidrome). Rule-based playlist creation based on metadata, play count, rating, etc. A feature most dedicated music apps charge for [README][2].
  • Multiple backends. MPV for serious listening on desktop, web player for casual browser use or Docker setups [README].
  • Active maintenance. 7,620 GitHub stars, Discord community, Matrix room, active releases [README].
  • Free and GPL-3.0. The license means you can fork it, modify it, and self-host it without restrictions [README].
  • Works with existing servers. If you’re already running Jellyfin for video, Feishin gives you a dedicated music interface without adding another service [1][5].

Cons

  • Not a server — requires separate installation. This is the biggest expectation mismatch. Feishin without Navidrome or Jellyfin is a car without an engine [1][5][6].
  • Memory footprint is excessive. 674MB for the client alone, 1GB+ for the full stack, is indefensible for a music player [2]. This rules out low-RAM VPS deployments.
  • MPV auto-detection is broken on Linux. Having to manually locate your MPV binary on first run is an unnecessary friction point [1].
  • Smart playlists are Navidrome-only. Jellyfin users don’t get this feature [2].
  • No mobile app. If you want to listen on your phone, you need a different Navidrome/Jellyfin client (Symfonium, Finamp, etc.). Feishin is desktop and web only [README].
  • UI wastes screen space. LinuxLinks [2] explicitly flags this: “too much of the screen estate is wasted.” Cover art aside, the layout could be denser.
  • macOS quarantine friction. Requires a manual workaround on Monterey and above — a recurring papercut for Mac users [README].

Who should use this / who shouldn’t

Use Feishin if:

  • You already run Navidrome or Jellyfin and want a better music-focused interface than the default web UI.
  • You care about gapless playback and are willing to install MPV to get it.
  • You listen to albums as complete works (classical, progressive rock, electronic) where track gaps are disqualifying.
  • You want synchronized lyrics and smart playlist support built into a single app.
  • You have a home server or NAS with enough RAM (4GB+) to run the full stack comfortably.

Skip it if:

  • You don’t have (and aren’t planning to set up) a Navidrome or Jellyfin server. Feishin does nothing without one.
  • Your VPS has less than 2GB RAM. The memory usage makes this a hard floor.
  • You want a mobile experience — Feishin doesn’t have a mobile app.
  • You’re a Jellyfin user who wants smart playlists — those are Navidrome-only.
  • You’re not technical enough to troubleshoot MPV detection issues, Docker networking, or AppImage permissions on Linux.

Skip it (pick a Jellyfin native client) if:

  • You’re already using Jellyfin for video and want a single app for everything — a dedicated Jellyfin client (Infuse, Jellyfin Media Player) covers music and video in one UI.

Skip it (pick Navidrome’s built-in UI or Symfonium) if:

  • You want something lightweight that runs cleanly on a 1GB VPS.
  • You need mobile support as part of the same ecosystem.

Alternatives worth considering

  • Navidrome’s web UI — the built-in interface is simpler but lighter. If you’re running Navidrome, you get this for free and it handles basic browsing competently. No gapless, no smart playlists in the UI, but zero extra RAM.
  • Symfonium (Android) — polished paid mobile client ($4.99 one-time) for Navidrome and Jellyfin. If mobile is your primary use case, Feishin and Symfonium cover different surfaces.
  • Finamp (iOS/Android) — free, open source Jellyfin music client for mobile. Good alternative if you’re Jellyfin-first.
  • Jellyfin Media Player — the official desktop client for Jellyfin. Does music and video in one app, though the music experience is less specialized than Feishin.
  • Sonixd — Feishin’s predecessor. Effectively unmaintained now; use Feishin instead [README].
  • Rompr — LinuxLinks [2] actually recommends this as a “much more frugal solution” for resource-constrained setups, paired with MPD as the backend. Different architecture, lower RAM footprint.
  • MPD + ncmpcpp — if you’re comfortable in the terminal and RAM is genuinely scarce, this stack is audibly excellent and runs in under 50MB.

Bottom line

Feishin delivers on its core promise: a modern, gapless-capable frontend for your self-hosted music collection. If you’re already running Navidrome and tired of its functional-but-minimal web interface, Feishin is the obvious upgrade. The MPV backend, synchronized lyrics, and smart playlists are real quality-of-life improvements that are hard to find in a single free application.

The honest problem is the memory footprint. Over 1GB to play music is a lot to defend in 2026, and the LinuxLinks reviewer isn’t wrong to flag it. On a dedicated home server or NAS where RAM is not the constraint, it doesn’t matter. On a small VPS where you’re also running other services, it will.

The other reality check: Feishin is a client, not a server. Before you install it, you need to have already solved the harder problem of where your music lives and how it’s served. Once that infrastructure exists, Feishin is an excellent layer on top of it. It just isn’t the whole stack.


Sources

  1. LinuxLinks — “Feishin - modern self-hosted music player” (Page 1) — linuxlinks.com. https://www.linuxlinks.com/feishin-modern-self-hosted-music-player/
  2. LinuxLinks — “Feishin - modern self-hosted music player” (Page 2: In Operation and Summary) — linuxlinks.com. https://www.linuxlinks.com/feishin-modern-self-hosted-music-player/2/
  3. LinuxLinks — Page 263 (music player listing) — linuxlinks.com. https://www.linuxlinks.com/page/263/
  4. LinuxLinks — “music player Archives, Page 3” — linuxlinks.com. https://www.linuxlinks.com/tag/music-player/page/3/
  5. idroot — “How To Install Feishin on Manjaro” — idroot.us. https://idroot.us/install-feishin-manjaro/
  6. idroot — “How To Install Feishin on Ubuntu 24.04 LTS” — idroot.us. https://idroot.us/install-feishin-ubuntu-24-04/

Primary sources: