CherryMusic
CherryMusic 是一个 Web 应用程序,可让您远程流式传输、浏览和管理您的音乐收藏。它旨在替代 Last.fm、Spotify 和 Grooveshark 等流媒体服务。
安装
安装 cherrymusicAUR 软件包,或 cherrymusic-devel-gitAUR 以获取开发版本。
可选依赖
- 实时转码: lame, vorbis-tools, flac, faad2, mpg123, opus-tools 或 ffmpeg (它取代了上述编解码器,并增加了 WMA 解码)
- 在显示的封面艺术上自动调整图像大小: imagemagick
- 特殊字符搜索词: python-unidecode
- GTK 系统托盘图标: python-gobject
配置
快速开始
要启动并运行基本设置,请执行
$ 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 手册 cherrymusic
和 cherrymusic.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 绑定到小于 1024 的端口(无需 root 权限)
要将 CherryMusic(或任何其他应用程序)绑定到小于 1024 的端口,通常需要 root 权限。但是,您永远不应以 root 身份运行 CherryMusic! 有几种方法可以解决这个问题
- 使用防火墙(iptables 或类似工具)进行端口重定向
- 使用 authbind
- 使用 Capabilities(更准确地说,是 setcap)
有关更多信息,请参阅以下参考资料
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.6
和 3.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