欢迎光临
我们一直在努力

Funkwhale:开源免费的音乐服务器

funkwhale是一个开源免费的音乐服务程序,用它可以搭建一个公开或者私人的音乐库。funkwhale有一个比较好玩的地方是支持activitypub协议,可以和mastodon等程序进行互动,比如说关注,评论之类的。

大概1-2年前我搭建过一次,当时觉得很多功能还不完善,现在回头重新搭建了一个试了下,相比较之前改动还是挺多的,基本可以满足日常使用需求了,这里做个搭建的记录。

有几种部署的方法,官方的文档上有提到,一个是一键脚本,一个是手动,还有一个docker,这里选择用docker的方式。

说下用docker的原因,一键脚本那个就不用多说了,我服务器上还跑着其他的程序,这个脚本会改动nginx的配置,还有很多地方的设置都不兼容。手动部署的话是可以的,但是太麻烦了,所以还是docker最省事,而且官方提供的docker镜像还支持arm64。

这里要注意的是官方提供了2个docker镜像,其中有一个all in one的镜像是在将来要废弃掉的,所以现阶段新部署的实例建议是用多个容器组合安装的方式。

安装docker/compose:

apt -y update
apt -y install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

准备funkwhale的项目目录,下载需要用到的配置文件:

mkdir /srv/funkwhale
cd /srv/funkwhale
mkdir nginx
curl -L -o nginx/funkwhale.template "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/1.2.4/deploy/docker.nginx.template"
curl -L -o nginx/funkwhale_proxy.conf "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/1.2.4/deploy/docker.funkwhale_proxy.conf"
curl -L -o docker-compose.yml "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/1.2.4/deploy/docker-compose.yml"

注意这个项目目录的路径,最好不要改动就使用和我一样的即可,当然要改也是可以的,但是后续配置起来会很麻烦,有太多的配置文件都需要跟着改动,建议就用这个/srv/funkwhale是最省事的。

下载.env配置文件,进行编辑:

curl -L -o .env "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/1.2.4/deploy/env.prod.sample"
nano .env

这里我只记录必须改动的配置:

FUNKWHALE_VERSION=1.2.4
FUNKWHALE_HOSTNAME=funkwhale.example.com
DJANGO_SECRET_KEY=
MUSIC_DIRECTORY_PATH=/music
MUSIC_DIRECTORY_SERVE_PATH=/srv/funkwhale/data/music
NGINX_MAX_BODY_SIZE=500M

DJANGO_SECRET_KEY的值可以用下面的命令生成:

openssl rand -base64 45

把需要用到的docker镜像全部pull下来:

docker-compose pull

先运行数据库容器,然后初始化数据:

docker-compose up -d postgres
docker-compose run --rm api python manage.py migrate

创建管理员:

docker-compose run --rm api python manage.py createsuperuser

最后再把其他的容器up起来:

docker-compose up -d

检查容器状态:

docker-compose ps

确保所有容器的状态都是up:

现在还需要配置反向代理,在主机上安装nginx和certbot:

apt -y install nginx python3-certbot-nginx

下载funkwhale官方提供的nginx配置文件:

curl -L -o /etc/nginx/funkwhale_proxy.conf "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/1.2.4/deploy/funkwhale_proxy.conf"

新建一个nginx站点配置文件:

nano /etc/nginx/conf.d/funkwhale.conf

写入如下配置:

upstream fw {
    server 127.0.0.1:5000;
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    listen [::]:80;
    server_name funkwhale.example.com;

    gzip on;
    gzip_comp_level    5;
    gzip_min_length    256;
    gzip_proxied       any;
    gzip_vary          on;

    gzip_types
        application/javascript
        application/vnd.geo+json
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-web-app-manifest+json
        font/opentype
        image/bmp
        image/svg+xml
        image/x-icon
        text/cache-manifest
        text/css
        text/plain
        text/vcard
        text/vnd.rim.location.xloc
        text/vtt
        text/x-component
        text/x-cross-domain-policy;

    location / {
        include /etc/nginx/funkwhale_proxy.conf;
        client_max_body_size 500M;
        proxy_pass   http://fw/;
    }
}

签发ssl证书:

certbot --nginx

正常的话现在应该能够打开站点了,这里简单介绍一下funkwhale后台的设置。

funkwhale默认情况下是私有模式,也就是说实例不允许注册,访客也浏览不了实例上的内容。

如果要让访客浏览到实例上的内容,在后台把下图箭头所指的功能关闭即可,同时在这里也可以设置每个用户的上传配额:

如果要完全开放实例,允许用户注册,在这里设置:

现在这个程序整体来说已经很完善了,除了中文翻译有点蛋疼,外加前端有一些小bug,基本上使用是没问题的,而且也有移动的客户端。

LALA

我什么都不卖了,告辞!

赞(0)
未经允许不得转载:拆东墙 » Funkwhale:开源免费的音乐服务器

评论 抢沙发

登录

找回密码

注册