deepseek-harness

smanx/deepseek-harness Docker 镜像

开箱即用的DeepSeek Harness Docker镜像,内置Node反向代理,解决官方监听回环地址的限制,支持安全的局域网访问。

6 次收藏下载次数: 0状态:社区镜像维护者:smanx仓库类型:镜像最近更新:1 天前
下载命令
点击查看

deepseek-harness(Docker 镜像)

镜像地址(默认):smanx/deepseek-harness:latest(Docker Hub) 镜像地址(备用):ghcr.io/smanx/deepseek-harness:latest(GitHub Container Registry,GHCR,所有 tag 同步推送) Docker Hub 项目主页:https://hub.docker.com/r/smanx/deepseek-harness

一个开箱即用的 DeepSeek Harness(DSH) Docker 镜像,内置了 Node 反向代理,解决 DSH 官方不允许 --host 0.0.0.0、只能监听回环地址的问题,让 DSH 可以安全地通过局域网访问。

在线体验地址(Demo)

  • 体验地址:[***]
  • 登录账号 / 密码:admin / admin

⚠️ 注意: 该地址为公开地址。如需填入你自己的 API Key(如 DeepSeek 等),请谨慎填写,以免 Key 泄露。

项目介绍

  • DSH:容器内安装官方 npm 包 @deepseek-ai/dsh(https://github.com/deepseek-ai/deepseek-harness),默认监听容器内 127.0.0.1:3079(源端口);
  • Node 代理:0.0.0.0:3080(代理端口)→ 127.0.0.1:3079,对外提供 HTTP + WebSocket 转发;
  • 为什么需要代理:
    • DSH 官方禁止 --host 0.0.0.0(安全限制),只能监听回环地址;
    • 局域网 IP 页面属于浏览器非安全上下文,DSH 前端依赖的 crypto.randomUUID 不可用,代理在转发 HTML 时自动注入基于 getRandomValues 的 polyfill,否则实时通道(WS)会一直 pending;
    • 代理同时提供可选的 HTTP Basic Auth,给局域网访问加认证。

快速开始(拉取运行)

bash
# 1. 拉取镜像(默认从 Docker Hub 拉取)
docker pull docker.xuanyuan.run/smanx/deepseek-harness:latest

# 2. 启动(默认:代理对外端口 3080,数据持久化到命名卷 dsh-data)
docker run -d \
  --name dsh-harness \
  -p 3080:3080 \
  -v dsh-data:/root/.dsh \
  --restart unless-stopped \
  docker.xuanyuan.run/smanx/deepseek-harness:latest

# 3. 访问
#    本机:  http://127.0.0.1:3080/
#    局域网:http://<服务器局域网IP>:3080/

WebSocket 实时通道(/api/events.mux、/api/events.host)由代理自动转发,无需额外配置。

不同 tag 的区别

tag定位包含工具
latest精简运行镜像无(仅 Node 运行时 + DSH + 反向代理)
devtools-min-latest精简工具版,常用调试工具git、curl、wget、nano、jq、procps、ca-certificates、unzip
devtools-latest完整工具版,可在容器内开发/编译精简版全部 + vim、openssh-client、zip、htop、tmux、tree、openssl、python3、build-essential(make+g++)、bash-completion

每个 tag 都有对应的版本号 tag:latest ↔ <版本>、devtools-latest ↔ devtools-<版本>、devtools-min-latest ↔ devtools-min-<版本>。

简单示例:

bash
# 场景一:只想在浏览器里跑 DSH,不做任何调试 → 用精简的 latest
docker run -d \
  --name dsh-harness \
  -p 3080:3080 \
  -v dsh-data:/root/.dsh \
  --restart unless-stopped \
  docker.xuanyuan.run/smanx/deepseek-harness:latest

# 场景二:需要进容器排查问题(看日志、jq 处理 JSON、wget 抓包)→ 用 devtools-min-latest
docker run -d \
  --name dsh-harness \
  -p 3080:3080 \
  -v dsh-data:/root/.dsh \
  --restart unless-stopped \
  docker.xuanyuan.run/smanx/deepseek-harness:devtools-min-latest

# 场景三:要在容器里开发/编译扩展或做较重的运维(vim、python3、make 等)→ 用 devtools-latest
docker run -d \
  --name dsh-harness \
  -p 3080:3080 \
  -v dsh-data:/root/.dsh \
  --restart unless-stopped \
  docker.xuanyuan.run/smanx/deepseek-harness:devtools-latest

三个 tag 的启动命令完全一样,只是把镜像名替换成对应的 tag 即可;latest 之外的工具版镜像会比精简版略大,按需选择。

备用镜像(GHCR)

如果从 Docker Hub 拉取受限(如网络问题),可以使用备用镜像(GitHub Container Registry,tag 与 Docker Hub 完全一致):

bash
# 拉取 GHCR 上的镜像
docker pull ***-ghcr.xuanyuan.run/smanx/deepseek-harness:latest

# 启动命令与默认镜像完全一样,只需替换镜像名
docker run -d \
  --name dsh-harness \
  -p 3080:3080 \
  -v dsh-data:/root/.dsh \
  --restart unless-stopped \
  ***-ghcr.xuanyuan.run/smanx/deepseek-harness:latest

除镜像地址不同外,两个镜像的配置与使用方式完全一致,可互相替换。

配置(环境变量)

环境变量含义默认值
DSH_PORT源端口:DSH 在容器内监听(127.0.0.1)3079
PROXY_PORT代理端口:代理对外监听(局域网入口)3080
PROXY_USERNAMEBasic Auth 用户名(可选)未设置
PROXY_PASSWORDBasic Auth 密码(可选)未设置

DSH_PORT 与 PROXY_PORT 必须不同(同一端口只能被一个进程监听)。 修改 PROXY_PORT 时,-p 端口映射要对应改成 -p <宿主机端口>:<新代理端口>。

启用 Basic Auth

bash
docker run -d \
  --name dsh-harness \
  -p 3080:3080 \
  -v dsh-data:/root/.dsh \
  -e PROXY_USERNAME=yourname \
  -e PROXY_PASSWORD=yourpass \
  --restart unless-stopped \
  docker.xuanyuan.run/smanx/deepseek-harness:latest
  • 用户名和密码两个都设置才启用认证;只设置一个(或都不设置)则完全放行;
  • 认证对 HTTP 和 WebSocket 都生效,未通过认证返回 401 + WWW-Authenticate,浏览器会弹出认证框;
  • 公开静态资源 /manifest.webmanifest、/favicon.svg、/favicon.ico 不参与认证(只含应用名/图标等非敏感数据)。浏览器抓取 <link rel="manifest"> 时不会携带 Basic Auth 凭据,若强制认证,控制台会持续报 /manifest.webmanifest 401。

修改代理端口

bash
# 例如代理对外用 3088
docker run -d \
  --name dsh-harness \
  -p 3088:3088 \
  -v dsh-data:/root/.dsh \
  -e PROXY_PORT=3088 \
  --restart unless-stopped \
  docker.xuanyuan.run/smanx/deepseek-harness:latest

数据持久化

DSH 的会话/配置数据保存在容器内 /root/.dsh,上面的命令用命名卷 dsh-data 持久化:

  • docker stop/start 和容器删除后卷仍在,数据不丢;
  • 彻底清除数据:docker volume rm dsh-data(先停容器)。

停止 / 重启 / 删除

bash
docker stop dsh-harness     # 停止
docker start dsh-harness    # 再次启动
docker logs -f dsh-harness  # 查看日志
docker rm -f dsh-harness    # 删除容器(卷中的数据保留)

联系作者 / 反馈

  • 交流与 Bug 反馈:https://github.com/deepseek-ai/deepseek-harness/discussions/1762

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 deepseek-harness 镜像标签

docker pull docker.xuanyuan.run/smanx/deepseek-harness:<标签>

DockerHub 原生拉取命令

docker pull smanx/deepseek-harness:<标签>
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持99.95% SLA 保障付费会员免广告