evanfang0054/dsh-tailscale-console ↗★ 1
dsh-tailscale-console
DeepSeek Harness 的 Tailscale 远程访问运营面板:健康检查、HTTPS 入口开关、macOS 代理绕过、中继服务器运维、ACL 片段生成。
AI 分析
核心用途是为 DSH 提供 Tailscale 远程安全访问的管理面板。适合需要跨设备安全访问本地 DSH 实例、配置 HTTPS 访问及进行网络运维的用户。
インストール
検証済み bundle がないか、互換性チェックに失敗しています。先にリポジトリの説明を読んでください。 README 全文を読む ↗
ドキュメント
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 |