slywalker2006/dsh-passwords6

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 Analysis

核心用途是为 DSH 提供远程访问、自动 HTTPS 证书签发、多用户权限与配额管理、沙箱限制及 SQLite 加密认证。适合需要将 DSH 部署为团队共享服务的管理员。

Package
dsh-passwords
Version
2.4.5
License
BSD-3-Clause
Last updated
Aug 16, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:slywalker2006/dsh-passwords

2. 三步完成首次配置

  1. 用平时的方式启动 dsh(dsh 的模型密钥已配好即可,直接运行 dsh web;密码门本身无需任何额外配置)——密码门会被自动拉起,不需要任何额外启动命令
  2. 浏览器直接打开 https://.sslip.io——第一次访问会自动进入「首次配置」页,输入 SETUP_KEY,创建主用户(不用手动输入 /gateway/setup
  3. 之后所有人访问 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端口被占用换端口(.envMCP_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_HOST0.0.0.0网关监听地址
MCP_GATEWAY_PORT443网关端口
MCP_GATEWAY_UPSTREAMhttp://127.0.0.1:3080dsh 网页地址(插件自动指向 dsh 实际端口,一般不用改)
MCP_GATEWAY_REDIRECT_PORT8080 端口:ACME 证书验证 + 301 跳转 443
MCP_GATEWAY_DOMAIN自己的域名;留空自动用 .sslip.io
MCP_GATEWAY_AUTO_TLS留空=自动;0 关闭(明文 HTTP,危险)
MCP_GATEWAY_ACME_EMAIL证书到期提醒邮箱(可选)
MCP_GATEWAY_ACME_STAGING1=用 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_SERVICEdsh-web重载补丁后自动重启的 dsh systemd 服务名;显式留空不自动重启
DSH_PASSWORDS_ENV_FILE手动指定 .env 路径(插件自动传,一般不用填)