Dockhand Docker 管理面板實測,裝完先替它上鎖再開工

Dockhand 是衝著 Portainer 來的 Docker 管理面板:免費版就含漏洞掃描與 SSO,原始碼公開、宣稱零遙測。實測後最該記住的是它出廠預設不設防,裝完先建帳號開驗證再上線。

用 AI 摘要這篇文章:

我在本機的 Docker Desktop 上把 Dockhand 跑起來,容器啟動後十秒內首頁就回 HTTP 200,接著做了一件所有自架者都該知道的事:不帶任何帳號密碼,用 curl 直接打它的 API,成功建立了一個管理環境,還列出主機上正在跑的容器。這並沒有繞過什麼漏洞,是它出廠的預設行為,官方文件自己也寫得明白:首次啟動時驗證是關閉的。所以這篇實測文的第一個結論先講:Dockhand 裝完先上鎖,再談功能。

先交代背景。Dockhand 是 2025 年 12 月底才出現在 GitHub 的 Docker 管理面板,主打用網頁介面管理容器、Compose 堆疊與映像檔,配上漏洞掃描與多主機管理,擺明了衝著 Portainer 的位置來。到 2026 年 9 月初,它累積了超過 6 千個星、Docker Hub 上約 1,026 萬次拉取,版號走到 v1.0.46,約八週內發了十個版本。這種成長速度的年輕專案值得認真看一次,而看的方法就是把它裝起來打一輪,順便把它跟 Portainer 的取捨算清楚。

開箱十秒能動,門卻是敞開的

安裝確實如官網宣傳的那樣省事,一條 docker run 就起來,映像檔約 828MB,預設用 SQLite,第一次啟動跑完 15 個資料庫遷移就緒,不需要外部資料庫。但官網的快速開始指令有兩個細節沒替你多想:範例把 3000 連接埠綁在所有網卡上,而且面板起來的當下,驗證是關閉的。這個容器掛載了 /var/run/docker.sock,等於握有主機上 Docker 的完整控制權,能開容器也就能開一個掛載主機根目錄的特權容器,實質權限跟主機 root 相差無幾。預設狀態下,這份權限對任何打得開這個連接埠的人敞開。

實測過程是這樣的。打開 /api/auth/session,回的是 {"authenticated":false,"authEnabled":false};接著不帶任何憑證 POST /api/environments,伺服器回 201,環境建立成功;再 GET /api/containers?env=1,我主機上的 14 個容器連同映像檔名稱、狀態一次列出。設定頁上的文字也直白:「Authentication is disabled – open access」。官方手冊在首次設定的段落寫明:驗證預設關閉,要去 Settings 的 Authentication 頁手動啟用並建立第一個管理者。

上鎖的流程有個防呆設計,順序不能錯。先在 Authentication 的 Users 分頁建好使用者,再打開驗證開關;順序反了它會拒絕,訊息寫著 Cannot enable authentication without any users. Create a user first.(沒有任何使用者,就無法啟用驗證),避免你把自己鎖在門外。我把使用者建好、開關打開之後,重打同一個容器列表 API,這次回 401,登入後一切正常。密碼的儲存官方文件說是 Argon2id 雜湊,這點設計上是及格的。如果你的場景是先在本機試玩,至少把連接埠綁在 127.0.0.1;真的要對外開,前面墊一層反向代理,再掛上它內建的多因子驗證:

docker run -d --name dockhand \
  --restart unless-stopped \
  -p 127.0.0.1:3000:3000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v dockhand_data:/app/data \
  fnsys/dockhand:latest

整理成最低安全檢查:連接埠預設只綁 127.0.0.1,對外一律走反向代理;進面板先建使用者、開驗證,再開多因子;驗證沒開之前,這台機器的連接埠不要對任何人曝露。另外養成看版本習慣,它八週十版的節奏代表修補來得快,但也要你自己願意跟著更新。這些動作花不到十分鐘,卻決定這個面板是幫你省事還是替你開門。

儀表板真的在做事:即時指標與零對外連線

鎖好門之後才輪到看它做事。把本機 socket 加進環境,儀表板立刻讀到完整的現況:14 個容器(10 個執行中、4 個停止)、66 個映像檔、139 個卷、5 個網路,主機端的 CPU、記憶體、磁碟數字都是活的,會隨頁面更新。容器列表每列都有即時的 CPU、記憶體、網路與磁碟 I/O,Dockhand 自己那個容器在頁面上顯示 2.6% CPU、約 161MB 記憶體,跟 docker stats 對得上。對同時跑著 Immich 這類自架相簿服務跑在樹莓派上的自架記帳工具自架量化工作台的人來說,把這排容器收進一個畫面統一看資源,正是這種面板的核心價值。

