myfire2014/dsh-admin-gateway0

dsh-admin-gateway

DeepSeek Harness 管理员验证网关插件 — 自起独立 HTTP 网关,密码登录 + 反向代理 + WebSocket/SSE 透传,防止未授权访问

AI Analysis

核心用途是为 DSH Web 服务添加安全访问控制。适合将 DSH 部署在公网或局域网共享环境,需要密码认证以保护私有服务安全的用户。

Package
dsh-admin-gateway
Version
0.1.6
Last updated
Aug 15, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:myfire2014/dsh-admin-gateway

配置

插件通过 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

配置项

字段默认值说明
port3081网关监听端口
host127.0.0.1网关监听地址,只应绑定回环(由 cloudflared 从本机连入)
upstreamhttp://127.0.0.1:3080上游 dsh web 地址
adminPassword''管理员密码;优先取环境变量 DSH_ADMIN_PASSWORD,其次取此值。两者都为空时插件启动报错
sessionTtlMs43200000 (12h)会话有效期(毫秒)
cookieNamedsh_admin_session会话 Cookie 名称
loginMaxAttempts5登录失败限速:窗口内允许的最大失败次数
loginWindowMs600000 (10min)登录失败限速窗口(毫秒)
loginLockMs600000 (10min)锁定时间(毫秒),超过 maxAttempts 后锁定该 IP
maxBodyBytes5242880 (5MB)请求体大小上限(字节)
reqLimitPerMin0可选:每 IP 每分钟最大请求数,0 表示不限制
allowedHosts[]Host 白名单(防 DNS rebinding);留空接受任意 Host
allowedIps[]可选:IP 白名单,留空不限制来源 IP

配置项

字段默认值说明
port3081网关监听端口
host127.0.0.1网关监听地址,只应绑定回环(由 cloudflared 从本机连入)
upstreamhttp://127.0.0.1:3080上游 dsh web 地址
adminPassword''管理员密码;优先取环境变量 DSH_ADMIN_PASSWORD,其次取此值。两者都为空时插件启动报错
sessionTtlMs43200000 (12h)会话有效期(毫秒)
cookieNamedsh_admin_session会话 Cookie 名称
loginMaxAttempts5登录失败限速:窗口内允许的最大失败次数
loginWindowMs600000 (10min)登录失败限速窗口(毫秒)
loginLockMs600000 (10min)锁定时间(毫秒),超过 maxAttempts 后锁定该 IP
maxBodyBytes5242880 (5MB)请求体大小上限(字节)
reqLimitPerMin0可选:每 IP 每分钟最大请求数,0 表示不限制
allowedHosts[]Host 白名单(防 DNS rebinding);留空接受任意 Host
allowedIps[]可选:IP 白名单,留空不限制来源 IP

使用步骤

  1. 设置管理员密码(推荐环境变量方式,避免明文进配置):

    # 写入 600 权限的 env 文件,例如 /etc/dsh/admin-gateway.env
    echo 'DSH_ADMIN_PASSWORD=你的强密码' > /etc/dsh/admin-gateway.env
    chmod 600 /etc/dsh/admin-gateway.env
    
  2. 配置 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=3
    
    loginctl enable-linger $USER   # 关键!否则用户服务不随开机启动
    systemctl --user daemon-reload && systemctl --user enable --now dsh.service
    
  3. Cloudflare Tunnel 只指向网关端口(示例端口 3081),dsh 本体 3080 保持仅本机可访问。完整配置见下文「通过 Cloudflare Tunnel 暴露到公网」。

  4. 访问:浏览器打开外网域名 → 未认证跳转登录页 → 输入管理员密码 → 获得 HttpOnly 会话 Cookie → 正常使用 dsh web UI 与 API。

  5. 改密码:编辑 env 文件后重启 dsh 服务(systemctl --user restart dsh.service),旧会话 Cookie 到期前仍有效。