Expose trusted-proxy parsing with a private_ranges fallback so existing installs without the new environment key upgrade safely. Refresh the bilingual authentication, rate-limit, persistence, and workspace documentation.
DeepSeek Harness Workstation combines DeepSeek Harness, browser-based form authentication, persistent development directories, and a complete multi-language toolchain for deployment behind a 1Panel OpenResty HTTPS reverse proxy.
DeepSeek Harness Workstation combines DeepSeek Harness, browser-based form authentication, proxy-aware origin-side login rate limiting, persistent development directories, and a complete multi-language toolchain for deployment behind a 1Panel OpenResty HTTPS reverse proxy.
## Features
- Password-manager-compatible browser login
- Built-in per-client login limits with trusted-proxy parsing
- DeepSeek Harness Web UI, terminals, sessions, tools, and WebSockets
- Persistent state, user home, and workspace directories
- Docker CLI, Compose, and Buildx with host daemon access disabled by default
The local Caddy account database stores a bcrypt password hash and keeps its JWT signing key under `/data/auth`. To support the 1Panel password form, the submitted plaintext password remains in the panel-generated `.env` and Docker container configuration, where host root, 1Panel, and Docker administrators can read it; the image removes the value from the DSH and Caddy child-process environments after startup.
镜像不额外内置登录限速插件。公网部署请在 Cloudflare、1Panel WAF 或外层 OpenResty 对 `/auth/login` 和 `/auth/sandbox/*` 设置限速;使用基于客户端 IP 的规则前,请先正确配置可信真实客户端 IP 转发链。
镜像会按解析后的客户端 IP 对用户名阶段 POST 限制为每分钟 30 次,对密码阶段 POST 限制为每 10 分钟 10 次;被拒绝的请求返回 HTTP 429 和 `Retry-After`。这些额度是镜像固定值,修改它们需要自定义构建镜像。仍建议在 Cloudflare、1Panel WAF 或外层 OpenResty 保留同类限速,作为纵深防御。
The image does not add a separate login rate-limit plugin. For public deployments, rate-limit `/auth/login` and `/auth/sandbox/*` in Cloudflare, the 1Panel WAF, or the outer OpenResty layer, and configure the trusted real-client-IP chain before applying IP-based limits.
The image limits username-stage POSTs to 30 per minute and password-stage POSTs to 10 per 10 minutes for each resolved client IP, returning HTTP 429 with `Retry-After` when blocked. `CADDY_TRUSTED_PROXIES` defaults to `private_ranges` for the documented 1Panel/OpenResty path; use `none` only for direct client connections, and configure every trusted hop or normalize the client IP when a CDN is present. Keep matching limits in the outer WAF or reverse proxy as defense in depth.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.