如何用LiveKit部署JoyAI-VL-Interaction避免暴露十几个服务端口?完整配置指南
【免费下载链接】JoyAI-VL-InteractionJoyAI-VL-Interaction: An Open Real-time Video-Language Interaction System项目地址: https://gitcode.com/gh_mirrors/jo/JoyAI-VL-Interaction
JoyAI-VL-Interaction 是一个开源的实时视频语言交互系统,默认需要启动 webinfer、webui、ASR、TTS、background-agent 等多个服务并开放 8070、8099、8992、8994 等十几个端口。对于需要在内网之外提供服务、或者不想逐端口配置防火墙的场景,切换到LiveKit 部署可以显著减少对外暴露的端口数量。本文是一份面向新手的完整配置指南,带你快速完成 JoyAI-VL-Interaction 的 LiveKit 部署并验证服务。
为什么需要 LiveKit 部署方案?
默认架构:端口多、暴露面大
JoyAI-VL-Interaction 采用 hub-and-spoke 拓扑,围绕浏览器前端 webui 组织五个可插拔服务。默认部署下,各服务监听的端口如下:
| 端口 | 服务 | 协议 |
|---|---|---|
| 8070 | webinfer(适配器) | HTTP |
| 7060 | webinfer(主 VLM vLLM) | HTTP(内部) |
| 8065 | webinfer(摘要 VLM vLLM) | HTTP(内部) |
| 8099 | webui | HTTPS + WebSocket |
| 8994 | asr(适配器) | HTTP + WebSocket |
| 8993 | asr(vLLM ASR) | HTTP(内部) |
| 8992 | tts(适配器) | HTTP + WebSocket |
| 8991 | tts(vLLM-Omni) | HTTP + WebSocket(内部) |
| 8079 | background-agent | HTTP |
可以看到,如果要把整套系统开放给局域网外的用户,就需要逐个开放或映射这些端口,既繁琐又有安全风险。完整端口映射说明可参考官方架构文档:doc/architecture.zh-CN.md。
LiveKit 思路:把媒体流收敛到单一信令通道
LiveKit 是一个开源的实时音视频基础设施。JoyAI-VL-Interaction 项目从2026-07-21起官方支持 LiveKit 部署(见 README 最新动态),其核心收益就是:避免对外开放大量服务端口——视频、音频等媒体流通过 LiveKit 的 WebRTC 通道传输,浏览器只需连接 LiveKit 的单一入口,其余模型服务端口可以完全保留在内网。
官方提示:LiveKit 功能位于独立的
livekit分支,该分支可能不会长期维护,生产使用前请评估。
LiveKit 部署完整配置步骤
第一步:克隆仓库并切换到 livekit 分支
git clone https://gitcode.com/gh_mirrors/jo/JoyAI-VL-Interaction cd JoyAI-VL-Interaction git switch livekit注意使用git switch livekit(等价于git checkout livekit)切换到 LiveKit 部署分支,而不是主分支。
第二步:安装依赖与下载模型
LiveKit 分支依赖主分支的安装体系,前置条件为 Linux + NVIDIA GPU(CUDA 12.x、驱动 535+、Python 3.12)。在仓库根目录执行:
# 安装核心依赖(webinfer + webui) ./install/install.sh --with-all # 安装 ASR/TTS 运行时(可选,启用语音输入输出) ./install/install-audio-runtime.sh --all # 下载所有模型权重 ./install/download-models.sh --all默认模型路径参考 install 目录说明:主交互模型位于/tmp/models/jdopensource/JoyAI-VL-Interaction,摘要模型为/tmp/models/Qwen3-VL-4B-Instruct,另有可选的 ASR / TTS 模型。
第三步:启动服务并验证
# 最小部署:仅视频推理 + WebUI ./services/scripts/run.sh minimal # 完整部署:包含 ASR、TTS、background-agent ./services/scripts/run.sh all服务编排入口位于 services/scripts/run.sh,只有最终的 WebUI 进程启动后,才认为启动完成。随后做健康检查:
curl http://127.0.0.1:8070/health # webinfer curl http://127.0.0.1:8994/health # ASR(可选) curl http://127.0.0.1:8992/health # TTS(可选) curl http://127.0.0.1:8079/health # background-agent(可选)浏览器访问https://127.0.0.1:8099(接受自签名证书警告),即可看到实时交互界面。更多端口、GPU 分配与配置项说明详见完整部署指南。
第四步:只对外暴露 LiveKit 入口
LiveKit 部署模式下,对外只需保证 LiveKit Server 的信令端口可达(WebRTC 媒体通过 UDP 打洞/转发),而 8070、7060、8065、8991–8994、8079 等模型与适配器端口全部保留在宿主机内网,无需在防火墙中逐一开放。
💡 如果不想接触裸端口,也可以直接使用仓库自带的 Docker Compose 方案(container/README.zh-CN.md)在单机上先跑通全部服务,再按 LiveKit 分支说明做外部接入。
常见问题与排坑建议
| 现象 | 排查方向 |
|---|---|
| webinfer 返回 502 | vLLM 后端(7060/8065)尚未就绪,等待模型加载完成 |
| 模型从不说话 | FORCE_SILENCE_BEFORE_QUERY=true会在无用户提问时静默,发送一个 prompt 或改为false |
| 浏览器无法访问摄像头 | WebRTC 需要 HTTPS,请通过https://访问并信任自签名证书 |
| ASR/TTS 连不上 | 可选服务必须在 WebUI之前启动,启动后重启 WebUI |
完整的启动与运行问题清单请参阅故障排查指南。
总结:3 个要点
- 一条命令切换:
git switch livekit即可启用 LiveKit 部署模式,避免对外开放十几个服务端口。 - 端口收敛:媒体流走 LiveKit 单一 WebRTC 入口,模型服务端口全部保留内网,防火墙规则大幅简化。
- 分支需留意:LiveKit 功能位于独立分支且可能不长期维护,重要环境建议做好备份与版本锁定。
📌 参考资料
- 完整部署指南:doc/getting_started.zh-CN.md
- 系统架构与端口映射:doc/architecture.zh-CN.md
- 故障排查:doc/troubleshooting.zh-CN.md
- Docker 部署:container/README.zh-CN.md
【免费下载链接】JoyAI-VL-InteractionJoyAI-VL-Interaction: An Open Real-time Video-Language Interaction System项目地址: https://gitcode.com/gh_mirrors/jo/JoyAI-VL-Interaction
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考