去中心化开源音乐服务器Funkwhale
什么是 Funkwhale ?
Funkwhale 是一款开源的音乐社交平台,让音乐爱好者在一个分散的、开放的网络中收听和分享音乐和音频。可以上传个人音乐库到自己的实例服务器,与朋友和家人分享。所有实例可以通过标准、免费、开源的技术连通。网络不依赖于任何公司或实体。
什么是 ActivityPub ?
ActivityPub 是一个去中心社交网络(decentralized social networking)的交互协议,允许软件项目通过添加 ActivityPub 支持,实现拥有完全不同代码库的应用程序之间的可互操作社交网络。
安装
在群晖上以 Docker 方式安装。
在注册表中搜索 funkwhale
,选择第一个 funkwhale/all-in-one
,版本选择 latest
。
这是个多合一的镜像,包含了
Postgres
,Redis
,Nginx
以及所有需要的文件和配置。
卷
在 docker
文件夹中,创建一个新文件夹,并将其命名为 funkwhale
,然后在 funkwhale
文件夹中再创建两个新的子文件夹,分别命名为 data
和 music
。
/data
目录是数据持久化的关键,需修改目录的权限,否则很可能因为权限问题导致容器停止运行。
1 | # 在 funkwhale 目录中执行 |
文件夹 | 装载路径 | 说明 |
---|---|---|
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 | # 其中 funkwhale-all-in-one1 为容器名称 |
注意事项:
- 容器必须在运行状态才能执行上面的命令;
- 密码至少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/funkwhaleGitHub - michaelmob/docker-funkwhale: All-in-one funkwhale docker image.
地址:https://github.com/michaelmob/docker-funkwhaleDocker installation — funkwhale 1.1.1 documentation
地址:https://docs.funkwhale.audio/installation/docker.html威联通(NAS)搭建个人音乐中心 - 简书
地址:https://www.jianshu.com/p/c33057215c15