Funkwhale
引用自主要文档页面
- Funkwhale 是一个自托管、现代、自由开源的音乐服务器,深受 Grooveshark 的启发。
实例可以通过 ActivityPub 协议进行联合。
安装
Funkwhale 需要一个反向代理 ([1]),因此需要安装 nginx 或 Apache 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 配置文件在 /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";
最后三行加载 unaccent
和 citext
扩展,这是 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_manage
以 funkwhale
用户身份运行 /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 身份运行)。
用法
上游提供了已安装的 systemd 服务。
要启动实例,只需启动 funkwhale.target
。
这会启动三个服务,您可以使用以下命令检查它们的状态
$ systemctl status funkwhale-\*
funkwhale.service
,之后它像上游一样使用 funkwhale.target
。故障排除
请参阅 https://docs.funkwhale.audio/administrator/troubleshooting/index.html
代理日志
Funkwhale 的 Apache 日志
$ tail -f /var/log/httpd/funkwhale/error.log