去中心化开源音乐服务器Funkwhale

什么是 Funkwhale ?

Funkwhale 是一款开源的音乐社交平台,让音乐爱好者在一个分散的、开放的网络中收听和分享音乐和音频。可以上传个人音乐库到自己的实例服务器,与朋友和家人分享。所有实例可以通过标准、免费、开源的技术连通。网络不依赖于任何公司或实体。

什么是 ActivityPub ?

ActivityPub 是一个去中心社交网络(decentralized social networking)的交互协议,允许软件项目通过添加 ActivityPub 支持,实现拥有完全不同代码库的应用程序之间的可互操作社交网络。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 funkwhale ,选择第一个 funkwhale/all-in-one,版本选择 latest

这是个多合一的镜像,包含了 PostgresRedisNginx 以及所有需要的文件和配置。

docker 文件夹中,创建一个新文件夹,并将其命名为 funkwhale,然后在 funkwhale 文件夹中再创建两个新的子文件夹,分别命名为 datamusic

/data 目录是数据持久化的关键,需修改目录的权限,否则很可能因为权限问题导致容器停止运行。

1
2
# 在 funkwhale 目录中执行
chmod 777 data

文件夹 装载路径 说明
docker/funkwhale/data /data 数据目录
docker/funkwhale/music /music 音乐目录

如果不需要数据持久化,可以不挂载 /data 目录
如果不打算从网页上传音乐文件,/music 目录可以设为只读;

端口

找一个不冲突的端口就行

本地端口 容器端口
3030 80

环境

可变
PUID 可选项,默认设为 1000
PGID 可选项,默认设为 1000
NESTED_PROXY 容器在反向代理后面设为1,否则为0
FUNKWHALE_HOSTNAME Funkwhale 实例的主机域名,默认值为 yourdomain.funkwhale

其中前三项为新增,第四项为修改,要修改为你自己的域名,如果域名带端口,把端口也一并带上,其他的都用的默认值;

熟悉的都知道老苏用了 frp 来做内网穿透,测试发现在这种模式下, NESTED_PROXY 设不设,或者设为0或者1,似乎并没有任何影响。

相对应的反向代理设置

设置

创建超级用户

超级用户(SuperUser)在老苏看来应该就是管理员吧

1
2
# 其中 funkwhale-all-in-one1 为容器名称
docker exec -it funkwhale-all-in-one1 manage createsuperuser

注意事项:

  1. 容器必须在运行状态才能执行上面的命令;
  2. 密码至少8个字符,不能都是数字,当然也不能太通用了;

开放用户注册

在浏览器中输入 http://群晖IP:3030,就能看到主界面了

用刚才注册的超级用户登录

登录成功后的主界面

管理 –> 设置 –> 注册者 中,可以开启用户注册,默认是没有开启的,只能由管理员邀请才行

启用 Subsonic API

管理 –> 设置 –> Subsonic 中,默认 Enabled Subsonic API 是启用的,但就安全性而言,Subsonic 协议并不理想,所以如果你并不打算使用客户端,可以关闭这个选项

只是启用还不行,还需要进一步的设置。在 管理员 –> 设置 –> Subsonic API 密码 中,为支持 Subsonic API 的音乐播放器设置单独的密码,只要点 请求密码 就可以了

解锁 Subsonic 之后,官方提供的能和 Funkwhale 配套使用的客户端:https://funkwhale.audio/apps/

老苏用的是 android 客户端 Subsonic Music Streamer 并没有在上面的列表中,但还是可以正常使用

所以老苏推荐你看看 Subsonic Apps 列表:http://www.subsonic.org/pages/apps.jsp

这里比官方推荐的 app 更丰富,应该能找到适合你的

导入音乐

找到 在库中上传第三方内容 –> 开始吧

填入相关说明后,创建库

这个时候就拥有了你自己的音乐库了

转到 上传 页面 –> 导入

即可将 /music 目录中的音乐文件导入到你的音乐库中

老苏只拷了3首歌,还是上次研究 音乐解锁unlock-music 留在硬盘里的

这个时候能看到库的详情了

听歌

回到网站首页,可以看到 最近添加 中已经有了刚才加的 3 首歌

可以直接播放,也可以添加到播放列表

建了一个播放列表

手机 app Subsonic 上的效果

发布实例

如果你想把 Funkwhale 服务器变成一个公共实例,首先要完善服务器的信息

接下来到 https://network.funkwhale.audio/ 添加或者删除你的实例

之后可以在 https://network.funkwhale.audio/dashboards/d/overview/funkwhale-network-overview?orgId=1&refresh=2h 找到实例的详情

参考文档

GitHub - ellisist/funkwhale: Forked from https://code.eliotberriot.com/funkwhale/funkwhale
地址:https://github.com/ellisist/funkwhale

GitHub - michaelmob/docker-funkwhale: All-in-one funkwhale docker image.
地址:https://github.com/michaelmob/docker-funkwhale

Docker installation — funkwhale 1.1.1 documentation
地址:https://docs.funkwhale.audio/installation/docker.html

威联通(NAS)搭建个人音乐中心 - 简书
地址:https://www.jianshu.com/p/c33057215c15