🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

容器化 Web 客户端 Xidong-AI/deepseek-harness-web-docker

DeepSeek Harness
Xidong-AI3 天前有提交已提供中文文档扫描:无法判定

容器化部署 DeepSeek HarnessdshWeb 客户端:单容器内含 dsh + Caddy…

41/100
综合分
14
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/31 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/Xidong-AI/deepseek-harness-web-docker.git
按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · tool
装得上吗
作者未把包发布到 npm,只能用源码安装
插件本身没问题,是分发方式不同
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包deepseek-harness-web-docker(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 08:44:57

安全扫描自动 · 静态分析源码
v2.7.0
⚪ 扫描:无法判定尚无人工评估
展开查看扫描说明与证据 ↓

已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。

  • · 包内无可扫 JS
  • · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/11/3(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • Docker容器部署
  • BasicAuth认证
  • 配置与会话持久化

DeepSeek Harness 网页界面跑在 Docker 里,带 Basic Auth。配置和项目会话数据都会持久化。

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness Web Docker banner 容器化部署 DeepSeek Harness(dsh)Web 客户端:单容器内含 dsh + Caddy 纯反代,配置与项目/会话数据持久化,CI 自动推送 GHCR 镜像。 特性 - 单容器自包含:dsh(仅容器内 loopback)+ Caddy 纯反代(无鉴权,Host/Origin 改写为 loopback 配合 dsh 防 DNS rebinding 的 fence) - dsh 0.2.1-rc.5+ 鉴权:迁回 dsh 自身。dsh 启动时打印一次性 ?token=… URL,浏览器首次访问该 URL 后 303 跳转并 Set-Cookie,cookie 持久化在数据卷(容器重启后仍有效)。
展开完整文档(README 剩余 1 节)
DeepSeek Harness Web Docker

banner

容器化部署 DeepSeek Harness(dsh)Web 客户端:单容器内含 dsh + Caddy 纯反代,配置与项目/会话数据持久化,CI 自动推送 GHCR 镜像。

特性

- 单容器自包含:dsh(仅容器内 loopback)+ Caddy 纯反代(无鉴权,Host/Origin 改写为 loopback 配合 dsh 防 DNS rebinding 的 fence)
- dsh 0.2.1-rc.5+ 鉴权:迁回 dsh 自身。dsh 启动时打印一次性 ?token=… URL,浏览器首次访问该 URL 后 303 跳转并 Set-Cookie,cookie 持久化在数据卷(容器重启后仍有效)。Caddy basic auth 自 0.2.1-rc.5 起移除(旧版会拦截首次重定向、把 dsh 的 token URL 藏住,浏览器根本拿不到)
- 配置与项目/会话数据持久化:bind mount ./data → /home/node(整个 HOME:settings.yaml、API Key、profiles、sessions、storages,及 agent 自装工具 ~/.x-cmd.root)
- 非 root 运行(uid 1000),dsh 不直接对外暴露
- 内置健康检查:docker compose ps 直接可见服务真实健康状态(抓 dsh 一次性 token 换 cookie 后探测 dsh 响应,starting/healthy/unhealthy)
- 镜像版本可 pin:构建参数 DSH_VERSION
- CI 自动构建并推送 ghcr.io/xidong-ai/deepseek-harness-web-docker(latest + 日期时间 - 哈希 tag)
- 每个合并请求都会运行与发布前相同的构建 + 冒烟测试作为合并门禁(PR 不推送镜像);仅 push master 或手动触发才发布
- 定时任务每日检查 dsh 上游:有新版本自动提升 DSH_VERSION、构建并冒烟测试,通过则推送 master 并钩住触发 GHCR 发布,失败则创建 Issue(存在同版本未关闭 Issue 时不再自动重试,可手动触发强制重试)
- GHCR 发布可手动触发(Actions 页「Run workflow」)或由上游升级自动钩住触发(workflow_dispatch)

快速开始

方式一:使用 GHCR 镜像

git clone https://github.com/Xidong-AI/deepseek-harness-web-docker
cd deepseek-harness-web-docker
cp .env.example .env # 编辑 DEEPSEEK_API_KEY(DSH_AUTH_USER/PASSWORD 自 0.2.1-rc.5 起可选,仅回退到 ≤0.1.1 系列时需要)
docker compose up -d # 拉取 latest 镜像并启动

⚠️ 升级警告 — 升级到含 dsh 0.2.1-rc.5+ 鉴权迁移的版本时,必须先 git pull 同步 docker-compose.yml / Caddyfile / entrypoint.sh 内的 token 抓取后台任务,仅 docker compose pull 拉新 image 配旧 compose 文件会导致 healthcheck 永远 unhealthy 且 web 服务裸奔 (无鉴权)。 具体见 PR #7 的 commit message 与 DESIGN.md §10 的版本演进记录。

方式二:本地构建

docker compose up -d --build
或指定 dsh 版本:
docker build --build-arg DSH_VERSION=0.2.1-rc.5 -t dsh-web:latest .

启动后先取一次性启动 URL,任选一种方式:

docker compose logs dsh-web | grep 'dsh web:' # dsh 启动时打印
或
docker exec dsh-web cat /home/node/.dsh/web-launch-url.txt

把打印的 URL(如 http://<主机>:3080/?token=…)粘到浏览器访问。浏览器被 303 重定向到 / 并写入持久 cookie;之后访问不再需要 token。cookie 存于 ./data/.dsh/.credentials.yaml,容器重启仍有效(重新创建数据卷才需重抓 token URL)。外部端口由 DSH_WEB_PORT 控制(默认 3080)。

dsh ≤0.1.1 系列(回退情况):浏览器直接访问 http://<主机>:3080,输入 Caddy basic auth 用户名密码(.env 里的 DSH_AUTH_USER / DSH_AUTH_PASSWORD)。

环境变量(.env)

| 变量 | 必填 | 默认 | 说明 |
| DSH_AUTH_USER | 否(自 0.2.1-rc.5) | admin | 旧版 basic auth 用户名;0.2.1-rc.5+ 已忽略,仅作回退兼容位 |
| DSH_AUTH_PASSWORD | 否(自 0.2.1-rc.5) | 无 | 旧版 basic auth 明文密码(容器启动时自动生成 bcrypt 哈希);0.2.1-rc.5+ 已忽略,仅作回退兼容位 |
| DEEPSEEK_API_KEY | 是 | 无 | DeepSeek API Key(provider 经 apiKeyEnv 引用) |
| DSH_WEB_PORT | 否 | 3080 | 宿主机对外端口(与已有服务冲突时修改) |
| DSH_TRUSTED_HOSTS | 否 | 空 | 逗号分隔的额外受信 Host,注入 profile 的 cordis.patch.yml(仅当该文件不存在或仍为空模板时自动注入;已维护则跳过,请直接编辑该文件);默认靠 Caddy 改写 Host/Origin 为 loopback 已覆盖常规访问 |
| DSH_VERSION | 否(构建期) | 上游最新 | dsh 版本,修改后需 --build 重建 |

.env 含密码与 API Key,禁止提交入库。

数据持久化

所有配置与数据保存在项目目录 ./data/(git 已忽略):

- settings.yaml:dsh 配置(首启自动从默认模板生成)
- .credentials.yaml:凭据(如经 Web UI 配置的 API Key)
- profiles/web/:web profile(首启由 dsh 自动初始化)
- sessions/、storages/:会话与项目数据

删除容器不影响数据;升级后配置保留。

升级

docker compose pull && docker compose up -d # 使用 GHCR 镜像时
或本地重建:
docker compose build && docker compose up -d

容器内工具与环境

dsh 的 agent 通过 bash 工具在容器内执行命令,可用工具集 = 镜像预装 + agent 自行安装(x-cmd)。

镜像预装

- 运行时:node 22、npm、pnpm(corepack,dsh plugin 依赖)、python3、Caddy、dsh
- 编译工具链:make/gcc/g++/pkg-config(node-gyp 编译 native 模块兜底,如 dsh 插件的 node-pty)、Rust(rustup stable minimal + rustfmt + clippy)
- agent 工具:git、openssh-client、curl/wget(网络)、jq/yq(JSON/YAML)、ripgrep(搜索)、rsync(同步)、procps(进程)、zip/unzip/tar、file、dig、sqlite3、python3-pip、vim-tiny、ca-certificates

agent 自行安装(x-cmd,免 root)

镜像内置 x-cmd(首启自动安装到数据卷,幂等;阿里云 OSS 源)。dsh 会话中可直接执行:

x env use git python jq # 安装/启用工具(免 root) x env ls # 查看已启用工具 x env which jq # 查看工具路径 x jq . data.json # x 前缀调用(任何情况都可用) jq . data.json # 裸命令:已启用包已软链至 /usr/local/bin,直接可用

- 安装位置:~/.x-cmd.root(数据卷 ./data 内),容器重启/重建后保留
- x 命令与已启用工具自动软链至 /usr/local/bin(agent 的 bash 环境 PATH 固定,软链是唯一接入点)
- 新安装的工具本会话用 x <pkg> 前缀调用,容器重启后裸命令可用
- 工具源为 x-cmd 包源(阿里云 OSS,国内可达),支持版本管理(x env use node=v20)

沙箱注意:x-cmd 运行需写 ~/.x-cmd.root(数据卷内)。文件沙箱(workspace-write)仅放行会话工作区 + /tmp,该目录不可写——bwrap 沙箱下 x 启动即报 folder defined ___X_CMD_ROOT specified is not writable;本镜像无 bwrap,走 landlock 沙箱,x 能启动且只读调用可用(内置模块 x version/x passwd,已启用/已缓存包的 x <pkg> 前缀与软链裸命令),但安装/启用新包失败:x env use 报 权限不够,x env ls 静默返回空。要装新工具,agent 需申请完整权限(审批),或将工作区选在 /home/node 下。

容器内 agent 的环境指引见数据卷 AGENTS.md(dsh 会话自动加载)。

镜像已内置轻量编译工具链(make/gcc/g++)与 Rust,agent 可直接 pnpm install/cargo build 编译 native 模块与项目。仍缺的其他系统包需 root 安装,可修改 Dockerfile 的 apt-get install 行重建,或基于本镜像追加一层:

FROM ghcr.io/xidong-ai/deepseek-harness-web-docker:latest
RUN apt-get update && apt-get install -y --no-install-recommends <pkg> \
&& rm -rf /var/lib/apt/lists/*

修改密码 / 重置鉴权

dsh 0.2.1-rc.5+(当前):dsh 持久 cookie 是鉴权载体,存于 ./data/.dsh/.credentials.yaml。怀疑泄露需重置时,必须重建数据卷 — docker compose down -v && docker compose up -d。下次浏览器访问需用新的一次性 token URL(docker exec dsh-web cat /home/node/.dsh/web-launch-url.txt)。

⚠️ down -v 是破坏性操作:会同时清空 ./data/.dsh/(settings、profiles、sessions,及 agent 自装工具 ~/.x-cmd.root)。目前没有更轻量的重置路径 — entrypoint 的 token 抓取后台任务是单次执行(grep -m1),仅删 .credentials.yaml 后重启容器不会重抓 token URL。如需保留会话数据,先备份 ./data/.dsh/,重置后按需恢复子路径(如 .dsh/profiles/、.dsh/AGENTS.md)。

dsh ≤0.1.1 系列(回退):编辑 .env 的 DSH_AUTH_PASSWORD,然后 docker compose up -d(entrypoint 自动重新生成哈希)。

鸣谢

感谢 Linux.do 社区的支持。
预览分享卡片长什么样 ↓Xidong-AI/deepseek-harness-web-docker
分享 · DeepSeek Harness Hub
Xidong-AI/deepseek-harness-web-docker

容器化部署 DeepSeek HarnessdshWeb 客户端:单容器内含 dsh + Caddy…

回到顶部