← 返回列表
未验证
一键部署带语音与多模型的持久化容器环境
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/26 · 已提供中文文档
DeepSeek Harness 临时工作区、多模态模型、实时语音和会话助手的持久化 Docker 栈
综合分
27.8
GitHub 分
27.8
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add AlexKaiqi/dsh-voice-stack-docker该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
DSH Voice Stack Docker 一个预装以下四个插件的 DeepSeek Harness Web 镜像: - dsh-temporary-workspace@0.1.0-rc.5 - dsh-multi-model-provider@0.1.0-rc.15 - dsh-realtime-voice@0.3.2 - dsh-session-assistant@0.4.5 镜像固定使用 @deepseek-ai/dsh@0.1.1-rc.2。插件程序随镜像发布;用户设置、凭据、Session、附件、临时工作区和普通工作文件保存在 Docker named volumes 中,容器重建不会丢失。 本地运行 cp .env.example .env 编辑 .env,设置一个长随机密码 docker compose up --build -d docker compose ps 打开 ,输入 .env 中的用户名和密码。所有 Provider 都从原生“模型”设置进入:火山方舟使用 llm-pi-ai,豆包 Realtime Duplex 使用 dsh-realtime-voice,不会再出现第二套 Provider 页面。 当前固定的 DSH rc 版本还没有 Provider 编辑器扩展槽,因此镜像构建时会运行 patch-models-ui.mjs,只为原生编辑器增加 realtime-speech 布局和镜像内 Provider 默认值。脚本使用精确标记并在宿主包结构变化时直接让构建失败,避免静默生成错版 UI。 查看日志或停止: docker compose logs -f dsh docker compose down docker compose down 不删除持久卷。只有显式添加 --volumes 才会删除用户的 DSH 数据和 Workspace。 数据卷 Compose 延续原有的两个命名卷,升级现有实例不需要迁移数据: | Compose volume | 容器目录 | 内容 | | --- | --- | --- | | dsh-home | /home/node/.dsh | Profile、设置、凭据、Session、附件和 Workspace 注册信息 | | dsh-workspace | /workspace | 容器默认工作目录及普通 Agent 工作文件 | 临时工作区默认位于 /home/node/.dsh/temporary-workspaces/workspace-*,因此由 dsh-home 一起持久化,不需要第三个卷。把运行状态与普通工作文件分卷,可以分别控制备份频率和容量;恢复时应把两者视为同一个实例的一组数据。 实际卷名通常带 Compose project 前缀。可这样查看: docker volume ls | grep dsh-voice-stack-docker docker volume inspect dsh-voice-stack-docker_dsh-home docker volume inspect dsh-voice-stack-docker_dsh-workspace docker system df -v 备份整个实例的两个卷: docker compose down docker run --rm \ -v dsh-voice-stack-docker_dsh-home:/source/dsh:ro \ -v dsh-voice-stack-docker_dsh-workspace:/source/workspace:ro \ -v "$PWD:/backup" \ alpine tar czf /backup/dsh-voice-stack-backup.tgz -C /source . 恢复时应使用空卷,并在容器停止状态下把归档中的 dsh/ 和 workspace/ 分别恢复到对应卷;不要覆盖正在运行的实例。如果 Compose project 名不同,先用 docker volume ls 查询实际卷名。 公网部署 DSH 本身只监听容器内部的 127.0.0.1:3081;同一镜像内的非 root Nginx 在 PORT 上提供 Basic Auth 和 WebSocket 反向代理。生产环境还必须由 Railway、Coolify、Caddy、Traefik 等提供 HTTPS。麦克风依赖浏览器安全上下文,普通公网 HTTP 不可用。 把公开域名的 authority(不含协议和路径)加入 DSH_TRUSTED_HOSTS: DSH_TRUSTED_HOSTS=bot.example.com docker compose up -d 多个 authority 用逗号分隔,例如 bot.example.com,bot.example.com:443。反向代理必须保留原始 Host、Origin 和 WebSocket Upgrade;实时语音插件会执行同源校验。 Railway/Coolify 中需要持久化两个目录: | 容器目录 | 内容 | | --- | --- | | /home/node/.dsh | DSH 配置、凭据、Session、附件与临时工作区 | | /workspace | 普通工作文件 | 平台端口设置为 3080。外部 / 需要 Basic Auth;镜像自身的 Docker Healthcheck 会直接检查仅容器内部可见的 DSH 端口。不要向容器挂载 /dev/snd:麦克风由用户浏览器采集,不是由云服务器声卡采集。 每用户一个实例 所有用户可以复用同一镜像,但每个用户必须使用自己的一组持久卷。不要让不同用户共享 /home/node/.dsh 或 /workspace。 插件版本在镜像构建时固定。发布升级时构建新的镜像 tag;先用测试实例验证持久数据兼容性,再逐个替换用户容器。容器首次启动时会把预装 Web Profile 种到空卷;已有数据卷只同步镜像托管的四个插件,不覆盖设置、凭据、Session 或工作文件。 自定义运行 默认命令等价于: dsh --profile web --host 127.0.0.1 --port 3081 --no-open 可覆盖: - PORT:监听端口,默认 3080 - DSH_AUTH_USERNAME:公网 Basic Auth 用户名,默认 dsh - DSH_AUTH_PASSWORD:公网 Basic Auth 密码,必填且不会写入镜像 - DSH_HOST:DSH 内部监听地址,固定建议 127.0.0.1 - DSH_INTERNAL_PORT:DSH 内部端口,默认 3081 - DSH_STARTUP_TIMEOUT:DSH 启动就绪等待秒数,默认 60 - DSH_PROFILE:Profile 名,默认 web - DSH_TRUSTED_HOSTS:允许的公网 authority,逗号分隔 传入其他命令时,入口脚本仍会先初始化空的持久卷: docker compose run --rm dsh dsh --profile web --dump-config
同作者(AlexKaiqi)的其他插件
扫码进群