DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

longisland-icetea /

longisland-icetea/dsh-lan-access

Verified

Open the DeepSeek Harness Web GUI's LAN access fences: serve on all interfaces, trust only the configured LAN authorities, and choose them from a settings tab.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@f2569740

dsh-lan-access

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.yml and lib/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:

  • What it changes: binds the webserver to 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.
  • Strict fence (0.2.0, breaking): dsh itself trusts every non-internal IPv4 while the server binds 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.
  • Remote (non-loopback) visits: dsh runs its settings layer in memory mode there, so nothing can be read or persisted. The plugin shadows the shipped welcome notice and repairs the settings mirror; opt out of the latter with rescueSettings: false in the lan-access section of settings.yaml.
  • Session lifetime: 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.
  • No authentication (0.4.0): 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.
  • Install: 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.
  • Use: Settings → “LAN Access” tab → enable, enter the LAN IP(s) (or pick from the detected list), save, restart.
  • How it works (0.6.0): static composition — zero runtime row ownership. The bundle patch overrides the official 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.
  • Upgrades: the overrides are patches by id; a renamed or restructured official row is skipped by the composer with a warning (dsh still boots, fully official), and the boot-time self-check reports the drift instead of pretending. Only brand-new upstream guardrails (e.g. a webserver schema dropping 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.

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit f256974077ac

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout