dsh web behind Nginx: HTTPS, WebSocket and DSH plugin

Configuration & UsagePublished 2026-10-17Author: DeepSeek Plugin Market
DeepSeek Harnessdsh webNginxCaddyHTTPSreverse proxy
Put DeepSeek Harness dsh web behind a reverse proxy: WebSocket upgrade, no buffering and long timeouts, with Nginx and Caddy configs plus auth layers.

Configuring a reverse proxy for DeepSeek Harness dsh web is not hard; forwarding three things correctly is: the WebSocket upgrade, unbuffered streaming, and long timeouts. Miss one and the page loads but nothing works — the channel fails, data never refreshes, or output stops halfway, with errors hiding in the browser console and proxy logs. Nginx and Caddy both satisfy the requirements, and a tunnel avoids opening ports at all.

Three hard requirements for proxying DeepSeek Harness dsh web

Bottom line: forward the upgrade headers, disable response buffering, and use long timeouts. Any one missing produces a page that loads but does not work.

  1. WebSocket upgrade: forward Upgrade and Connection, and set the proxy HTTP version to 1.1. Otherwise the persistent connection fails.
  2. No response buffering: disable it (or minimize it) so server chunks reach the browser immediately instead of looking stuck.
  3. Long timeouts: raise read and write timeouts so idle sessions survive and long tasks are not cut off.
  4. Forward the original source too: pass X-Forwarded-* headers so logs and source restrictions see real clients.

Option A: Nginx configuration for DeepSeek Harness dsh web

Bottom line: the key is two upgrade headers, one buffering switch and three timeouts. Everything else is a normal site configuration.

nginx
server {
  listen 443 ssl;
  server_name dsh.example.com;

  ssl_certificate     /etc/ssl/dsh/fullchain.pem;
  ssl_certificate_key /etc/ssl/dsh/privkey.pem;

  location / {
    proxy_pass http://127.0.0.1:3080;      # the actual dsh web port
    proxy_http_version 1.1;                # requirement 1: persistent connections need 1.1
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_buffering off;                   # requirement 2: do not buffer streaming output
    proxy_read_timeout 3600s;              # requirement 3: long timeouts
    proxy_send_timeout 3600s;
  }
}
  1. Point proxy_pass at your real port (confirm flag names with dsh web --help).
  2. Verify the upgrade by checking the browser connection panel and looking for 101 Switching Protocols in the access log.
  3. Force HTTPS with a separate port-80 redirect to 443.
  4. Keep a rollback point by leaving the previous configuration commented in place.

Option B: Caddy configuration for DeepSeek Harness dsh web

Bottom line: Caddy buys a short configuration and automatic certificates. Set the hostname and let defaults handle the rest.

caddyfile
dsh.example.com {
  reverse_proxy 127.0.0.1:3080
}
  1. Defaults cover the hard requirements: Caddy reverse_proxy handles connection upgrades and streaming without extra headers.
  2. Automatic certificate issuance and renewal once the hostname resolves.
  3. Add directives only when needed — timeouts, source restrictions, compression policy.
  4. Trade-off: defaults do a lot for you, which means debugging requires understanding them. Note the important defaults in comments.

Option C: tunnel for DeepSeek Harness without open ports

Bottom line: keep the service on loopback and let a tunnel client connect outward. You avoid a listening port at the cost of latency and third-party traffic.

  1. Self-hosted relay: more controllable, appropriate when sessions are sensitive; you maintain relay certificates and access control.
  2. Commercial tunnel: faster to stand up; traffic passes through a third party, so evaluate whether that is acceptable.
  3. Add access control either way — a tunnel provides reachability, not authorization.
  4. Common strong pattern: a tunnel entry in front of a reverse proxy that enforces authentication and source restrictions.

Subpath hosting pitfalls for DeepSeek Harness dsh web

Bottom line: prefer a subdomain. If a subpath is unavoidable, plan for three rewrites: assets, API prefixes and redirects.

  1. Static assets loaded from the root return 404 under /dsh/ and the page goes blank.
  2. API and realtime prefixes must follow the subpath or they fall outside it.
  3. Redirect and callback links built from absolute paths leave the subpath.
  4. Recommendation: use a subdomain such as dsh.example.com — clear semantics, zero rewriting. Reserve subpath hosting for cases where a subdomain is unavailable, and budget debugging time.

Authentication and exposure for DeepSeek Harness dsh web