Dockhand 儀表板頁面,顯示環境概況、容器總數與健康狀態、CPU 與記憶體使用率、映像檔與網路數量等統計卡片Pin
把本機 socket 加進環境後,儀表板直接讀到 14 個容器、66 個映像檔的即時現況(來源:Dockhand v1.0.46 實測截圖)
Dockhand 容器列表頁,搜尋框輸入 dockhand 過濾後只剩一列執行中的容器,欄位包含映像檔、狀態、CPU、記憶體、網路與磁碟 I/OPin
容器列表每列都有即時的 CPU、記憶體與 I/O 數字,圖中為搜尋過濾後的畫面(來源:Dockhand v1.0.46 實測截圖)

隱私宣稱方面,官網強調零遙測、資料不出你的網路。這次實測用瀏覽器的網路紀錄分兩階段驗證:從打開首頁到登入操作、瀏覽容器與儀表板,對外的請求是 0 筆,所有連線都指向本機,連字型或腳本都沒有從任何 CDN 拉。更新提示視窗裡的版本資訊也是包在映像檔裡的,不是連出去抓的。不過要留意,這只證明本次實測期間的行為,等你設定 Git 部署、通知管道這些功能,對外連線本來就會發生;但「面板本身不偷偷回報」這件事,在行為層有證據支持。

介面的完成度可以記上一筆。左側導覽列一共十三個頁面,從儀表板、容器、日誌、終端機、堆疊、映像檔、卷、網路,到模板、Registry 映像檔倉庫、活動紀錄、排程與設定,全都有內容可看,按 ⌘K 能呼出全域命令面板直接搜頁面與動作。外觀設定提供深淺色主題、字級調整、欄位顯示與排序,每個使用者各自的偏好分開記。這些都是這次操作中實際點過看到的,對一個八個月大的專案來說,介面細節照顧到這個程度並不常見。

容器頁的工具列還有一個「Check for updates」按鈕,列表裡每列都有自動更新欄位,搭配前面提過的 safe-pull 掃描,等於把「要不要讓面板自動升級容器」做成每個容器各自可開關的選項,而不是全有全無。要不要開自動更新向來是取捨:開了省事但吃到壞版號的風險自負,不開就要定期回來手動按,這個設計至少把選擇權留在你手上。

原始碼公開不等於開源:授權要讀條文

它常被一句話帶過成「開源工具」,但授權欄位值得看清。Dockhand 本體採用 BSL 1.1(Business Source License),GitHub 因此把授權顯示為無法自動判定。BSL 的精神是原始碼公開、使用有條件,條件寫在授權檔的 Additional Use Grant 裡,而它的範圍給得相當寬:個人與家用實驗室、公司內部使用(不限管理多少套 Docker 環境)、非營利組織、教育與評估用途全數明文允許,甚至受託代管客戶基礎設施的服務商也允許;唯一被擋下的是把 Dockhand 或其衍生版本包成同性質的商業代管服務拿去賣。換句話說,一般公司內部拿免費版來管自己的機器,條文上是合法的。另外條文寫明 2029 年 1 月 1 日起自動轉為 Apache 2.0。對照之下,它的多主機代理器 Hawser 是真正的 MIT 授權,而 Portainer 的 CE 版走 zlib 授權,兩個都是標準開源。

所以精確的說法是:Dockhand 是原始碼公開的商用軟體,用寬鬆的附加授權換取社群採用,再用企業功能與支援合約收費。這個模式對使用者不算苛刻,但你引用它時稱「開源」就踩到事實錯誤,叫「原始碼公開」最準。順帶一提,付費版的對照表裡有個標示 Commercial usage license 的欄位,容易讓人以為免費版禁商用,對照授權條文讀就知道:條文允許內部使用,付費買的是正式授權憑據與支援服務,使用許可本身本來就免費。

免費版給了什麼,付費版賣什麼

計價結構是它跟 Portainer 競爭的主戰場。免費版的功能清單給得意外完整:容器與堆疊管理、Git 整合與 webhook、Grype 與 Trivy 兩套引擎的映像檔漏洞掃描、OIDC/SSO 單一登入、多因子驗證、通知與活動日誌,官網還特別標了一句行銷語:他們不收 SSO 稅,單一登入免費。掃描功能有個設計亮點叫 safe-pull:自動更新時先把新版映像檔拉到暫存標籤掃一遍,漏洞超過你設的標準就退回,原容器照跑不動。這些是官網與手冊載明的功能,本次實測沒有逐一跑掃描,細節以官方文件為準。

操作面的功能盤點同樣以官方文件為本:視覺化 Compose 編輯器搭配一鍵修正的驗證器、容器內的網頁終端機與檔案總管、映像檔層級檢視、卷瀏覽器;原始碼裡還有網路拓撲圖這類連手冊都還沒寫進去的細節;通知原生支援 Discord、Slack、Telegram、ntfy、Gotify、Pushover,連 Signal、Bark 都在支援之列,另有 Apprise 通用通道可以再接其他服務;備份功能用 restic 做加密去重,目的地涵蓋 S3、Backblaze、Azure、Google Cloud 或自架 REST 伺服器,但官網明標還在 beta。外部金鑰的設計有想法:部署時直接從 1Password、HashiCorp Vault、Infisical、Doppler、Bitwarden、Proton Pass 等密碼庫拉值,解析完只活在部署當下,不落地、不進 compose 檔。對自動化派還有一個加分:官方說整個介面跑在跟外部同一套 REST API 上,搭配 dh_ 開頭的 API 權杖就能把面板的操作寫進腳本。

