evanfang0054/dsh-tailscale-console ↗★ 1
dsh-tailscale-console
DeepSeek Harness 的 Tailscale 远程访问运营面板:健康检查、HTTPS 入口开关、macOS 代理绕过、中继服务器运维、ACL 片段生成。
AI Analysis
核心用途是为 DSH 提供 Tailscale 远程安全访问的管理面板。适合需要跨设备安全访问本地 DSH 实例、配置 HTTPS 访问及进行网络运维的用户。
Install
This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗
README
Read the full README ↗3. DSH configuration
3.1 Start command (use this every time)
dsh web --trusted-host :3080 --trusted-host ..ts.net
⚠️ Every change below (cordis.patch.yml, plugin code, better-sidebar patch) requires restarting
dsh web, which interrupts the currently running session — save/finish your work first. The web profile has HMR disabled.
3.2 Static trustedHosts (belt & braces)
Append to ~/.dsh/profiles/web/cordis.patch.yml:
- id: connection
config:
trustedHosts: [':3080', '..ts.net']
3.3 Known third-party issue: dsh-better-sidebar
If your profile installs dsh-better-sidebar, its /sidebar/api fence has a bug in version 0.10.3 (the latest published): trustedHostsOf() matches entry.options.name against "connection", but name is the package name, so the trust list is always empty and /sidebar/api/* is loopback-only (403 remotely — the sidebar breaks). No fixed upstream version exists yet.
Patch trustedHostsOf() in node_modules/dsh-better-sidebar/lib/index.js (back up the file first) to read the webRuntime service:
function trustedHostsOf(ctx) {
const hosts = []
const runtime = ctx.get("webRuntime")
if (runtime !== void 0 && Array.isArray(runtime.trustedHosts)) hosts.push(...runtime.trustedHosts)
for (const entry of ctx.loader.entries()) if (entry.options.id === "connection") {
const cfg = entry.options.config?.trustedHosts
if (Array.isArray(cfg)) hosts.push(...cfg)
}
return [...new Set(hosts)]
}
⚠️ The patch lives in
node_modulesand is lost on the nextpnpm install— re-apply after every reinstall (check withgrep -c 'options.id === "connection"').
Configuration
All values come from the plugin Config; the code contains no personal identifiers. MagicDNS URLs and tailnet IPs are auto-derived from tailscale status --json when not configured.
| Key | Type | Default | Meaning |
|---|---|---|---|
dshPort | number | 3080 | DSH web GUI port |
relayPort | number | 40000 | Relay server's Peer Relay UDP port |
tailnetUrl | string | auto | HTTPS base, e.g. https://myhost.tail1234.ts.net |
sshAlias | string | — | SSH alias for server-side mutations (install / relay) |
serverPeerPattern | string | first Linux peer | Regex to identify the relay server peer |
proxyServices | string[] | macOS set | Network services for the bypass apply |