CherryMusic

出自 ArchWiki

CherryMusic 是一个 Web 应用程序,可让您远程流式传输、浏览和管理您的音乐收藏。它旨在替代 Last.fm、Spotify 和 Grooveshark 等流媒体服务。

安装

安装 cherrymusicAUR 软件包,或 cherrymusic-devel-gitAUR 以获取开发版本。

可选依赖

配置

快速开始

要启动并运行基本设置,请执行

$ cherrymusic --setup --port 8080

并在浏览器中打开地址 “localhost:8080”

$ browser localhost:8080

这将允许您从浏览器内配置最重要的选项,并且您可以设置管理员帐户。

如果您希望 CherryMusic 作为系统服务运行并在启动时自动启动,请参阅 #Systemd 服务文件

手动设置

启动 CherryMusic 以进行初始设置

$ cherrymusic

首次启动时,CherryMusic 将在 ~/.local/share/cherrymusic/~/.config/cherrymusic/ 中创建其数据和配置文件,向 stdout 打印一条注释并退出。现在,编辑 ~/.config/cherrymusic/cherrymusic.conf 中的配置文件,并将以下行更改为与您的设置匹配

~/.config/cherrymusic/cherrymusic.conf
[...]
basedir = /path/to/your/music
[...]
port = 8080
[...]

在浏览器中打开地址 https://127.0.0.1:8080 以创建管理员帐户。

登录后,通过单击 Admin 面板中的更新音乐库来填充搜索数据库。

如果您希望 CherryMusic 作为系统服务运行并在启动时自动启动,请参阅 #Systemd 服务文件

还有更多选项可以配置,请参阅 此节

微调

请参阅 man 手册 cherrymusiccherrymusic.conf

技巧与诀窍

“basedir” 中的符号链接

注意: 这仅在您的音乐位于不同位置时有用,例如在内部硬盘驱动器外部硬盘驱动器上。

可能,填充 CherryMusic 音乐目录(称为 “basedir”)最模块化和灵活的方式是创建一个专用目录,并且仅将所有音乐收藏的路径符号链接到该目录中,例如:

$ mkdir ~/.local/share/cherrymusic/basedir
$ ln -s /path/to/musicdir1 ~/.local/share/cherrymusic/basedir/musicdir1
$ ln -s /path/to/musicdir2 ~/.local/share/cherrymusic/basedir/musicdir2

Systemd 服务文件

CherryMusic 尚未附带守护程序,但 两个 CherryMusic AUR 软件包 都提供了 systemd 服务文件。它可以作为 cherrymusic@user.service 启动,其中 user 是应该运行 CherryMusic 的用户(不要使用 root!)。

在 GNU Screen 会话中运行

为了在注销后保持 CherryMusic 运行,可以在 GNU Screen 会话中运行它。

$ screen -d -m -S cherrymusic cherrymusic

由于 CherryMusic 仅将输出写入 GNU Screen 会话,因此无需从会话内进行控制。使用 systemd 服务文件 可能会更方便。但是,这对于调试可能仍然有用。

要在启动后在 GNU Screen 会话中运行它,还可以创建和使用以下 systemd 服务文件

/etc/systemd/system/cherrymusic@.service
[Unit]
Description = CherryMusic server
Requires = network.target
After = network.target

[Service]
User = %I
Type = simple
ExecStart = /usr/bin/screen -d -m -S cherrymusic /usr/bin/cherrymusic
ExecStop = /usr/bin/screen -X -S cherrymusic quit
StandardOutput = null
PrivateTmp = true
Restart = always

[Install]
WantedBy = multi-user.target

要最终启用并启动服务,请参阅 #Systemd 服务文件

手动调整搜索算法的搜索参数

搜索算法的搜索参数可以通过 CherryMusic 安装中的 cherrymusicserver/tweak.py 文件手动调整。

警告: 更改此文件可能会破坏 CherryMusic 的搜索功能。仅在您知道自己在做什么的情况下才继续。在编辑之前备份文件也可能是一个好主意。

将 CherryMusic 绑定到小于 1024 的端口(无需 root 权限)

要将 CherryMusic(或任何其他应用程序)绑定到小于 1024 的端口,通常需要 root 权限。但是,您永远不应以 root 身份运行 CherryMusic! 有几种方法可以解决这个问题

有关更多信息,请参阅以下参考资料

https://serverfault.com/questions/268099/bind-to-ports-less-than-1024-without-root-access
https://www.debian-administration.org/article/386/Running_network_services_as_a_non-root_user
https://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-l

故障排除

使用 pip 安装时缺少模块 wsgiserver2

如果错误

ImportError: No module named wsgiserver2

在启动 CherryMusic 时发生,则可能是使用了来自 pip 的损坏的 CherryPy 软件包(版本 3.2.63.4.0 似乎受到影响)。这是一个 问题描述。要解决此问题,请卸载 CherryPy 并重新安装

$ pip uninstall cherrypy
$ pip install --no-use-wheel cherrypy

停用 Flash 拦截器

活动的 Flash 拦截器可能会干扰 Web 前端。如果您在曲目选择或播放等方面遇到问题,请尝试在浏览器的 Flash 拦截器/插件管理器中将服务器列入白名单。

CherryMusic 在 Android Chrome 上无法加载

这可能是由于浏览器中安装了 AdBlock Plus。CM 没有广告,因此问题是由此插件引起的。

在 Nginx 后端,曲目滚动不起作用

如果在 Nginx 后端的主要桌面浏览器中曲目滚动不起作用,并且播放在中途停止并从头开始,则必须配置 Nginx 模块 ngx_http_proxy_module

将行 proxy_http_version 1.0; 更改为

ngx_http_proxy_module
[...]
proxy_http_version 1.1;
[...]

非正常关机后无法启动

当 CherryMusic 服务未以干净的方式停止时,会留下一个 cherrymusic.pid 文件。这会导致 CherryMusic 服务在尝试在启动时创建新的 PID 文件时中止。要解决此问题,可以创建如下所示的 systemd drop-in 文件

/etc/systemd/system/cherrymusic@cherrymusic.service.d/override.conf
[Service]
ExecStartPre=/usr/bin/rm -f /path/to/cherrymusic.pid

参见