项目地址:https://github.com/hanxi/xiaomusic 

镜像地址:  https://hub.docker.com/r/hanxi/xiaomusic

1. 准备工作

  • 确保环境

    • 已安装 Docker 与 Docker Compose。
    • 本地或服务器上具备稳定的网络环境,并且确保小米音箱和运行 Docker 的设备在同一局域网内。
  • 目录规划
    建议在服务器上创建两个文件夹,一个用于存放音乐文件(这里示例路径为 /mnt/big/share/jellyfin/media/music),另一个用于存放配置文件(如 /home/xiaomusic_conf)。你可以根据需要调整路径。


2. Docker Compose 配置文件

在你预先设定的目录下,新建 docker-compose.yml 文件,内容如下:

version: "3"

services:
  xiaomusic:
    image: hanxi/xiaomusic:latest
    container_name: xiaomusic
    restart: unless-stopped
    ports:
      - "58090:8090"             # 映射端口:外部访问端口58090,内部使用8090
    environment:
      XIAOMUSIC_PUBLIC_PORT: 58090
    volumes:
      - /mnt/big/share/jellyfin/media/music:/app/music  # 本地音乐目录,替换为你的实际路径
      - /home/xiaomusic_conf:/app/conf                  # 配置文件目录,用于保存程序配置

说明

  • 端口映射
    将容器内部的 8090 端口映射到宿主机的 58090 端口。首次访问时需要通过 http://<docker-host-IP>:58090 访问服务。

  • 环境变量
    设置 XIAOMUSIC_PUBLIC_PORT 为 58090,确保服务内的配置与外部映射端口一致。

  • 数据挂载

    • /mnt/big/share/jellyfin/media/music:为存放音乐文件的路径。
    • /home/xiaomusic_conf:用于存放 xiaomusic 的配置信息,方便持久化设置。

3. 部署与启动

  1. 进入 docker-compose.yml 所在的目录
    打开终端或 SSH 连接至运行 Docker 的主机,进入存放 docker-compose.yml 文件的目录。

  2. 启动服务
    通过以下命令启动 xiaomusic 服务:

    docker-compose up -d

    这条命令会以后台模式启动服务。如果启动成功,你可以通过 docker ps 命令查看正在运行的容器列表,确认 xiaomusic 容器已运行。


4. 第一次使用与绑定流程

  1. 访问服务
    在浏览器中打开:

    http://<你的服务器IP>:58090

    第一次打开时,页面会要求你绑定小米账号。这一步用于让 xiaomusic 自动加载你的小米音箱信息,使得之后可以一键选择音响作为播放目标。

  2. 绑定小米账号

    • 根据页面提示,使用小米账号登录并完成绑定。
    • 绑定成功后,服务会自动获取当前局域网内已登录的小爱音箱设备列表。
  3. 选择音响设备
    登录并绑定完成后,页面会显示已发现的音响设备(一般是小爱音箱)。此时请根据需要进行选择,确保后续通过 DLNA 协议投送音乐到正确的音响设备。


5. 使用语音控制(可选扩展)

你可以进一步结合语音口令,实现对音乐播放、切换、列表刷新等操作,例如:

 

 

支持语音口令

  • 【播放歌曲】,播放本地的歌曲
  • 【播放歌曲+歌名】,比如:播放歌曲周杰伦晴天
  • 【上一首】
  • 【下一首】
  • 【单曲循环】
  • 【全部循环】
  • 【随机播放】
  • 【关机】,【停止播放】,两个效果是一样的。
  • 【刷新列表】,当复制了歌曲进 music 目录后,可以用这个口令刷新歌单。
  • 【播放列表+列表名】,比如:播放列表其他。
  • 【加入收藏】,把当前播放的歌曲加入收藏歌单。
  • 【取消收藏】,把当前播放的歌曲从收藏歌单里移除。
  • 【播放列表收藏】,这个用于播放收藏歌单。
  • 【播放本地歌曲+歌名】,这个口令和播放歌曲的区别是本地找不到也不会去下载。
  • 【播放列表第几个+列表名】,具体见: #158
  • 【搜索播放+关键词】,会搜索关键词作为临时搜索列表播放,比如说【搜索播放林俊杰】,会播放所有林俊杰的歌。
  • 【本地搜索播放+关键词】,跟搜索播放的区别是本地找不到也不会去下载。

这些语音口令的实现需要结合语音识别模块(比如小爱同学等),但 xiaomusic 本身提供了 DLNA 服务端,能方便地将播放列表传递给音响进行播放。

 


6. 注意事项

  • 局域网一致性
    绑定小米账号和音响设备时,请确保设备均在同一网络内,避免出现发现不到设备的情况。

  • 防火墙设置
    如果遇到外部访问失败,检查防火墙是否已放行 58090 端口及内网通信端口(8090 可能由 Docker 内部使用)。

  • 数据持久化
    使用挂载目录保存音乐文件和配置信息,即使容器重启也不会丢失设置。