Bottom line: do not rely on one layer. Combine source restriction, access authentication and enforced HTTPS.

  1. Source restriction: allow only specific ranges, or require VPN before access.
  2. Access authentication: basic auth at the proxy or an identity gateway. Local convenience is not internet security.
  3. Enforce HTTPS: redirect plaintext so session content never travels unencrypted.
  4. Shrink the exposure surface: turn the proxy off when remote access is not needed. Many incidents start as a temporary proxy that was never removed.

DSH plugin troubleshooting through a reverse proxy

Bottom line: separate "cannot connect" from "connects but misbehaves." The first is headers and protocol version; the second is buffering and timeouts.

  1. Cannot connect — check Upgrade and Connection headers, HTTP/1.1, and whether the log shows 101.
  2. Connects but output stalls — check that buffering is off.
  3. Long tasks cut off — check read and write timeouts.
  4. Blank page or 404 assets — suspect subpath hosting, which is why a subdomain is recommended.
  5. Plugin market will not load — open the DSH Plugin Hub page through the proxy as a quick end-to-end check.
  6. Repair status, stated honestly: these Nginx and Caddy configurations follow each project's official documentation for WebSocket proxying and reverse proxying; they are not endorsed for any specific DeepSeek Harness version. Confirm dsh web port and bind flags with dsh web --help, and validate locally before deploying.

Sources: apps/cli/README.md, nginx Docs · WebSocket proxying, Caddy Docs · reverse_proxy.

FAQ

What is the most commonly missed setting when proxying DeepSeek Harness dsh web through Nginx?

The WebSocket upgrade headers are what DeepSeek Harness dsh web proxies most often miss. dsh web keeps a long-lived connection between frontend and backend, so a proxy that does not forward Upgrade and Connection nor declare HTTP/1.1 breaks that connection. The page may load while data never refreshes or the client reports a connection error. Next most common is response buffering, which makes streaming output look stuck.

Can I host DeepSeek Harness dsh web under a subpath such as /dsh/?

In DeepSeek Harness, it is possible but costs more than using a subdomain: static asset paths, API prefixes and absolute links may all break, and debugging rewritten paths is slow. Prefer a dedicated subdomain such as dsh.example.com, which needs no rewriting. Consider subpath hosting only when a subdomain is impossible.

Should I use Caddy or Nginx as the DeepSeek Harness reverse proxy?

In DeepSeek Harness, for short configuration and automatic HTTPS, use Caddy: a hostname plus one reverse_proxy line, with certificates issued and renewed automatically. For fine-grained control and team familiarity, use Nginx, where timeouts, buffering and headers are tuned individually. Both can satisfy the three hard requirements; they differ in maintenance cost.

How can I reach DeepSeek Harness remotely without opening a port on the firewall?

In DeepSeek Harness, use a tunnel: keep dsh web on loopback and let a tunnel client initiate outbound connections. The trade-off is that traffic passes through a third party or a self-hosted relay, so assess compliance for sensitive sessions. A self-hosted relay is more controllable; a commercial tunnel is quicker to set up.

Do I still need authentication in front of DeepSeek Harness dsh web after adding a proxy?

Yes: DeepSeek Harness dsh web should get an extra protection layer at the proxy once it is internet-reachable. That means source restrictions (allow only specific ranges or require VPN), access authentication (basic auth or an identity gateway), and enforced HTTPS. Three layers are far more reliable than one.

Related Terms

reverse proxy
A reverse proxy sits between clients and a backend service, forwarding requests and returning responses. Adding one in front of DeepSeek Harness dsh web is usually about HTTPS, a domain name and a single authentication entry point.— https://caddyserver.com/docs/caddyfile/directives/reverse_proxy
WebSocket upgrade
A WebSocket upgrade promotes an HTTP connection to a persistent one using the Upgrade header. A reverse proxy must forward those headers and keep the connection alive, or dsh web cannot establish its realtime channel.— https://nginx.org/en/docs/http/websocket.html
streaming response buffering
Streaming response buffering means a proxy accumulates chunks from the backend and sends them at once. It makes dsh web streaming output appear frozen, so proxy configuration must disable or minimize buffering.— https://nginx.org/en/docs/http/websocket.html
tunnel
A tunnel exposes an internal service to outside clients by having the internal side initiate outbound connections, so no listening port is opened on the firewall. It suits remote access to DeepSeek Harness when opening ports is not acceptable.— https://learn.microsoft.com/windows/wsl/networking

Sources