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
我什么都不卖了,告辞!
最新评论
5211314
能不能教我 一点不会