付費的 SMB 版每台主機每年 499 美元,買的是正式商業授權、付費信件支援與優先修 bug;企業版每台主機每年 1,499 美元,加上 RBAC 角色、LDAP/AD 整合與合規等級的稽核日誌。對照 Portainer:CE 免費且是真開源,付費的 Starter 方案在 2026 年 9 月的官網標價是 5 節點每月 105 美元起,以月繳換算一年約 1,260 美元。換算下來會翻轉:只管一台主機的商用場景,Dockhand 的 499 美元便宜;管到五台,Dockhand 要 2,495 美元(五台以上另有量購折扣),就貴過 Portainer 的入門方案了。它按主機數計價,Portainer 按節點方案包,規模越大差距越明顯。

README 說 Bun,映像檔裡跑的是 Node.js

讀原始碼會發現一個文件與實作的落差。README 的技術棧寫後端跑 Bun 執行環境,但映像檔的 Dockerfile 開頭註解寫著改用 Node.js,理由是 Bun 的 BoringSSL 在 mTLS 連線上有原生記憶體洩漏。這對一般使用者無感,但它是「文件會漂移」的具體例子:挑這類年輕工具時,文件講的技術細節要對照原始碼看,官方文件自己也不例外。映像檔的底層倒是用料實在,用 Wolfi 套件從零打造作業系統層,docker-cli 與 docker-compose 5.5.0 都包在裡面,遠端主機不必預裝這套工具鏈(走 Hawser 連線的主機另需裝 Hawser agent);模板功能也直接相容 Portainer v2 的模板格式,搬家時舊的模板清單可以接著用。

管得到防火牆後面的主機嗎:Hawser 的解法

多主機是它主打的能力之一,連法有三種:本機 socket、遠端 TCP 加 TLS,以及一個叫 Hawser 的代理器。Hawser 是獨立 repo 的 MIT 授權小工具,專門處理最麻煩的場景:你的主機在 NAT 或防火牆後面,沒有對外 IP。它的做法是由主機端的代理器對 Dockhand 發出對外連線並維持住,Dockhand 再透過這條連線下指令,主機上不必開任何對內連接埠。這個設計對家用寬頻環境很實際,管遠端家裡那台樹莓派不用去路由器上挖洞。此段屬官方文件的設計說明,本次實測只驗證了本機 socket 這條路,Hawser 的實際穿牆表現留給有需要的讀者自行驗證。

它還年輕:一人主力與一排開著的 issue

健康度要看人與節奏。提交紀錄上,主力作者 joka 一人占了 320 次提交,其餘是零星社群貢獻,這是典型的單人主力專案,主要維護者只有一人的單點風險要放在心裡。約八週十個版本的節奏很拚,但也代表介面與行為變動快,寫進文件的東西未必跟得上程式碼。開著的 issue 裡有幾個貼近日常使用的痛點:多容器自動更新時撞到 TooManyRequests(#1268)、部署失敗時看不到底層 Compose 的真正錯誤訊息(#1292)、從 2 月開到現在的部署即時輸出(#506),以及 1Password 金鑰在部署時撞速率限制(#1436)。好消息是 v1.0.47 的路線圖已把部署即時輸出與部署歷史列為下一版主軸,等於官方自己也承認這塊該補。跟 Portainer 累積十年的生態與 3.8 萬顆星相比,它還在證明自己的階段。

有一個小地方我看得蠻順眼:它的版本更新視窗把每條變更對應到的 issue 編號與貢獻者帳號直接列出來,官方路線圖也標了下一版要解哪些社群問題。這種把開發攤在陽光下的做法,跟原始碼公開的定位一致,也讓你判斷「我卡住的問題有沒有人在理」時有依據可查,比單看行銷頁面踏實。

誰該換來試,誰先留在 Portainer

我的判斷按使用情境分開講。家用實驗室與單機自架者最值得試:免費版功能完整、官網標榜樹莓派就跑得動、零遙測有行為證據,上鎖兩步做好就好。公司內部要商用又要支援合約的,把按主機計價的帳算清楚再決定,主機一多總成本會超過 Portainer 的入門方案,而 RBAC 與稽核這些企業功能,Portainer 的付費版目前是更成熟的選擇。已經重度依賴 Kubernetes 或需要中文介面的,先留在原處:Dockhand 專注在 Docker 與 Compose,介面只有英文,手冊與原始碼裡都沒有多語系的蹤跡。

回到開頭那句話。這個面板的原始碼公開、免費版誠意、零遙測設計都值得肯定,十秒起來的速度也是真的;但它把「信任使用者先把門關好」放進出廠預設,這份信任你在生產環境收不起。裝完的第一個動作永遠是建帳號、開驗證,第二個動作才是把你的容器們交給它管。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 1160

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...