dsh-cftunnel
Cloudflare Tunnel plugin for DeepSeek Harness: expose the local web GUI through a quick / token / API tunnel behind a token-gated loopback proxy, with optional Cloudflare Access email OTP.
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:weicy98/dsh-cftunnel说明文档
阅读完整 README ↗Configuration
Deployment-level options are set through the profile's own cordis.patch.yml (~/.dsh/profiles/web/cordis.patch.yml) or a --patch overlay. Everything else is a Settings-panel field and persists in the settings namespace.
- id: cloudflare-tunnel
config:
cloudflaredPath: 'cloudflared' # explicit binary path (default: auto-download to $DSH_HOME/cloudflared)
port: 3080 # local harness port to proxy
downloadMirror: '' # optional ghproxy-style prefix, e.g. 'https://ghproxy.example/'
proxyPort: 3091 # loopback port of the reverse proxy
proxyAuth: 'token' # 'token' (default) | 'none'
proxyToken: '' # optional fixed access token; empty = auto-generate and persist
accessPolicy: 'none' # 'none' | 'emailOtp'
accessEmailDomains: [] # e.g. ['yourcompany.com'] — restrict email OTP delivery
accessAccountId: '' # optional explicit Cloudflare account id
accessZoneId: '' # optional explicit Cloudflare zone id
Notes:
downloadMirrorcontrols how the one-timecloudflareddownload happens. Empty (the default) downloads through the GitHub API → CDN — authoritative, but slow on some networks (measured ~80 KB/s, so ~8 minutes for the 40 MB binary). Set a mirror prefix to speed it up; the plugin then downloads fromhttps://github.com/cloudflare/cloudflared/releases/latest/download/. A mirror is a third party you are trusting to serve an unmodified binary.accessAccountId/accessZoneIdare also fillable in the Settings panel; setting them there avoids needingAccount Settings:Read/Zone:ReadAPI-token permissions.proxyAuth: 'none'disables the access-token gate (the UI confirms before turning it off).