myfire2014/dsh-admin-gateway ↗★ 0
dsh-admin-gateway
DeepSeek Harness 管理员验证网关插件 — 自起独立 HTTP 网关,密码登录 + 反向代理 + WebSocket/SSE 透传,防止未授权访问
AI 分析
核心用途是为 DSH Web 服务添加安全访问控制。适合将 DSH 部署在公网或局域网共享环境,需要密码认证以保护私有服务安全的用户。
インストール
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:myfire2014/dsh-admin-gatewayドキュメント
README 全文を読む ↗配置
插件通过 cordis.patch.yml(或 profile 的配置层)注入,示例:
- insert:
- id: admin-gateway
name: dsh-admin-gateway
config:
port: 3081
upstream: 'http://127.0.0.1:3080'
allowedHosts:
- dsh.example.com
sessionTtlMs: 43200000
maxBodyBytes: 5242880
配置项
| 字段 | 默认值 | 说明 |
|---|---|---|
port | 3081 | 网关监听端口 |
host | 127.0.0.1 | 网关监听地址,只应绑定回环(由 cloudflared 从本机连入) |
upstream | http://127.0.0.1:3080 | 上游 dsh web 地址 |
adminPassword | '' | 管理员密码;优先取环境变量 DSH_ADMIN_PASSWORD,其次取此值。两者都为空时插件启动报错 |
sessionTtlMs | 43200000 (12h) | 会话有效期(毫秒) |
cookieName | dsh_admin_session | 会话 Cookie 名称 |
loginMaxAttempts | 5 | 登录失败限速:窗口内允许的最大失败次数 |
loginWindowMs | 600000 (10min) | 登录失败限速窗口(毫秒) |
loginLockMs | 600000 (10min) | 锁定时间(毫秒),超过 maxAttempts 后锁定该 IP |
maxBodyBytes | 5242880 (5MB) | 请求体大小上限(字节) |
reqLimitPerMin | 0 | 可选:每 IP 每分钟最大请求数,0 表示不限制 |
allowedHosts | [] | Host 白名单(防 DNS rebinding);留空接受任意 Host |
allowedIps | [] | 可选:IP 白名单,留空不限制来源 IP |
配置项
| 字段 | 默认值 | 说明 |
|---|---|---|
port | 3081 | 网关监听端口 |
host | 127.0.0.1 | 网关监听地址,只应绑定回环(由 cloudflared 从本机连入) |
upstream | http://127.0.0.1:3080 | 上游 dsh web 地址 |
adminPassword | '' | 管理员密码;优先取环境变量 DSH_ADMIN_PASSWORD,其次取此值。两者都为空时插件启动报错 |
sessionTtlMs | 43200000 (12h) | 会话有效期(毫秒) |
cookieName | dsh_admin_session | 会话 Cookie 名称 |
loginMaxAttempts | 5 | 登录失败限速:窗口内允许的最大失败次数 |
loginWindowMs | 600000 (10min) | 登录失败限速窗口(毫秒) |
loginLockMs | 600000 (10min) | 锁定时间(毫秒),超过 maxAttempts 后锁定该 IP |
maxBodyBytes | 5242880 (5MB) | 请求体大小上限(字节) |
reqLimitPerMin | 0 | 可选:每 IP 每分钟最大请求数,0 表示不限制 |
allowedHosts | [] | Host 白名单(防 DNS rebinding);留空接受任意 Host |
allowedIps | [] | 可选:IP 白名单,留空不限制来源 IP |
使用步骤
-
设置管理员密码(推荐环境变量方式,避免明文进配置):
# 写入 600 权限的 env 文件,例如 /etc/dsh/admin-gateway.env echo 'DSH_ADMIN_PASSWORD=你的强密码' > /etc/dsh/admin-gateway.env chmod 600 /etc/dsh/admin-gateway.env -
配置 dsh 启动(systemd 用户服务示例):
# ~/.config/systemd/user/dsh.service [Service] Type=simple EnvironmentFile=/etc/dsh/admin-gateway.env Environment=PATH=/path/to/npm-global/bin:/usr/local/bin:/usr/bin:/bin ExecStart=/path/to/dsh web Restart=always RestartSec=3loginctl enable-linger $USER # 关键!否则用户服务不随开机启动 systemctl --user daemon-reload && systemctl --user enable --now dsh.service -
Cloudflare Tunnel 只指向网关端口(示例端口 3081),dsh 本体 3080 保持仅本机可访问。完整配置见下文「通过 Cloudflare Tunnel 暴露到公网」。
-
访问:浏览器打开外网域名 → 未认证跳转登录页 → 输入管理员密码 → 获得 HttpOnly 会话 Cookie → 正常使用 dsh web UI 与 API。
-
改密码:编辑 env 文件后重启 dsh 服务(
systemctl --user restart dsh.service),旧会话 Cookie 到期前仍有效。