LAN reverse proxy plugin for DeepSeek Harness - enables mobile/tablet access with full features, fixes settings panel inaccessible via reverse proxy.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-reverse-proxy-xc
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:xchannel1987/dsh-reverse-proxy-xc
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
DSH LAN Reverse Proxy Plugin — Seamless access to DSH Web GUI from mobile/tablet devices on your local network with the full desktop experience.
DSH 0.1.7 compatible (
>=0.1.7-rc.1): adapted to the 0.1.7 breaking changes (ctx.settings.registerremoved, client servicesettingsScope→configForms). Settings stay under Settings → LAN Reverse Proxy; saving hot-restarts the proxy via the/api/dsh-reverse-proxy-xc/controlroute.
✨ Core Features
🌐 Full Feature Access
- Sidebar Available: Workspaces and session list display normally
- Settings Panel: All settings accessible
- Credential Management: API credentials can be managed
- WebSocket Support: Real-time event push works properly
🔧 Issue Fixes
This plugin resolves critical issues when accessing via reverse proxy:
| Issue | Cause | Solution |
|---|---|---|
| Settings panel won't open | Frontend disables on non-loopback | Proxy injects isLoopback=true |
| randomUUID error | API unavailable under HTTP | Auto-inject polyfill |
| WebSocket disconnects | Proxy not forwarding correctly | Stream passthrough support |
| authentication required prompt | Mobile access lacks launch token | Auto-acquire and inject valid session cookie (bypassToken) |
🚀 Technical Implementation
- Standalone Server: Listens on
0.0.0.0:3090by default - Request Forwarding: Forwards to DSH main service at
127.0.0.1:3080 - Header Rewriting: Rewrites Host/Origin to loopback address
- HTML Injection: Auto-injects necessary polyfills
🔒 Security Design
- LAN Only: Designed for trusted internal network use
- Trust Barrier: Preserves DSH's original security mechanisms
- Configurable: Disabled by default, requires manual activation
📦 Installation
# Using DSH CLI
dsh plugin --profile web add dsh-reverse-proxy-xc
# Or using npm
npm install dsh-reverse-proxy-xc
Restart DSH after installation.
⚙️ Configuration
- Open DSH Settings
- Find "LAN Reverse Proxy" section
- Enable "Enable Proxy" toggle
- Configure port (default: 3090)
Configuration Options
| Option | Default | Description |
|---|---|---|
| enabled | false | Whether to enable proxy |
| port | 3090 | Listen port |
| host | 0.0.0.0 | Listen address |
| bypassToken | true | Bypass Token Auth (auto-inject valid session cookie, no launch token required) |
| authEnabled | false | Whether to enable Basic access authentication |
| authUser | admin | Auth username |
| authPass | 123456 | Auth password |
🎮 Usage
- Ensure target device and host are on the same LAN or VPN
- Access from target device browser:
http://<host-lan-ip>:3090
Example: http://10.100.50.125:3090
- Enjoy the same experience as local
http://127.0.0.1:3080
🔧 How It Works
Mobile Browser
↓ HTTP/WS
Reverse Proxy (0.0.0.0:3090)
↓ Rewrite Headers
DSH Main Service (127.0.0.1:3080)
↓ Treats as loopback access
Full features unlocked
⚠️ Security Notes
- Don't Expose to Internet: This plugin is designed for trusted internal networks
- VPN Recommended: Use VPN for cross-network access
- Sensitive Operations: Involves credentials and settings, ensure network security
📄 License
🔗 Links
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-remote-web-ui★ 8707
Remote control of a dsh web workspace from phone or PC: QR-code pairing through a token-gated channel, SSE real-time sync, and separate mobile and full desktop GUI modes.
zhu1090093659/dsh-web#packages/dsh-ssh★ 8707
SSH ops panel for DSH: web terminal, SFTP transfer with progress, local port forwarding, and one-command cluster execution across hosts; agents share the same host config.
saya-ch/dsh-mobile★ 449
Access DeepSeek Harness from the Android app or a mobile browser with secure LAN and remote connections, persistent device pairing, and a customizable mobile interface.
liguobao/ds-harness-remote★ 327
Multi-device remote access for DeepSeek Harness: continue an active session from your phone, tablet, browser, or another computer over an end-to-end encrypted channel (Noise IK + adaptive relay/WebRTC transport), with device authorization, ApiProxy-only remote capabilities, and read-only file preview via dsh-file-viewer — no shell, remote desktop, or write access.
ZSeven-W/dsh-ios★ 322
A live iOS Simulator or USB-connected iPhone inside the conversation: 22 agent tools for booting, building, driving the UI by accessibility identity or OCR text, list-row actions and SwiftUI preview hot reload, plus a streaming sidebar panel you can tap and drag on.
wenbin-wb/dsh-bridge★ 195
Remote and mobile access for DeepSeek Harness: provides LAN QR code connection, Cloudflare/custom tunnels, WeChat, QQ, Feishu, Telegram bot integration, and security authentication.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.