Docker 部署指南

April 14, 2026 · View on GitHub

前提条件

端口服务
3306MySQL
8084前端
8091管理后台 API(xiaozhi-server)
8092对话服务(xiaozhi-dialogue)

快速开始

git clone https://github.com/joey-zhou/xiaozhi-esp32-server-java/
cd xiaozhi-esp32-server-java
docker-compose up -d

启动 5 个服务:MySQL、Redis、Node 前端、Server 后台、Dialogue 对话。

服务地址
前端界面http://localhost:8084
后台 APIhttp://localhost:8091
WebSocketws://宿主机IP:8092/ws/xiaozhi/v1/

默认管理员:admin / 123456

ESP32 设备连接时需使用宿主机实际 IP,不要用 localhost。

模型与原生库

Docker 构建会自动下载:

  • 原生库 — sherpa-onnx JNI + onnxruntime + Vosk(linux-x64)
  • VAD 模型 — silero_vad.onnx
  • STT 模型 — Vosk 中文模型
  • TTS 模型 — vits-melo 或 matcha

预下载(可选,加速构建)

网络慢可提前下载,Docker 构建时会自动跳过已存在的文件:

./scripts/download_models.sh all       # 下载所有模型和原生库
./scripts/download_models.sh status    # 查看状态

各模块也可独立下载:

./scripts/download_base.sh             # VAD 模型 + 原生库
./scripts/download_stt.sh              # STT 模型
./scripts/download_tts.sh              # TTS 模型

环境变量

变量默认值说明
VOSK_MODEL_SIZEsmallVosk 模型,可选 standard(~1.3GB,精度高)
TTS_MODELvits-melo-tts-zh_enTTS 模型,设为 none 跳过下载
VOSK_MODEL_SIZE=standard docker-compose up -d

持久化数据

卷名说明
mysql_dataMySQL 数据
redis_dataRedis 数据

系统要求

配置CPU内存存储说明
最低2核2GB10GB需第三方 STT/TTS API
推荐2核4GB20GB本地小模型
完整4核8GB30GB本地大模型

常用命令

docker-compose logs -f server      # 查看后台日志
docker-compose logs -f dialogue    # 查看对话服务日志
docker-compose ps                  # 查看容器状态
docker-compose down                # 停止
docker-compose down -v             # 停止并删除数据
docker-compose build --no-cache    # 重新构建

更新

git pull
docker-compose build
docker-compose up -d

故障排除

  • 容器启动失败docker-compose logs <service_name> 查看日志
  • 数据库连接问题docker-compose ps mysql 确认状态为 healthy
  • WebSocket 连接失败:确认使用宿主机 IP 而非 localhost,防火墙开放 8092 端口