Funkwhale

来自 ArchWiki

引用自主要文档页面

Funkwhale 是一个自托管、现代、自由开源的音乐服务器,深受 Grooveshark 的启发。

实例可以通过 ActivityPub 协议进行联合。

安装

Funkwhale 需要一个反向代理 ([1]),因此需要安装 nginxApache HTTP 服务器

它还需要配置 PostgreSQL 数据库和 Redis 缓存服务器。请参阅 #配置 和相应的页面以获取更多信息。

安装 funkwhale-venvAUR 软件包。

手动安装

按照 [2] 的说明进行操作。 这将把所有组件安装在 /srv/funkwhale 中。

Docker 安装

按照 [3] 的说明进行操作。

配置

以下部分假设已安装 funkwhale-venv,对于手动安装,文件夹应进行相应的更改。

它还假设您在本地网络上使用 Funkwhale。 有关使其在外部可访问的官方文档,特别是使用 Certbot 的证书,请参阅官方文档。

主机配置

确保您的 /etc/hosts 文件设置正确。 Funkwhale 服务器在 127.0.0.1 上运行,别名为 funkwhale.local,但这可以更改。

您的 /etc/hosts 文件应如下所示,

#<ip-address>   <hostname.domain.org>   <hostname>
127.0.0.1       localhost
::1             localhost
127.0.0.1       funkwhale.local

配置 nginx

Nginx 配置文件的上游模板在 /etc/webapps/funkwhale/nginx.template 中提供。 但是,此文件包含需要用 env 文件中的值替换的变量(有关如何创建此文件,请参阅 #初始化 部分)

$ set -a && source /srv/funkwhale/config/env && set +a
$ envsubst "`env | awk -F = '{printf \" $%s\", $$1}'`" \
   < /etc/webapps/funkwhale/nginx.template \
   > /etc/nginx/sites-available/funkwhale.conf

证书的路径也应进行相应的修改。

然后启用站点

$ ln -s /etc/nginx/sites-available/funkwhale.conf /etc/nginx/sites-enabled/

启动 nginx.service

配置 apache

注意: 您将需要配置 Apache HTTP 服务器 以与 RedisPostgreSQL 和 Apache TLS 支持一起运行。

模板 Apache 配置文件在 /etc/webapps/funkwhale/apache-funkwhale.conf 中提供。 它配置 Funkwhale 实例在 https://funkwhale.local 上可访问。

文件夹名称应更改以适合您的安装。 有关哪些行需要修改的更多说明,请参阅 [4]

将模板复制到 apache 配置文件文件夹,

$ cp /etc/webapps/funkwhale/apache-funkwhale.conf /etc/httpd/conf/extra/funkwhale.conf

接下来,编辑 Apache HTTP 服务器 配置文件并添加以下内容

/etc/httpd/conf/httpd.conf
Include conf/extra/funkwhale.conf

为了应用更改,您需要重启 httpd.service (Apache)。

配置 PostgreSQL

使用 postgres 用户连接到 PostgreSQL 命令行,以创建 funkwhale 用户和数据库。

[postgres]$ psql
CREATE DATABASE "funkwhale"
 WITH ENCODING 'utf8';
CREATE USER funkwhale;
ALTER DATABASE funkwhale OWNER TO funkwhale;
\c funkwhale;
CREATE EXTENSION "unaccent";
CREATE EXTENSION "citext";

最后三行加载 unaccentcitext 扩展,这是 funkwhale 工作所必需的(自 0.20 版本起需要 citext)。

初始化

Funkwhale 用户

Funkwhale 应该以 funkwhale 用户身份运行。 它由 AUR 软件包自动创建。 如果您按照手动安装进行操作,请使用以下命令创建它

# useradd -r -d /srv/funkwhale -m funkwhale -c "Funkwhale music server" -s /usr/bin/nologin

/srv/funkwhale 中创建 Funkwhale 的数据文件夹,归 funkwhale 用户所有

# mkdir /srv/funkwhale
# chown funkwhale:funkwhale /srv/funkwhale

funkwhale 用户身份运行以下命令。

为 API 文件和存储创建子文件夹

[funkwhale]$ cd /srv/funkwhale
[funkwhale]$ mkdir -p api data/static data/media data/music config

为了工作,Funkwhale 需要存在几个环境变量,这些变量应在环境变量文件 /srv/funkwhale/config/env 中定义。 在 /etc/webapps/funkwhale/env.template 中有一个模板,复制并修改它以适合您的安装。

[funkwhale]$ cp /etc/webapps/funkwhale/env.template /srv/funkwhale/config/env

FUNKWHALE_HOSTNAME 变量应与 /etc/hosts 中的主机名相对应。 DJANGO_ALLOWED_HOSTS 也需要与 Funkwhale 实例将被访问的地址匹配。 您应该生成唯一的 DJANGO_SECRET_KEY 并根据您的安装相应地更改路径。

提示: 由于您将需要以加载环境变量的 funkwhale 用户身份运行多个命令,因此您可以在登录后使用以下命令行
[funkwhale]$ export $(grep -v ^#  /srv/funkwhale/config/env | xargs)

为了方便起见,您可以将此行复制到 /srv/funkwhale/.bashrc (或您正在使用的任何 shell),以便每次您登录到 funkwhale 用户时都会自动加载它。

数据库设置

使用 /usr/bin/funkwhale_managefunkwhale 用户身份运行 /usr/share/webapps/funkwhale/api/manage.py 命令。

在启动应用程序之前初始化数据库

[funkwhale]$ funkwhale_manage migrate

为您的 Funkwhale 实例创建超级用户

[funkwhale]$ funkwhale_manage createsuperuser

为 webapp 收集静态文件

[funkwhale]$ funkwhale_manage collectstatic
注意: 如果您不使用 funkwhale_manage,您需要首先激活 python 虚拟环境,然后以 funkwhale 用户身份运行命令。
[funkwhale]$ source /usr/share/webapps/funkwhale/virtualenv/bin/activate
[funkwhale]$ python /usr/share/webapps/funkwhale/api/manage.py migrate
[funkwhale]$ python /usr/share/webapps/funkwhale/api/manage.py createsuperuser
[funkwhale]$ python /usr/share/webapps/funkwhale/api/manage.py collectstatic
[funkwhale]$ deactivate

版本升级

如果出现错误,请使用 /usr/bin/funkwhale_manage 脚本来运行 /usr/share/webapps/funkwhale/api/manage.py 命令(应该以 root 身份运行)。

警告: 在重启服务之前,检查 Apache 或 nginx 配置文件是否已更改。 请查阅官方文档以了解不兼容的更改。

用法

上游提供了已安装的 systemd 服务。

要启动实例,只需启动 funkwhale.target

这会启动三个服务,您可以使用以下命令检查它们的状态

$ systemctl status funkwhale-\*
注意: 在 1.3.0 版本之前,AUR 软件包使用 funkwhale.service,之后它像上游一样使用 funkwhale.target

故障排除

请参阅 https://docs.funkwhale.audio/administrator/troubleshooting/index.html

代理日志

Funkwhale 的 Apache 日志

$ tail -f /var/log/httpd/funkwhale/error.log