boe1900/owndsh
[INPUT]: 依赖控制台共享 APNG 品牌图标、公开 GHCR next 镜像、根 Docker Compose、npm next 插件、Harness 官方 profile 与 OwnDsh 当前产品边界。 [OUTPUT]: 提供品牌展示、Compose 自托管、管理员初始化、员工插件和 Pake 客户端、更新、排障与静态官网发布入口。 [POS]: 项目公开用户入口;优先让管理员启动 OwnDsh,让员工连接既有 DeepSeek Harness。 [PROTOCOL]: 变更时更新此头部,然后检查 CLAUDE.md
catalog descriptioncatalog 简介 / catalog description:The Self-Hosted Control Plane for DeepSeek-Harness
Project Overview项目介绍
OwnDsh is a self-hosted team control plane for DeepSeek Harness. It lets admins centrally manage team identities, models, API keys, permissions, quotas and enterprise plugins, while employees connect via official DeepSeek Harness clients to access authorized resources. It is for enterprises wanting to self-host their DeepSeek Harness control plane. Currently pre-release, only next-tagged artifacts are available, no stable latest release.
OwnDsh 是 DeepSeek Harness 的自托管团队控制面,支持管理员统一管理团队身份、模型、API 密钥、权限、配额与插件,供企业员工使用官方 Harness 客户端连接使用。当前为预发布版本,仅提供 next 标签的镜像和插件,无稳定 latest 版本。
请帮我了解并安装插件:【owndsh】【https://github.com/boe1900/owndsh】
Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。
Or use CLI install (for developers)或使用命令行安装(适合开发者)
CLI Install命令行安装
dsh plugin --profile web add --ignore-scripts owndsh-plugin@next
把 boe1900/owndsh 加入你的 DSH 配置(web profile)即可启用。
READMEREADME

