← 返回上一頁
Docker 開源軟體

Dockhand 實戰:新一代 Docker 管理面板,Git 整合 + 多環境管理直接挑戰 Portainer

最後更新:2026-04-30
本頁目錄

對 NAS 與自架族來說,「面板」這件事這幾年其實有點尷尬。多年前 Portainer 幾乎是預設答案——介面乾淨、Compose 編輯堪用、社群教學一查就有;但這兩三年情況改變很多。Portainer CE(Community Edition)的更新節奏明顯偏向商業版優先,許多曾經免費的功能被劃進 Business Edition:RBAC、稽核日誌、邊緣管理、Stack Webhook 自動同步等等。雖然個人使用 5 台節點以下的 BE 授權還是免費,但「免費版功能被閹割」的觀感、加上 UI 設計逐漸顯得老氣,是社群討論熱度持續發酵的主因。

於是「找 Portainer 替代品」這件事,從前年開始就陸續冒出幾個有意思的選擇:Dockge 主打可視化 Compose 編輯、Komodo 想做完整的 GitOps、Yacht 走極簡風……每個都解決一部分問題,但很少有同時把「多環境、Git 整合、卷瀏覽、終端與日誌」整套做齊的。Dockhand(GitHub 名稱 Finsys/dockhand)今年初開始在中文 NAS 圈炸開,被一票部落客形容為「神級 Docker 面板」,有點誇張,但實際裝下來會發現它的功能盤點非常完整,幾個關鍵體驗甚至已經把 Portainer CE 甩開好一段距離。

這篇實際上機把 Dockhand 跑一遍——主要功能、安裝步驟(docker run 與 docker-compose 兩種寫法)、在群暉 / 極空間 / TrueNAS 上的注意事項、和現有方案的對照,最後聊聊它的 BSL 1.1 授權對企業使用的意義。

一、Dockhand 是什麼

官方一句話定位:現代化、高效的 Docker 管理應用,提供即時容器管理、Compose 堆疊編排與多環境支援。所有功能放進一個輕量、注重隱私的容器映像裡,靠 Web UI 統一管理本機與遠端 Docker 主機。

