之前我部署过 xiaomusic,用它来让小爱音箱播放本地音乐,但是这个项目最近停止维护了。
xiaomusic 开源链接:https://github.com/hanxi/xiaomusic

于是我就搜到了 Songloft 这个项目,应该是同一个开发者吧。和 xiaomusic 主要针对小爱音箱相比,Songloft 的功能更强大,小爱音箱的播放采用插件的模式。
GitHub 地址:https://github.com/songloft-org/songloft

Docker 部署

因为路由器一直开着,所以我喜欢在路由器的 Docker 部署,下面是部署配置。

1
2
3
4
5
6
7
8
9
10
11
12
# 1. 拉取镜像
docker pull songloft/songloft:latest

# 2. 运行容器
docker run -d \
--name songloft \
-p 58091:58091 \
-v /path/to/music:/app/music \
-v /path/to/data:/app/data \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD='your_strong_password' \
songloft/songloft:latest

58091 是 web 端口,/path/to/music 是本地音乐目录,/path/to/data 是数据存储目录,ADMIN_USERNAME 和 ADMIN_PASSWORD 是登录 web 端的账号密码。
Docker 镜像中音乐目录与数据目录默认为 /app/music 与 /app/data,通过 -v 挂载即可;如需指向其他路径,可用 MUSIC_DIR 指定音乐目录。

注意下,如果运行容器正常,但无法访问 192.168.1.1:58091,请检查路由器的防火墙设置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1. 允许 docker 区域的流量转发到 wan 区域
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='docker'
uci set firewall.@forwarding[-1].dest='wan'

# 2. 开启 docker 区域的 IP 伪装 (NAT 转换) 和 MTU 修复
uci set firewall.docker.masq='1'
uci set firewall.docker.mtu_fix='1'

# 3. 允许 lan 区域的流量转发到 docker 区域
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='lan'
uci set firewall.@forwarding[-1].dest='docker'

# 4. 保存配置并重启防火墙
uci commit firewall
/etc/init.d/firewall restart

使用

浏览器访问 http://192.168.1.1:58091 即可登录管理界面。
先到设置里面看下音乐库路径是否正确,确认无误后,点击“扫描音乐库”,等待扫描完成即可。
libraries
主页面即可看到音乐列表,点击播放即可。
home
小爱音箱播放本地音乐需要安装插件,点击“扩展”按钮,选择“插件商店”,搜索智能音箱,点击安装即可。
plugin
安装插件后回到主页,js 插件就可以看到了:
mi
点击设置页面,先输入服务器地址,再登录小米账号,登录成功后就可以看到小爱音箱了。
xiaoai
打开启用对话监听
voice1
语音口令根据自己的喜好设置:
voice2
接着就可以通过语音控制小爱音箱播放本地音乐了,比如说:播放歌单******,小爱音箱就会播放本地音乐库里的歌曲了。
当然,也可以直接在miot智能音箱的主页上选择歌单播放,右上角选择播放音箱设备。