OwnDsh
OwnDsh · Truly Own Your DeepSeek-Harness.
The Self-Hosted Control Plane for DeepSeek-Harness.
真正拥有属于你的 DeepSeek-Harness。
DeepSeek-Harness 的私有化控制面。
OwnDsh 是 DeepSeek Harness 的自托管团队控制面。管理员统一管理身份、模型、API Key、访问权限、配额、插件、设备和审计;员工继续在自己的 DSH Desktop 或 Harness Web 中工作。
OwnDsh 不 fork 官方 Harness Web UI,不接管员工工作区,也不远程执行员工工具。员工可以安装标准 Harness 插件 owndsh-plugin,或使用预装插件和运行环境的 OwnDsh Desktop,客户端由独立仓库构建 macOS Intel、Apple Silicon 与 Windows x64 安装包。
当前处于预发布阶段。Docker 镜像只发布
next,npm 插件只发布next,不会更新latest。
能力
| 使用者 | 能力 |
|---|---|
| 平台管理员 | 自托管控制台、LOCAL/LDAP/OIDC 身份、成员与设备治理 |
| 模型管理员 | 集中保管供应商 API Key,管理模型、模型集、授权、Token、RPM 与并发 |
| 插件管理员 | 上传、签名、发布企业插件,设置可见范围并查看客户端状态 |
| 审计员 | 查询管理操作、模型调用、用量与 request ID 关联记录 |
| 员工 | 用企业账号登录 Harness,使用获准模型并自主安装企业插件,无需持有上游 API Key |
Docker Compose 部署
当前镜像目标为 Linux amd64。准备 Docker Engine、Docker Compose 2.20.3+ 和 Git。
1. 启动
git clone https://github.com/boe1900/owndsh.git
cd owndsh
docker compose up -d --wait
默认访问 http://localhost:8080,初始账号 admin,密码 owndsh。第一次登录会强制设置符合安全策略的正式密码。数据库与账号由 PostgreSQL 创建,全部建表、种子数据和后续升级由 Server 内置 Flyway 自动执行,无需额外 SQL 文件。
需要让其他设备访问或覆盖默认凭据时,再创建 .env:
cp .env.example .env
OwnDsh 只有一个公开地址配置。默认由 Compose 生成为 http://localhost:8080;需要让局域网设备访问时,把它改成部署机的实际 IP 和发布端口,例如:
ENT_PUBLIC_BASE_URL=http://192.168.1.50:8080
其中 192.168.1.50 替换为运行 Docker Compose 的机器 IP;若修改 OWNDSH_HTTP_PORT,这里使用相同端口。管理端回调会自动派生为 <ENT_PUBLIC_BASE_URL>/enterprise/auth/callback,不需要单独配置。
生产环境应由现有 Nginx、Ingress 或负载均衡提供可信 HTTPS,并把这个值改成外部 HTTPS 地址。OwnDsh Compose 只开放 Console 的 HTTP 端口,不直接管理证书。.env.example 中的数据库、Redis、JWT、master key 是开箱测试默认值;公网部署必须通过同名环境变量覆盖。
2. 可选:设置初始密码
Compose 默认使用下面的一次性管理员账号和密码;创建 .env 后可以自由修改:
ENT_BOOTSTRAP_ADMIN_USERNAME=admin
ENT_BOOTSTRAP_ADMIN_PASSWORD=owndsh
第一次登录会强制设置符合安全策略的正式密码。
3. 管理服务
docker compose up -d --wait
docker compose ps
docker compose logs -f server
Server 日志仅输出到 stdout/stderr,由 Docker/K8s 与日志平台采集和轮转,不需要应用日志卷。
打开 ENT_PUBLIC_BASE_URL 配置的地址,以配置的初始账号和密码登录。数据库 marker 保证初始化只执行一次;首次改密后,默认初始密码立即失效。
4. 配置企业
- 在“成员”中配置 LOCAL、LDAP 或 OIDC 身份来源。
若 LDAP 服务只提供明文
ldap://,在身份源表单填写ldap://...;TLS 目录填写ldaps://...。 - 在“模型”中添加供应商、API Key 和受管模型。
- 创建模型集,并向全部成员、用户组或指定成员授权。
- 按需配置 Token 配额、RPM 和并发限制。
- 按需上传、发布企业插件,并设置对全部或指定成员可见。
- 邀请员工安装 OwnDsh 并登录;企业插件由员工在市场自行选择安装。
员工设备不会得到供应商 API Key;每次模型请求都由 OwnDsh 网关重新校验身份、授权和额度。
安装员工插件
使用独立仓库构建的 OwnDsh Desktop 时,直接打开应用并填写 Server 地址即可,无需另装 Node、pnpm 或插件。下面的命令用于已有 Harness/社区 Desktop 的设备。
先确保 pnpm 是 PATH 中可直接执行的命令。Harness 当前基线使用 pnpm 11.7.0:
corepack enable
corepack install --global pnpm@11.7.0
pnpm --version
安装 npm 测试版到需要使用的 profile:
# Harness Web
dsh plugin --profile web add --ignore-scripts owndsh-plugin@next
dsh --profile web
# DSH Desktop
dsh plugin --profile desktop add --ignore-scripts owndsh-plugin@next
从 DeepSeek Harness 源码运行 CLI 时:
pnpm --dir /path/to/deepseek-harness dsh \
plugin --profile web add --ignore-scripts owndsh-plugin@next
安装完成后重启对应 profile。OwnDsh 全屏页面会要求填写管理员提供的 OwnDsh Server HTTP(S) 地址;保存后完成企业登录即可使用管理员授权的模型。
Server 地址和 Refresh Token 由 Harness Host 的官方 settings/credentials 服务持久化。Access Token 只存在 Host 内存,浏览器页面不会读取或保存 Token;正常重启会静默恢复登录。主动退出、设备撤销、成员停用、改密或 30 天有效期结束后需要重新登录。
「OwnDsh 设置 → 插件」展示管理员发布且对本人可见的插件,支持搜索、详情、自主安装、更新和卸载。打开设置或刷新不会安装插件;其他设备独立选择。服务端签名(ENT_PLUGIN_SIGNING_ENABLED=false)和客户端验签(verifyPluginSignatures=false)默认关闭,无需配置公私钥;大小、SHA-256、兼容性和下载权限仍会校验。需要验签时可开启 verifyPluginSignatures 并配置部署专属公钥,详见信任配置。从旧版迁移时必须更新员工 OwnDsh 插件,仅更新后台无法改变旧客户端的公钥要求或自动安装行为。
OwnDsh 闲置时不建立企业 SSE、不定时拉配置或提前续期。用户请求时按需续期,服务端认证 401 最多续期重试一次;Refresh Token 失效或设备撤销时显示登录门禁,重新登录后可继续对话。网络暂不可达保留凭据,可再次发起请求或在 OwnDsh 设置点击刷新;模型与插件目录在打开设置或主动刷新时更新。
更新
更新服务端测试镜像:
docker compose pull
docker compose up -d --wait
更新员工插件:
dsh plugin --profile web remove owndsh-plugin
dsh plugin --profile web add --ignore-scripts owndsh-plugin@next
把 web 换成实际使用的 profile。移除后重新安装可以避免 pnpm 复用同版本缓存。
常见问题
pnpm not found on PATH
执行上面的 corepack enable 和 corepack install --global pnpm@11.7.0,直到直接运行 pnpm --version 成功。只写 corepack pnpm ... 不够,因为 dsh plugin 的子进程仍需要从 PATH 找到 pnpm。
保存 Server 后显示平台不可用
从员工设备访问 <Server地址>/healthz,再检查 DNS、防火墙、反向代理和 TLS 证书。Server 地址必须是完整 HTTP(S) origin,不能附带 API 路径。
登录后看不到模型
确认供应商和模型都已启用,并且该员工、员工所在用户组或全部成员拥有对应模型访问授权。配额策略不会代替访问授权。
重启后要求重新登录
确认启动的是原 profile,且它的官方 credentials provider 可写。主动退出、Server 地址切换、设备/成员撤销和 30 天有效期结束都会使长期会话失效。
GHCR 镜像无法拉取
仓库维护者首次发布后需要把 owndsh-server 和 owndsh-console 两个 GHCR package 设为 Public。部署机无需 GitHub Token。
运维与开发
本地开发体验可运行 ./scripts/local-demo.sh。该脚本要求同级存在锁定的 deepseek-harness checkout,并使用隔离状态启动正式 Server 和 Harness。
上游与声明
OwnDsh 是独立项目,不隶属于 DeepSeek AI 或 Anywhere Labs。DeepSeek Harness 与 DSH Desktop 的名称、代码和商标归各自所有;OwnDsh 只通过公开插件扩展点集成。
saya-ch/dsh-mobile
liguobao/ds-harness-remote
summer1238/dsh-remote-web-gateway
ZSeven-W/rish-app
HsiangNianian/dsh-auto-continue
sorsama/deepseek-harness-mobile
lsz-asd/dsh-plugin-session-delete
Blank-not-black/dsh-Remote