slywalker2006/dsh-passwords ↗★ 6
dsh-passwords
dsh-passwords: a server-grade gateway that turns DeepSeek Harness into a multi-tenant platform — remote access + automatic HTTPS, per-subuser permissions & quotas, sandbox enforcement, first-run setup, SQLite auth with at-rest encryption, rate-limit and audit log (bilingual zh/en UI)
AI 分析
核心用途是为 DSH 提供远程访问、自动 HTTPS 证书签发、多用户权限与配额管理、沙箱限制及 SQLite 加密认证。适合需要将 DSH 部署为团队共享服务的管理员。
インストール
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:slywalker2006/dsh-passwordsドキュメント
README 全文を読む ↗2. 三步完成首次配置
- 用平时的方式启动 dsh(dsh 的模型密钥已配好即可,直接运行
dsh web;密码门本身无需任何额外配置)——密码门会被自动拉起,不需要任何额外启动命令 - 浏览器直接打开
https://.sslip.io——第一次访问会自动进入「首次配置」页,输入 SETUP_KEY,创建主用户(不用手动输入/gateway/setup) - 之后所有人访问
https://.sslip.io都会先过登录页
别忘了在防火墙和云服务商安全组里放行 80 和 443 端口(开不了 80 的机器见下面的「部署场景矩阵」)。
自动 HTTPS(不用买证书、不用配置)
- 默认自动探测服务器公网 IP,用
.sslip.io域名向 Let's Encrypt 签发 90 天证书;到期前 30 天自动续期(新证书热加载,无需重启),全程零操作 - 有自己域名:
.env加一行MCP_GATEWAY_DOMAIN=你的域名,域名 A 记录指向服务器即可,证书自动改签域名版 - 签发失败会拒绝启动(带错误码),绝不会悄悄降级成明文 HTTP;续期失败但旧证书还在有效期内时,继续用旧证书并在后台自动重试
| 错误码 | 含义 | 怎么办 |
|---|---|---|
| 30 | 证书签发失败 | 检查 80/443 是否放行(防火墙 + 云安全组都要开)、80 是否被占用、能否连通 Let's Encrypt |
| 31 | 拿不到公网 IP/域名 | 服务器没有公网 IP,或探测失败。有域名就设 MCP_GATEWAY_DOMAIN;纯内网用走 HTTP 模式 |
| 32 | 端口被占用 | 换端口(.env 的 MCP_GATEWAY_PORT)或释放被占端口 |
为什么地址里有个
.sslip.io?浏览器要求证书上的名字和网址一致,而 Let's Encrypt 不给纯 IP 签发证书,.sslip.io是免费借名服务。直接输裸 IP 的https://仍会提示主机名不匹配,属正常现象——从 80 端口入口进会自动跳到正确地址。
配置(.env 速查表)
| 变量 | 默认 | 说明 |
|---|---|---|
SETUP_KEY | 安装脚本自动生成 | 首次配置密钥;JWT 会话密钥也从它派生,安装后别删 |
MCP_JWT_SECRET | 空(从 SETUP_KEY 派生) | 会话签名密钥。生产环境建议独立设置(openssl rand -hex 32),SETUP_KEY 泄露时不连带会话伪造 |
MCP_DB_PATH | ./data/platform.db | 数据库文件(SQLite 自动建库,不需要 MySQL) |
MCP_DB_ENC_KEY | 空 | 数据加密密钥。openssl rand -hex 32 生成。设了就不能换,换钥匙旧数据全废 |
MCP_GATEWAY_HOST | 0.0.0.0 | 网关监听地址 |
MCP_GATEWAY_PORT | 443 | 网关端口 |
MCP_GATEWAY_UPSTREAM | http://127.0.0.1:3080 | dsh 网页地址(插件自动指向 dsh 实际端口,一般不用改) |
MCP_GATEWAY_REDIRECT_PORT | 80 | 80 端口:ACME 证书验证 + 301 跳转 443 |
MCP_GATEWAY_DOMAIN | 空 | 自己的域名;留空自动用 .sslip.io |
MCP_GATEWAY_AUTO_TLS | 开 | 留空=自动;0 关闭(明文 HTTP,危险) |
MCP_GATEWAY_ACME_EMAIL | 空 | 证书到期提醒邮箱(可选) |
MCP_GATEWAY_ACME_STAGING | 关 | 1=用 LE 测试环境签发(调试用,浏览器不信任) |
MCP_GATEWAY_TLS_CERT / MCP_GATEWAY_TLS_KEY | 空 | 两个都填 = 用你自己的证书(优先于自动 HTTPS) |
MCP_GATEWAY_PUBLIC_HOST | 空 | 跳转固定用的公网 IP/域名(防 Host 伪造反射) |
MCP_DSH_ROOT | 自动探测 | dsh 安装目录(@deepseek-ai/dsh 所在处),探测不到时手动指定 |
MCP_DSH_RESTART_SERVICE | dsh-web | 重载补丁后自动重启的 dsh systemd 服务名;显式留空不自动重启 |
DSH_PASSWORDS_ENV_FILE | 空 | 手动指定 .env 路径(插件自动传,一般不用填) |