關鍵事實先列出來:

  • 作者 / RepoFinsys/dockhand(Docker Hub 映像為 fnsys/dockhand
  • 官方站dockhand.pro
  • 授權BSL 1.1(Business Source License),個人與內部使用免費,不可作為商業 SaaS 對外提供;條款設定 2029 年自動轉為 Apache 2.0
  • 企業 / 團隊版:另外提供商業授權,加上 LDAP/AD、RBAC、稽核日誌等
  • 目前限制尚未支援繁中/簡中 UI,社群已有 i18n issue 在排程

BSL 是這幾年新一代開源工具的常見選擇(HashiCorp Terraform、Sentry、CockroachDB 都走這條路)。對 NAS 玩家、家用伺服器、企業內部使用幾乎沒影響;只有「想拿來做付費託管 Docker 控制台對外賣」這類使用者要避開。

二、亮點功能盤點

第一次登入 Dockhand 是「無使用者」狀態——這是個小陷阱,請務必先到 Settings 手動建立帳號並開啟驗證,不然任何能連到 Web UI 的人都能直接操作你的 Docker。把這件事擺第一位講,是因為它真的很容易忘。

2.1 多環境管理(本地 + 遠端 docker.sock / API / Hawser)

Dockhand 不只是「管本機」的面板。除了預設的 Unix socket 映射,它原生支援三種遠端連線:

  • Unix socket:本機掛載 /var/run/docker.sock,最直接
  • Docker API:遠端 daemon 透過 TCP + TLS 連線
  • Hawser:Dockhand 自家的安全代理,避免直接暴露 Docker API

對於要管多台 NAS 或一個小 Homelab cluster 的人來說,這個設計很實用。在 UI 上一個帳號可以同時切換多個 Environment,跨環境執行映像更新、漏洞掃描、活動日誌都會集中呈現。

Dockhand 多環境管理:本機 + 遠端 + Hawser 代理 + Git 部署

2.2 直接拉 Git repo 部署 + Webhook

Stack 部署支援直接吃 Git URL,這對習慣把 Compose 檔放 Git 管的人簡直是剛需。私有倉庫支援兩種授權:

  • HTTP:Personal Access Token / 帳密
  • SSH:deploy key

更重要的是 Webhook——在 GitLab / GitHub / Gitea 設定推送 webhook 到 Dockhand,當 main 分支有更新,Dockhand 會自動重新拉 repo、套用新的 compose.yaml 並滾動部署。實質上是個迷你版 Argo CD:沒有 K8s 那麼重,但 GitOps 的精神已經到位。

2.3 全域環境變數

實務上同一台機器跑十幾個 stack,常會重複貼 timezone、PUID、PGID、APP_DATA 路徑等。Dockhand 提供 Global Env:在 Settings 集中定義,每個 Stack 可以直接 ${GLOBAL_TZ} 引用。改一次全部 stack 同步生效,比一個一個改 .env 直觀很多。

2.4 可視化容器卷瀏覽(busybox 即裝即刪)

這個功能我認為是目前所有 Docker 面板裡做得最聰明的一個。Docker volume 設計上權限完整、配置簡單,但缺點就是「路徑藏起來、人類不好看」。傳統做法是 SSH 進去 docker run --rm -v vol:/x busybox ls /x,每次都要打一次。

Dockhand 的解法:直接在 UI 點下去,它會自動拉一個臨時 busybox 容器掛上 volume,讓你在瀏覽器裡瀏覽、下載、上傳檔案;操作完容器就被刪掉,不留痕跡。對備份檢查、設定檔抽出、debug 路徑問題非常省事。

2.5 統一日誌與終端

Portainer 的日誌是「進到容器詳情頁→看日誌」的兩層體驗。Dockhand 把日誌做成側邊欄常駐,像 IDE 開 terminal panel 那樣:

  • 跨容器快速搜尋與切換(毫秒級反應)
  • 可調字體大小、捲動、下載、複製
  • 同時開多個容器的日誌串流

終端管理也類似。可以指定 user、預設指令、快速搜尋容器,open 即用。一次同時 SSH 進三個容器再也不用切換瀏覽器分頁。

另外 Stack 列表沒有「進二級頁面」這種設計:點開 Stack 直接展開為各 service 的卡片,每張卡片有 CPU / 記憶體即時數字,可以單獨重啟某個 service。資訊密度比 Portainer 高很多。

三、安裝部署

最低需求:能跑 Docker 的任何 Linux(NAS、VPS、homelab 工作站皆可)、約 200MB 記憶體、一個未占用的 port。

3.1 docker run 一行起(適合家用 NAS)

群暉、QNAP、極空間用 docker run 最快:

# 建立資料夾
mkdir -p /volume1/docker/dockhand/data
cd /volume1/docker/dockhand

# 啟動 Dockhand
docker run -d \
   --restart unless-stopped \
   --name dockhand \
   -p 3424:3000 \
   -v /var/run/docker.sock:/var/run/docker.sock \
   -v $(pwd)/data:/app/data \
   fnsys/dockhand:latest

幾個重點:

  • port 3000 是容器內部固定 port;外部映射隨意(例子用 3424,不易撞到)
  • /var/run/docker.sock 一定要掛,這是 Dockhand 操作 Docker 的唯一入口
  • /app/data 要持久化,裡面存使用者、Stack 設定、Webhook token

3.2 docker-compose 範例

正式環境建議用 compose,方便版本控制與重啟。下面是兩個來源整理出的乾淨版本:

services:
  dockhand:
    image: fnsys/dockhand:latest
    container_name: dockhand
    restart: unless-stopped
    ports:
      - "3424:3000"
    volumes:
      # Docker 守護程序
      - /var/run/docker.sock:/var/run/docker.sock
      # 資料庫與設定(也可改成 named volume:dockhand_data:/app/data)
      - ./data:/app/data
    environment:
      - TZ=Asia/Taipei

# 若改用 named volume,再補一段:
# volumes:
#   dockhand_data:

啟動:

mkdir -p /volume1/docker/dockhand/data
cd /volume1/docker/dockhand
docker compose up -d

常用環境變數對照(從官方 Hub 與 issue 整理):

變數 預設 用途
TZ UTC 容器時區,建議 Asia/Taipei
PORT 3000 容器內部監聽 port
DATA_DIR /app/data 資料持久化路徑
LOG_LEVEL info debug / info / warn / error
OIDC_* (無) 接 SSO 用,企業版用得到

3.3 在群暉 / 極空間 / TrueNAS 上跑的注意事項

各家 NAS 的小坑:

  • 群暉 DSM 7.x:Container Manager(前身 Docker 套件)的「登錄」搜 dockhand,第一個 fnsys/dockhand 即是;建立容器時記得把 /var/run/docker.sock 加進「磁碟區」綁定。
  • 極空間 ZOS:先到 Docker → 鏡像 → 加速器,補 Docker Hub 鏡像加速地址(中國大陸環境必要),不然會卡在拉映像那步。Compose 介面建議用 named volume dockhand_data 取代 ./data,避免遇到 ZOS 對 Docker 路徑的權限限制。
  • TrueNAS SCALE:用 Custom App / Docker Compose UI;注意 SCALE 的 Docker socket 在 /var/run/docker.sock,但 IX-Apps 環境會把它代理過一層,第一次啟動權限可能不通,必要時改用 Hawser agent 模式。
  • OpenWrt / 路由器類:能跑 Docker 就能裝,但 ARM 機型記得選對 tag——fnsys/dockhand:latest 是 multi-arch(amd64 + arm64),arm/v7 目前未官方支援。

四、初次設定的安全要點

裝完先別急著到處點,做這幾步:

  1. 建立管理員帳號:Settings → Users → Add user,把 admin 帳號設好強密碼。
  2. 開啟驗證:Settings → Authentication,把「Require login」打開。
  3. 設定環境(Environment):左側 Settings → Environments → Add environment,使用預設 Unix socket + /var/run/docker.sock,Public IP 填 NAS 內網 IP(之後跨環境互通會用到)。
  4. 時區:Settings → 改 Asia/Taipei,避免日誌時間錯亂。
  5. 反向代理 + HTTPS:對外用千萬不要 expose 3424 直接打。Caddy / Nginx Proxy Manager / Cloudflare Tunnel 三選一加 TLS。
  6. 限制 Docker socket 權限:能上正式機就盡量考慮 socket-proxy(如 tecnativa/docker-socket-proxy),把 Dockhand 能操作的 API endpoint 收斂到必要範圍。

五、與 Portainer / Yacht / Komodo 對比

把 NAS 圈最常見的選項並列一張表,比較好決定要不要換:

功能 Dockhand Portainer CE Portainer BE Yacht Komodo
容器 / 映像 / 網路 / 卷管理 完整 完整 完整 完整 完整
多環境(遠端 Docker) 內建(API + Hawser) 內建 內建 + Edge 不支援 內建(Periphery agent)
Compose 視覺化編輯 拓樸圖 + 變數面板 文字編輯器 文字編輯器 文字編輯器 文字編輯器
Git Stack + Webhook 是(CE 即提供) 部分
全域環境變數
Volume 檔案瀏覽器 是(busybox 自動)
統一日誌側邊欄 部分
RBAC / 稽核 企業版 部分
OIDC / SSO 企業版
中文 UI 尚未支援 部分
授權 BSL 1.1 zlib 商用 MIT GPL-3.0

從表格看得出來,Dockhand 把 Portainer BE 才有的 Stack Webhook、全域環境變數、漏洞掃描整合下放到 CE 等價的免費版,再加上 Volume 檔案瀏覽器與統一日誌這兩個獨家亮點,純粹從功能對照表的「免費版能用到的東西」來看,CP 值非常高。

六、踩雷與觀察

實際跑了幾天的觀察:

  • 沒有中文 UI:對英文不熟的家人朋友來說會卡。GitHub 上 i18n issue 已開,但短期內還是英文。
  • Stack 拓樸圖編輯器對新手友善但對老手有點累——畫起 5 個 service 以上的網路關係會有點 lag,直接寫 yaml 還是比較快。建議新手用拓樸、熟手用 yaml,兩種混用最舒服。
  • Volume 瀏覽器在 ARM NAS 上首次點開會慢:因為要拉 busybox arm 映像,第一次會 hang 個 5–10 秒,第二次就快了。
  • Webhook 的 token 不會顯示第二次:建立 Stack 拿到 webhook URL 一定要立刻存起來;忘記只能砍掉重建。
  • 升級流程docker compose pull && docker compose up -d,記得先 cp -r data data.bak。BSL 1.1 沒有強制升級,但作者更新節奏算積極,平均兩週一個小版本。
  • 與 Watchtower 共存:Dockhand 自己也有映像更新功能(在 Settings → Updates),如果跟 Watchtower 同時跑會搶資源、產生衝突,選一個用就好

七、適合與不適合的場景

適合

  • 家用 / 個人 NAS 玩家,跑 10–50 個容器,想要一個比 Portainer CE 更舒服的 UI
  • Homelab 多節點,需要把多台機器的 Docker 集中管
  • 已經有 Compose 在 Git 倉庫,想試 GitOps 但又不想上 K8s + Argo CD
  • 小團隊內部開發環境,要 RBAC 可以付費升企業版

不適合

  • 想做付費 SaaS 平台對外賣 Docker 控制台(BSL 1.1 不允許)
  • 必須中文 UI 的場景(暫時等 i18n)
  • K8s / Swarm 為主的環境(Dockhand 是純 Docker 面板,不管 K8s)
  • 要超細緻稽核日誌、SOC 2 / ISO 認證需求(企業版才有完整支援)

八、小結

Dockhand 不是革命性的新發明,它只是把這幾年社群一直在喊的需求——Stack 直接吃 Git、全域變數、Volume 用瀏覽器看、跨環境統一管、日誌不切頁——一次到位地交出來。在 Portainer CE 商業化氣味越來越重的時刻,它出現的時間點很對。

對 NAS 自架族來說,現在就值得把它跟你現有的面板並行裝一陣子,看用得順不順手。資料卷掛好、別忘了開驗證、套個反向代理,遷移成本其實很低。BSL 1.1 在個人與內部使用層面完全等同開源;對企業使用者來說,2029 年自動轉 Apache 2.0 也是個合理的長期承諾。

至於它能不能真正取代 Portainer 在生態圈的地位?要看 1.x 之後的 i18n 與 K8s 整合走向。但作為 2026 年的「下一個 Docker 面板首選」,Dockhand 已經拿到入場券了。

參考資料

分享這篇
X LinkedIn Facebook Hacker News Reddit

發佈留言

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

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料