packages/dsh-remote-web-ui
zhu1090093659/dsh-web手机/PC 远程操控 dsh web 工作区:扫码配对、令牌门控通道、SSE 实时同步,提供移动端与完整桌面 GUI 两种远程形态。
可配置的 DSH Web GUI 局域网访问:设置页开启后绑定全部网卡,只信任你配置的访问地址,可调整浏览器会话有效期或去掉 token 登录,并修复非回环访问时的设置层。
Who this is for: users who already run a virtual LAN (EasyTier / Tailscale / WireGuard / ZeroTier …), or who only want to reach the dsh Web UI from a trusted LAN (home or office network).
⚠️ Security: enabling LAN access means anyone who can reach that address can operate your Harness — remote code execution exposed to that network segment. Only enable it on a network you control; never on public Wi-Fi, campus or shared lab networks. Never forward the token-bearing URL printed at startup.
🤖 About this repository: every line of code, doc, and commit here was generated by an AI coding agent; the author has not reviewed it line by line. Read
cordis.patch.ymlandlib/client.js(they touch dsh internals) before you rely on it. Issues and PRs welcome.
Open the DeepSeek Harness Web GUI's LAN access fences so other machines on a
(virtual) LAN can reach it directly via LAN-IP:port, with a settings tab to
choose which LAN IP is used.
See README.zh.md (Chinese) for the full guide; the English summary:
0.0.0.0 when enabled (the host
schema only allows 127.0.0.1 / 0.0.0.0), makes the /api browser-trust
fence accept only your configured authorities (falling back to dsh's
automatic LAN trust when you configure none), and prints the token-bearing
LAN URL at boot.0.0.0.0; 0.1.x unioned that in, so a host you removed
stayed trusted. Since 0.2.0 a non-empty configuration is the policy.rescueSettings: false in the lan-access section of settings.yaml.sessionDays (default 30, range 1–3650) sets how long a
device stays authenticated after one token visit. Cookies are per access
address and survive a dsh web restart (the signing secret is persisted);
they die on expiry, on deleting .credentials.yaml, or when the browser
clears them. Needs a restart to change.noAuth: true removes the browser session gate
altogether — no launch token, no cookie, no 401. The Host/Origin trust fence
stays (hosts outside accessHosts are still 403); everything else becomes
your network's job. Needs a restart. sessionDays has no meaning while it is
on.dsh plugin --profile web add github:longisland-icetea/dsh-lan-access
(dsh plugin --profile web update dsh-lan-access to upgrade), then restart
dsh web. ⚠️ The dsh-lan-access package on npm is a different project by
another author — this plugin is only distributed from GitHub, not npm.webserver/connection
rows with loader !!js expressions that decide the bind and the fence ONCE
per boot from two bits composed before activation: the lan-access entry's
disabled state (the very state dshmarket's toggle writes) and the
settings-tab toggle (settings.yaml lan-access.enabled). No
entry.update, no fiber restarts, no boot rewrites; toggling the plugin —
in the settings tab or in the market — only starts/stops its fiber, and
the binding changes on the next restart, exactly what the settings tab
says. The expressions fail closed: any evaluation error yields the
official defaults (loopback bind, the deployment fence) and can never
fail the boot.0.0.0.0) can defeat it. The one place that touches a dsh
internal (a prototype patch to revive already-bound settings scopes, and
the noAuth gate swap) is wrapped in try/catch and can be switched off
entirely.MIT