dsh-server-panel:在 DSH WebUI 裏做本機服務器運維控制台

前言

用 DeepSeek Harness(DSH)做本機或遠程開發時,常見做法是再開 SSH、systemctl、journalctl 或單獨的文件管理工具。DSH 本身已有 Web 服務與認證,若能在同一套 UI 裏查看資源、管 systemd、改配置、跟日誌,就不必爲日常運維再堆一層入口。下面介紹社區插件 dsh-server-panel(維護者 lsl1931):把 DSH WebUI 擴展成側欄「服務器」整頁面板,不新開端口、不依賴 nginx,繼承 DSH 的認證、主題、暗色模式與語言。

這是什麼

dsh-server-panel 是 DSH 的 Web 客戶端插件(package.json 中 dsh.client.platform 爲 web)。Host 半在 dsh 進程內註冊約 26 條 /dsh-server-panel/* 路由並做指標採樣;Client 半注入側欄圖標與左導航(總覽 / 服務 / 文件 / 日誌 / 軟件包 / 網絡)及命令面板。訪問仍經你已有的隧道到 127.0.0.1:3080 的 dsh web,插件不單獨監聽公網端口。

倉庫:https://github.com/lsl1931/dsh-server-panel
社區目錄:https://www.skillhub.cn/plugins/lsl1931/dsh-server-panel(獨立社區站點,與 DeepSeek / 幻方無官方從屬關係)

許可證:MIT(© 2026 lsl1931)。當前 package 版本爲 0.1.0,要求 Node >= 22。

架構概覽

README 中的結構可以概括爲:

瀏覽器(經你的 SSH 隧道)
   └── 127.0.0.1:3080  dsh web
         ├── DSH 原有 UI
         └── dsh-server-panel
               ├── Client 半:左導航面板 + 命令面板
               └── Host 半:/dsh-server-panel/* 路由 + 採樣器 + root 通道

Host 入口在 src/index.js(配置、採樣器、sudo 會話、路由);客戶端資源經 build.mjs 打進 lib/,由模塊加載器加載。注意:Host 半與 dsh 同進程,同一模塊路徑只會加載一次;修改 src/*.js 後需重啓 dsh(電源按鈕)纔會加載新代碼;僅改 cordis.patch.yml 裏的 config 可即時生效,Client 頁面在重啓後一併刷新。

核心功能

界面爲 v2 佈局:頂欄含主機名、發行版/負載/內存摘要、命令面板(⌘K / Ctrl+K)、自動刷新、root 身份膠囊;左導航對應六個頁面。

頁面 能力(據 README)
總覽 異常橫幅(failed 單元、磁盤 ≥85%、內存 ≥90%、負載超核數、可升級包);CPU/內存/磁盤/系統 KPI;常用服務快啓(可收藏);本次會話操作事件流
服務 分組(失敗/運行中/開機自啓/全部)與搜索;行內啓停重啓;右側抽屜查看狀態與 實時跟隨 的 journalctl
文件 麪包屑與書籤;列表與覆蓋層編輯器(mtime 衝突檢測);上傳/下載/新建/重命名/刪除/chmod/chown
日誌 按單元與關鍵字過濾,實時跟隨,行數可選 100–1000
軟件包 apt 模擬升級列表、單包/全部升級、刷新索引、已安裝查詢
網絡 網卡(IP + 實時速率)、監聽端口(root 時含全部進程名)、已建立連接 Top、防火牆現狀

命令面板可跳頁、解鎖/鎖定 root、刷新、暫停輪詢、打開 /etc 或 /var/log、刷新 apt 索引、升級全部。

Host 側主要 HTTP 路由包括(節選):GET /health、/overview;GET /services、/services/logs;POST /services/action;GET/POST /sudo/state、/sudo/unlock、/sudo/lock;文件相關 GET/PUT/POST 於 /files/*;軟件包 /packages/*;網絡 /network/overview、/listeners、/connections。完整表見倉庫 README。

權限模型與安全

插件在未解鎖與已解鎖(root 通道)兩種模式下能力不同:

  • 未解鎖:文件限於白名單路徑(如 ~、/etc、/var/log 等);日誌僅本用戶可見;服務與軟件包只讀。
  • 已解鎖:在面板輸入 sudo 密碼後,各模塊請求自動帶 root=1;文件可全盤讀寫;日誌全量;服務可啓停/重啓/自啓;軟件包可更新/升級。需要權限的操作若未解鎖會先彈解鎖框,成功後自動重試。

寫系統目錄(/etc、/boot、/usr、/lib*、/bin、/sbin、/var/lib)需二次確認;刪除關鍵目錄(/、/etc、/usr、/home 等)會被拒絕。密碼僅通過 sudo -S 的 stdin 使用,保存在 dsh 進程內存;鎖定、空閒 10 分鐘或卸載插件會清除並執行 sudo -k。README 明確:解鎖後可 root 改系統配置、啓停服務;請只在本機或可信隧道後使用,不要把 3080 暴露到局域網或公網。

安裝與構建

官方 README 未給出 dsh plugin add github:... 一類單行命令,安裝方式爲通過 DSH 的 plugin_manager → install_bundle,target 設爲插件目錄的絕對路徑。開發者本地可先構建與測試:

node build.mjs          # 構建:src/*.js → lib/*.js
node test/run.mjs       # 10 個測試文件、90+ 斷言

安裝前請自行閱讀倉庫源碼與 MIT 許可證;插件以當前 dsh 進程權限運行,解鎖後影響面等同於在本機使用 sudo/root。

典型用法

  1. 在 DSH WebUI 側欄點擊「服務器」圖標,進入整頁面板。
  2. 在 總覽 看 KPI 與異常橫幅;需要改服務時在 服務 頁搜索單元,必要時先解鎖 root 再啓停/重啓,並在抽屜裏跟 journalctl。
  3. 改配置走 文件 頁(書籤可快速到 /etc);寫系統目錄時按提示二次確認。
  4. 排障用 日誌 頁按單元過濾並實時跟隨;補丁管理用 軟件包 頁刷新索引後單包或全部升級。
  5. 用 ⌘K / Ctrl+K 打開命令面板,可快速跳頁、鎖定 root、暫停輪詢或打開常用目錄。

適用場景與注意

適合:已在用 DSH Web 隧道管理本機或開發機、希望少開終端即可完成 systemd、日誌、apt 與基礎網絡排查的開發者。

注意:

  • 分類爲客戶端插件,能力綁定 dsh web 與 Host 路由,不是獨立守護進程。
  • 依賴 systemd、journalctl、apt 及 README 中列出的命令行工具環境;網絡與指標來自 /proc 採樣及 ip -j、ss 等解析。
  • 修改 Host 源碼後必須重啓 dsh;生產使用前建議跑通 node test/run.mjs。
  • 社區目錄星標等元數據以站點爲準;功能描述以 GitHub README 爲準。

結尾

dsh-server-panel 把 DSH WebUI 收成一枚本機運維控制台:資源總覽、systemd 與實時日誌、帶 sudo 閘門的文件與 apt、網絡快照,且複用 DSH 已有認證與主題。若你已在隧道里用 dsh web,可按 README 的 bundle 安裝方式接入,並嚴格遵守 root 解鎖與 localhost 暴露面的安全說明。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