跨平台音乐播放器Feishin

什么是 Feishin ?

Feishin 是一款现代的自托管音乐播放器,支持多种音乐来源和功能。它是由Sonixd 的重构版本发展而来,能够与 NavidromeJellyfin API 音乐服务器兼容,目前还不支持 Subsonic APIFeishin 具有现代化的用户界面,支持 MPVWeb 播放器后端,并且提供智能播放列表编辑和歌词同步等功能。此外,Feishin 支持跨平台使用,包括桌面客户端、Web 版本和 Docker部署方式,适用于本地音乐库和在线流媒体。

软件功能:

  • MPV播放器后端
  • 网络播放器后端
  • 现代用户界面
  • 将播放记录发送到您的服务器
  • 智能播放列表编辑器(Navidrome
  • 支持同步和非同步歌词

Feishin 是一个跨平台的音乐播放器,除了支持支持 Docker 部署外,还支持 LinuxMacOSWindows 平台

准备

Feishin 只是个音乐播放器,需要配合 NavidromeJellyfin 音乐服务器使用。官方的示例是针对 Jellyfin 的,所以老苏研究了一下 Navidrome 的设置

首先当然是需要先安装 Navidrome

文章传送门:音乐流媒体服务器Navidrome

如果你之前没安装过,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 新建文件夹 navidrome 和 子目录
mkdir -p /volume1/docker/navidrome/{data,music}

# 进入 navidrome 目录
cd /volume1/docker/navidrome

# 修改目录权限
chmod a+w data

# 运行容器
docker run -d \
--restart unless-stopped \
--name navidrome \
--user 1000:1000 \
-p 4533:4533 \
-v $(pwd)/data:/data \
-v $(pwd)/music:/music:ro \
-e ND_ENABLETRANSCODINGCONFIG=true \
-e ND_SESSIONTIMEOUT=72h \
deluan/navidrome
可变
ND_SESSIONTIMEOUT Navidrome 将等待多长时间后关闭网页用户界面的空闲会话
ND_ENABLETRANSCODINGCONFIG 在用户界面中启用转码配置

更多的Navidrome 的环境变量设置,请参考官方文档: https://www.navidrome.org/docs/usage/configuration-options/

music 目录中正好了留了之前的一张无损的专辑

安装

在群晖上以 Docker 方式安装。

官方的镜像没有发布在 docker hub,而是在 ghcr.io,所以直接用命令行来安装。

SSH 客户端中依次执行下面的命令

1
2
# 下载镜像
docker pull ghcr.io/jeffvli/feishin:latest

本文写作时, latest 版本对应为 0.10.1

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 运行容器
docker run -d \
--name feishin \
--restart unless-stopped \
-p 9180:9180 \
-e SERVER_NAME=navidrome \
-e SERVER_LOCK=true \
-e SERVER_TYPE=navidrome \
-e SERVER_URL='http://192.168.0.197:4533' \
-e PUID=1000 \
-e PGID=1000 \
-e UMASK=002 \
-e TZ=Asia/Shanghai \
ghcr.io/jeffvli/feishin:latest
可变
SERVER_NAME 定义服务器的名称
SERVER_LOCK 当设置为 true 且已设置名称/类型/URL 时,仅可以切换用户名/密码
SERVER_TYPE 支持 jellyfinnavidrome
SERVER_URL jellyfinnavidrome服务器的完整 URL,包括协议和端口
PUID UserID,默认设为 1000
PGID GroupID,默认设为 1000
UMASK umask=002 意味着新创建的文件和目录默认会关闭写权限,但不会关闭执行权限(对于目录)
TZ 时区设置

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: '3'

services:
feishin:
image: 'ghcr.io/jeffvli/feishin:latest'
container_name: feishin
restart: unless-stopped
ports:
- 9180:9180
environment:
- SERVER_NAME=navidrome
- SERVER_LOCK=true
- SERVER_TYPE=navidrome
- SERVER_URL=http://192.168.0.197:4533
- PUID=1000
- PGID=1000
- UMASK=002
- TZ=Asia/Shanghai

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 feishin
mkdir -p /volume1/docker/feishin

# 进入 feishin 目录
cd /volume1/docker/feishin

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:9180 就能看到主界面

Open menu –> Manage servers

Add Server

因为环境变量已经设置了类型和地址,所以这里只要填 UsernamePassword 即可

Add 添加

为了获得最佳体验,在创建服务器时请选择“保存密码”,并在 Navidrome 环境变量中将 SessionTimeout 设置为更大的值(例如 72 小时)。

Go back 会进入主界面

选中专辑进行播放

Navidrome 的客户端中,会看到 Feishin 的使用记录

参考文档

jeffvli/feishin: A modern self-hosted music player.
地址:https://github.com/jeffvli/feishin/

Feishin
地址:https://feishin.vercel.app