- 逆向行駛 - https://520.be/ -

Beszel 深度開箱:10MB 記憶體打天下的監控神器,還是不該碰的未爆彈?

內容目錄

✨ Beszel 深度開箱:10MB 記憶體打天下的監控神器,還是你不該碰的 Docker Socket 未爆彈?

🔥 一句話總結懶人包:

Beszel 是 2026 年在自架圈竄紅的輕量伺服器監控工具,Agent 只吃 10-25MB 記憶體、Hub 也才 30-45MB,GitHub 已累積 23.5k 顆星星,用 MIT 授權完全免費開源。它用五分鐘部署、零學習曲線的姿態,把「一台平價 VPS 該不該裝監控」這個長年被 Prometheus 高門檻勸退的問題直接解決掉。但它同時也曾經爆出Docker API 路徑穿越底層框架認證繞過兩個高風險 CVE,加上預設要求掛載 /var/run/docker.sock,適合個人與小團隊自架,企業要導入核心生產環境前務必三思 ⚠️

你是不是也這樣過:VPS 上跑了七、八個 Docker 容器,某天網站突然變得像牛步一樣慢,你火急火燎地 SSH 進去,一個指令一個指令下 docker statshtopdf -h,像在夜市攤位前東問西問,才終於抓到是哪個容器把記憶體吃光了。等你搞定,客戶的 Line 已經連環叩了三次 🤬

這種「事後救火」的窘境,幾乎是每個自架玩家的共同記憶。網路上最常被推薦的解法是 Prometheus 搭 Grafana,聽起來很專業,但真正動手架設過的人都知道,那套系統光是 scrape_configsnode_exportercadvisor 這些名詞就足以讓一個週末泡湯,架好之後監控系統本身還要吃掉 500MB 以上的記憶體——比你要監控的服務本身還肥 🤦‍♂️

Beszel 的出現,就像是專門為「只有三到三十台機器、沒有專職 SRE 團隊」的個人與小團隊量身打造的解方。今天這篇文章,會把官方文件、GitHub Issues、Reddit 討論串跟資安機構的 CVE 紀錄一次爬梳清楚,讓你在動手安裝前,先搞懂它的能耐與地雷藏在哪裡 💪

🌐 Beszel 官方 GitHub 專案 [26]

[27]


🟦 🟦 🟦

📌 Beszel 到底是什麼?先搞懂 Hub 跟 Agent 這對搭檔

Beszel 是一位獨立開發者 henrygd(社群暱稱 Hank)主導的開源專案,用 Go 語言寫成,底層資料庫仰賴同樣走紅的開源框架 PocketBase。它解決的問題非常單純:讓你在不學 PromQL 查詢語法、不啃厚厚說明書的情況下,一眼看出「我的伺服器現在正不正常」🤠

💡 白話文教室:Hub 與 Agent 就像社區保全室與各棟大樓的門禁感應器

Beszel 採用「Hub-Agent(中控台與代理程式)」架構。Hub 就像社區的保全監視室,一個畫面統整全社區狀況;Agent 則是裝在每一棟大樓門口的感應器,每分鐘回報一次「這棟樓的用電量(CPU)、住戶數(記憶體)、垃圾量(硬碟)正不正常」。感應器本身極度省電(Agent 只吃 10-25MB 記憶體),保全室的螢幕也不用另外配一台超級電腦(Hub 只要 30-45MB) 🎯

相較於 Prometheus 動輒五百 MB 起跳的資源消耗,Beszel 的閒置 CPU 佔用甚至低於 0.1%。這種「克制」正是它在 2026 年能從幾千顆星快速衝到 23.5k 顆星的原因——它沒有想取代 Prometheus,而是專心把「小規模自架的日常監控需求」做到極致 😎

💡 碎碎念:為什麼 Prometheus 對小規模 VPS 是殺雞用牛刀?

Prometheus 的設計目標是「服務數量隨時在變動、指標動輒上百萬條」的動態容器化叢集場景。如果你只有幾台固定的 VPS,根本用不到服務探索(Service Discovery)、也不需要 PromQL 跑高維度聚合分析,更不需要三十天以上的高解析度歷史資料。這就像叫一台貨櫃輪去載你去便利商店買飲料,馬力用不完,油錢倒是燒得心疼 📉

[28]


🟩 🟩 🟩

🛡️ 核心功能全解析:官方宣傳 vs 實際能耐

Beszel 的功能可以拆解成四大主軸:系統基礎資源監控、容器深度解析、硬體進階感測,以及自動化警報推播。以下用表格把「說了什麼」與「實際做不做得到」攤開來看:

功能模組 實際表現 穩定度評估
主機基礎資源 精準追蹤 CPU 負載、記憶體(含 Swap 與 ZFS ARC 緩存)、多重分割區磁碟 I/O、各網卡即時與歷史流量 極佳
Docker/Podman 容器監控 只要把 docker.sock 掛進去,Hub 就自動列出所有運作中容器並描繪各自的資源消耗軌跡,不用額外裝 cAdvisor 極佳
S.M.A.R.T. 硬碟健康度 涵蓋 eMMC 壽命耗盡指標與 Linux mdraid 陣列健康度,但預設每小時才收集一次以避免頻繁喚醒硬碟 有延遲性,非即時
GPU 監控 自動識別並掛載對應收集器:Nvidia 用 NVML/nvidia-smi、AMD 用 amd_sysfs、Intel 用 intel_gpu_top,Apple Silicon 用 macmon 穩定
警報推播 整合 Shoutrrr 函式庫,可推送到 Discord、Telegram、Slack、Email、ntfy 等管道 穩定

但別被官方文宣沖昏頭,我們也挖出了三個「跟新手期待有落差」的地方:

  • 缺乏外部站點監控能力:Beszel 只能監控主機內部的資源耗用,它無法告訴你「網站是否從外部無法連線」。很多新手誤把它當成 Uptime Kuma 的替代品,結果網站已經對外 502 了,Beszel 儀表板上卻是一片綠燈,因為主機本身好好的,只是網站服務掛了 🛑
  • 沒有日誌聚合功能:Beszel 是純粹的「指標(Metrics)」收集器,收到 CPU 過載警報後,你沒辦法點進去看應用程式的錯誤日誌。要查日誌得另外搭配 Dozzle 或 Loki 📝
  • S.M.A.R.T. 資料有滯後性:預設每小時才收集一次硬碟健康度,硬碟溫度異常的警報可能會有長達一小時的延遲 🚨

[29]


🟪 🟪 🟪

📜 系統需求與依賴風險:輕量的代價是什麼?

先看硬體需求,這是 Beszel 最亮眼的招牌:

元件 建議環境 閒置記憶體佔用 閒置 CPU 佔用
Beszel Hub Linux/macOS/FreeBSD 30-45MB < 0.1%
Beszel Agent Linux/Windows/macOS 10-25MB < 0.01%
💡 白話文教室:這輕量到什麼程度?

一台 Hub 加五個 Agent 全部跑起來,CPU 使用率在最小規格的雲端主機上還能維持在 2% 以下。這就像請了六個保全,但六個人加起來的薪水只夠買一杯手搖飲——換算成監控軟體界的行話,這種資源效率確實驚人 🌟

但身為部落客,我們不能只講好聽的。以下是資安層面必須嚴肅指出的三個風險:

🧑‍🔧 DevOps 小知識:Docker Socket 掛載的潛在威脅

為了讀取容器狀態,Agent 容器部署時預設要求掛載宿主機的 /var/run/docker.sock。在資安實務上,把 Docker Socket 唯讀權限交給任何容器,等同開了一扇直通宿主機核心的後門。若 Agent 遭遇 0-day 漏洞利用,攻擊者理論上可繞過容器隔離,直接操縱宿主機的 Docker 守護行程。若特別在意這一點,官方社群討論串建議在 Agent 與 Docker Daemon 之間插入 docker-socket-proxy 容器,並封鎖 POST 等寫入權限,物理閹割 Agent 惡意修改宿主機的能力 ⚠️

另外,S.M.A.R.T. 硬碟監控在 Linux 環境下,Agent 必須取得 CAP_SYS_RAWIO(針對 SATA 硬碟)與 CAP_SYS_ADMIN(針對 NVMe 硬碟)的核心特權,或強制修改 udev 規則。這種過度膨脹的權限設定,某種程度上違反了「最小權限原則」,也是後面會提到的真實使用者痛點之一 😖

值得肯定的是,Beszel 的通訊認證機制設計得相當聰明:它採用非對稱的 Ed25519 SSH 金鑰搭配 WebSocket 通用令牌進行雙向認證。Hub 產生一組公私鑰對,只把「公鑰」交給 Agent,即使單一伺服器上的 Agent 被駭客攻陷,駭客也拿不到能控制中控 Hub 的私鑰 🔑

[30]


🟧 🟧 🟧

🛡️ 兩種連線模式:Hub 主動連 vs Agent 主動連

裝 Agent 之前,先在 Hub 介面點「Add System」,畫面會給出公鑰、Token 與 Agent 預設監聽的 45876 埠。接下來有兩種部署模式,差別在「誰主動連誰」:

  • 模式一:Hub 主動連 Agent(適合公開 IP 環境):Agent 開 45876 等 Hub 來連,需要設定 network_mode: host,否則 Agent 抓到的網卡會是 Docker 虛擬橋接,流量數字會全部算錯。防火牆規則務必只放行給 Hub 的 IP,不要開給全世界 ✨
  • 模式二:Agent 主動連 Hub(WebSocket,適合 NAT 後方機器):Agent 卡在 NAT 後面、沒公開 IP 的情境用這個,加一個 HUB_URL 環境變數即可,所有流量走 443 通過任何企業防火牆都沒問題 💯

比較進階的細節是:Agent 實際上會同時維護「WebSocket 主連線」與「SSH 備援通道」雙路徑。當 WebSocket 因為反向代理重啟等原因斷線時,Agent 會自動在 45876 埠開啟 SSH 監聽,讓 Hub 改用備援路徑連回來,指標不會中斷。這個備援機制搭配 Ed25519 金鑰互相驗證與伺服器指紋比對,確保只有原本配對的 Hub 跟 Agent 能夠對話 💡

🫂 新手求助:安裝卡關先看這裡

官方文件(Agent Installation [31])列出了 Docker、Podman、單一執行檔、Homebrew、WinGet/Scoop 五種安裝方式,多數自架玩家用 Docker Compose 最省事。若卡在「找不到系統」,優先檢查 network_mode: host 有沒有設對,以及防火牆是否放行 45876 埠給 Hub 的 IP。GitHub Discussions 區的社群回覆速度相當快,遇到冷門硬體或作業系統問題也可以先去搜尋既有討論串 🫶

[32]


🟥 🟥 🟥

🚀 四種真實使用情境:你該不該裝?

💪 一般輕量使用者(Homelab 玩家)——適合度:高

情境:你在家裡客廳擺了一台安裝 Proxmox 的微型主機,裡面跑著 Nextcloud、Jellyfin 等數十個容器。不需要企業級的 SLA 追蹤,只想每天下班後打開手機瀏覽器,確認硬碟沒快壞掉、CPU 溫度沒有飆破警戒線 📌

Beszel 消耗不到 50MB 記憶體,五分鐘就能部署完成,是這類情境的完美解方。完全免費、MIT 授權,小資族完全不用擔心荷包縮水 😎

💬 獨立開發者與自架玩家(DevOps)——適合度:中

情境:你維護著二十台散佈於不同雲端廠商的 VPS 節點,用 Ansible 腳本搭配 Beszel 的通用令牌,實現一鍵派發 Agent 並自動於 Hub 註冊。某台客戶機器 CPU 異常飆高時,Discord 頻道自動跳出警報,讓你在客戶抱怨前先行處理 💡

部署複雜度不高,跟現有 Docker 技術棧完全相容,值得自架。但一定要做好反向代理 HTTPS,並考慮用 docker-socket-proxy 降低容器逃逸風險 ⚠️

🏢 企業商業用途——適合度:低(需嚴格條件)

情境:一間中小型公司想用 Beszel 監控客戶伺服器,MIT 授權讓商業使用沒有法律障礙,也可以直接包裝成付費監控服務對外銷售 📌

但基於 缺乏細顆粒度權限管控(RBAC),難以符合 SOC2 稽核追蹤要求,加上底層 PocketBase 框架曾爆發供應鏈漏洞,不建議將 Beszel 部署於需符合 SOC2、HIPAA 或嚴格金融法規的核心生產環境。若一定要用,務必透過內部 VPN 限制存取,絕不對外公開 IP,並封鎖容器名稱中出現客戶個資(例如 db_client_xyz_production 這種命名方式,本身就有洩漏 PII 的風險) 🚨

🚨 高風險誤用場景:忘記設密碼的未爆彈

💡 白話文教室:「未封口的伺服器」就像沒鎖門就出門的房子

假設一名新手跟著教學文章,在公有雲 VPS 上用 Docker 啟動 Beszel Hub,對外暴露了 8090 通訊埠,但裝完後跑去吃午餐,忘記立刻開瀏覽器設定第一組管理員帳號。根據真實漏洞掃描平台的紀錄,Beszel 底層 PocketBase 的初始管理員註冊 API 在建立首個帳號前是完全對外敞開的(俗稱 Unfinished Installation 漏洞)。網路上的惡意掃描機器人會不間斷尋找這類暴露的連接埠,並搶先在數秒內幫你註冊管理員帳號。這就像你買了新房子,鑰匙插在門上就出門買便當,回來發現已經有陌生人在你家客廳搬沙發了 🆘

🚨 畫重點!千萬別踩雷:部署完 Beszel Hub 之後,請立刻開啟網頁完成初始管理員帳號設定,且強烈建議不要直接暴露 8090 通訊埠,一律透過 Caddy 或 Nginx Proxy Manager 反向代理並加上 HTTPS 加密 💣

[33]


🟫 🟫 🟫

🔐 隱私與資料安全:曾經爆發過的三個 CVE

Beszel 會巨細靡遺蒐集主機的底層指紋:完整的 CPU 型號、系統核心版本、每個網路介面的 MAC 與 IP 數據、硬碟精確分割區大小,以及所有運作中 Docker 容器的精確名稱與狀態。這代表如果你的容器名稱裡包含客戶名稱,這些商業機密也會被集中蒐集儲存在 Hub 的 SQLite 資料庫中 🤧

經查證國家弱點資料庫(NVD)與 GitHub 安全公告,Beszel 及其底層依賴曾爆發過三起具實質威脅的漏洞:

CVE 編號 威脅等級 漏洞機制 修補狀態
CVE-2026-27734 🔴 高風險
(CVSS 6.5)
Docker API 路徑穿越(Path Traversal):v0.18.2 之前,Hub 的容器日誌 API 未淨化使用者傳入的 container 參數,攻擊者可藉此穿越目錄,存取 Agent 宿主機任意 Docker Engine API v0.18.4 已修復
CVE-2026-40077 🟡 中低風險
(CVSS 3.5)
越權存取(IDOR):v0.18.7 之前,Hub 特定 API 缺乏權限校驗,攻擊者猜測系統 ID 字串即可跨權限讀取其他系統的機密監控數據 v0.18.7 已修復
CVE-2026-44166 🔴 極高風險
(CVSS 7.6)
PocketBase 供應鏈漏洞(帳號預先劫持):底層 PocketBase 處理 OAuth2 登入時的邏輯漏洞,攻擊者可預先偽造帳號劫持真實使用者的管理權限 PocketBase v0.22.42 已修復

💡 碎碎念:資安漏洞處置態度值得肯定

當 CVE-2026-27734 被回報時,維護者 henrygd 在極短時間內於 v0.18.4 釋出修補程式,並進一步強化格式驗證邏輯。查無任何維護者信任危機、道德爭議或內部團隊分裂紀錄的跡象,社群成員甚至主動協助分類數百個 Issues,整體生態圈相當健康 👍

企業機密資料適合透過此工具處理嗎?基於上述頻繁出現的權限繞過與路徑穿越漏洞,以及掛載 Docker Socket 的架構設計,強烈不建議將 Beszel 部署於需符合 SOC2、HIPAA 或嚴格金融法規的核心生產環境 🆖

[34]


🔷 🔷 🔷

📜 授權條款與法律合規:MIT 對商業極度友善

Beszel 及其官方 Agent 元件均採用極度寬鬆的 MIT License 授權條款:

  • 個人自架:無任何合規負擔,可自由修改原始碼、移除官方 Logo 或深度客製化儀表板 ✨
  • 商業 SaaS 對外提供:極度友善,企業可將 Beszel 部署在雲端環境並作為「加值付費服務」販售,只要保留原作者版權聲明與 MIT 許可證副本即可 💯
  • 整合進閉源產品:完全合法。與有傳染性的 GPL/AGPL 不同,硬體製造商可將 Agent 內嵌在自己的黑盒一體機韌體中出貨,不必開源自家商業程式碼 💡

法律灰色地帶主要出現在 歐盟 GDPR 與台灣個資法 這一塊:如果開發者習慣把客戶姓名或可識別性個人資料當成 Docker 容器命名規則(例如 database_john_doe),這些個資會被未經驗證地集中傳輸並儲存在 Hub 的 SQLite 資料庫中,在嚴格的資料稽核中可能被判定為未授權的 PII 傳輸 ⚠️

🩵 荷包試算:完全免費,但隱形成本不是零

Beszel 本身 0 元、MIT 授權沒有訂閱費用,這點跟需要付費雲端方案的 Netdata(超過 5 台節點需付費)比起來佛心很多。但自架仍需計算 VPS 租金(NT$150-300/月起跳,視規格)與你自己的維護時間成本。若只是想要「裝了就不用管」的體驗,記得把反向代理與 HTTPS 設好,否則多出來的資安事件善後成本,遠比省下的訂閱費用還貴 📉

[35]


🟨 🟨 🟨

😤 真實使用者痛點:GitHub Issues 挖出來的四大摩擦點

剝去「輕量、好用」的行銷包裝,我們深入挖掘 GitHub Issues 與 Reddit 社群討論,整理出使用者在真實部署中遭遇的痛苦:

  • S.M.A.R.T. 硬碟權限地獄:這是被無數進階使用者抱怨的痛點。為了解析硬碟底層資訊,Agent 必須以極高特權運行,但在啟用 SELinux 的 Fedora、TrueNAS 或 Unraid 等高度鎖定系統上,經常導致 Permission deniedexit status 2 的報錯。使用者被迫手動編寫 udev 規則更改 /dev/nvme0 的群組擁有權,對不熟悉 Linux 核心機制的人是一場災難 😖
  • Windows 生態系支援粗糙:官方提供的 .exe 執行檔未經微軟數位簽署,常遭 Windows Defender 攔截。當使用者試圖用 WinGet 搭配 Ansible 自動化佈署時,安裝腳本仍強制要求互動式輸入 SSH Key,導致自動化部署流程卡死 🚫
  • Kubernetes 叢集逾時斷線:當 Hub 部署在 Kubernetes 叢集並透過 Nginx Ingress 暴露服務時,Agent 與 Hub 的 WebSocket 連線會頻繁中斷,出現大量假警報。官方文件把解法(手動添加 proxy-read-timeout: “3600” 標記)深埋在進階部署章節,導致初期除錯極為困難 🚨
  • 記憶體計算跨平台差異:在某些非主流架構(如 aarch64 的 OpenWrt 路由器),環境變數 MEM_CALC=htop 會被無聲忽略,顯示的記憶體使用量與實際狀態脫節,說明開發者在邊緣架構上的測試還不夠周全 📉

[36]


🟩 🟩 🟩

🔄 替代方案冷酷比較:該選誰?

比較維度 🐹 Beszel 📈 Netdata 🔭 Prometheus+Grafana ⏱️ Uptime Kuma
設計哲學 極簡、輕量、直覺 電競級即時高頻監控 企業級、無限擴展 外部服務死活狀態頁
閒置記憶體 10-25MB 200-500MB 500MB-1GB 以上 ~30-50MB
學習曲線 五分鐘搞定 一鍵腳本,但介面資訊爆炸 需學 PromQL 與寫 YAML 五分鐘,圖形介面友善
商業模式 100% 免費(MIT) 超過 5 台節點需付費 開源,但人力維運成本高 100% 免費(MIT)
致命缺陷 無外部斷線監測、無日誌聚合 個人小主機跑起來明顯吃力 只看 CPU 負載是殺雞用牛刀 看不到伺服器內部負載

🌳 選擇建議決策樹

  • ✨ 需要追蹤 Kubernetes 叢集微服務、處理百萬級指標、有專職 SRE 團隊 → 選 Prometheus + Grafana 🎯
  • ✨ 只在乎「網站現在外部連得上嗎」→ 選 Uptime Kuma 💡
  • ✨ 家中或雲端幾台平價 VPS,只想用最少資源確認硬碟沒壞、Docker 容器沒卡死 → 選 Beszel 📌

2026 年自架圈的最佳實踐,其實是組建「輕量鐵三角」:用 Beszel 監控硬體、用 Uptime Kuma 監測外部連線、用 Dozzle 查閱容器日誌,整體資源消耗極低且完美互補 💪

[37]


🟪 🟪 🟪

🛡️ 綜合風險評級:不同族群該注意什麼

目標族群 風險等級 風險情境 關鍵建議
一般用戶/玩家 🟢 低 忘記設定第一組管理員密碼,Hub 被搶先劫持 部署完成後立刻開啟網頁完成初始設定,不直接暴露 8090 埠
系統網管/開發者 🟡 中低 直接掛載 docker.sock 帶來容器逃逸風險 務必維持 Hub 與 Agent 於 0.18.7 以上版本,考慮導入 docker-socket-proxy
大型企業/高合規 🔴 高 缺乏 RBAC,難符合 SOC2 稽核;PocketBase 供應鏈風險 不建議導入核心生產環境,改採具完善稽核日誌的專業方案

[38]


🏁 🏁 🏁

🏆 總結評分

評分維度 分數(10分制) 一句話評語
功能完整性 7 / 10 CPU、記憶體、硬碟、多平台 GPU 整合得極好,但缺外部站點偵測與日誌分析,仍屬「偏科」工具
資料安全性 6 / 10 曾出現破壞力極強的路徑穿越與認證繞過漏洞,加上預設索要高權限,架構上略顯粗放,但修補速度快
法律合規性 9 / 10 MIT 授權乾淨俐落,對個人、閉源商業包裝或 SaaS 服務商都極度友善
安裝易用性 8 / 10 基礎 Docker 使用者體驗如絲般順滑,扣分主要來自 S.M.A.R.T. 與 GPU 收集器的權限設定地獄
維護活躍度 9.5 / 10 更新極為頻繁,維護者對冷門硬體也願意投入精力適配,社群生態相當健康
🇹🇼 在地化(繁體中文) 8 / 10 官方網站已有繁體中文版本(beszel.dev/zh/),中文社群教學文章雖不算多但逐漸增加

🔥 加權綜合分數:約 7.9/10

最終建議:【強力推薦,但企業級應用請三思】

Beszel 完美體現了「少即是多」的系統設計哲學。在一個監控軟體動輒吞噬數百 MB 記憶體、需要花半天學查詢語法的年代,它用不到 25MB 的極致輕盈姿態,優雅解決了多數個人與小團隊在日常監控上的核心需求。只要妥善設定反向代理、立刻完成初始帳號設定,並視需求導入 docker-socket-proxy 降低風險,Beszel 絕對值得放進你的自架工具箱。但若你的組織需要符合 SOC2、HIPAA 等嚴格合規要求,這款工具目前還不是你該選的答案 🧐

[39]


🛠️ 🛠️ 🛠️

💪 附錄:安裝步驟完整教學

📝 第一步:部署 Beszel Hub(控制中心)

挑一台有對外網域、有反向代理的 VPS 當 Hub,建立工作目錄後建立 docker-compose.yml

services:</code>
<code>  beszel:</code>
<code>    image: henrygd/beszel:latest</code>
<code>    container_name: beszel</code>
<code>    restart: unless-stopped</code>
<code>    ports:</code>
<code>      - 8090:8090</code>
<code>    volumes:</code>
<code>      - ./beszel_data:/beszel_data</code>
<code>      - ./beszel_socket:/beszel_socket</code>
<code>    environment:</code>
<code>      APP_URL: https://beszel.example.com

啟動容器:

docker compose up -d

開瀏覽器到 http://伺服器IP:8090,第一個註冊的帳號會自動成為管理員。請務必立刻完成這一步,不要拖延 🚨

📚 第二步:部署 Agent(模式一:Hub 主動連 Agent)

適合 Hub 與 Agent 都在同機房、或 Agent 有公開 IP 的情境:

services:</code>
<code>  beszel-agent:</code>
<code>    image: henrygd/beszel-agent:latest</code>
<code>    container_name: beszel-agent</code>
<code>    restart: unless-stopped</code>
<code>    network_mode: host</code>
<code>    volumes:</code>
<code>      - ./beszel_agent_data:/var/lib/beszel-agent</code>
<code>      - /var/run/docker.sock:/var/run/docker.sock:ro</code>
<code>    environment:</code>
<code>      LISTEN: 45876</code>
<code>      KEY: "從 Hub 介面複製的公鑰"</code>
<code>      TOKEN: "從 Hub 介面複製的 Token"

📝 第三步:部署 Agent(模式二:Agent 主動連 Hub,WebSocket)

適合 Agent 卡在 NAT 後面、沒有公開 IP 的情境,只需多加一個 HUB_URL 變數:

environment:</code>
<code>  HUB_URL: "https://beszel.example.com"</code>
<code>  KEY: "從 Hub 介面複製的公鑰"</code>
<code>  TOKEN: "從 Hub 介面複製的 Token"

💡 第四步:用 Caddy 設定反向代理與 HTTPS

不建議直接讓 8090 埠裸露在公網,用 Caddy 處理反向代理與自動憑證:

beszel.example.com {</code>
<code>    request_body {</code>
<code>        max_size 10MB</code>
<code>    }</code>
<code>    reverse_proxy 127.0.0.1:8090 {</code>
<code>        transport http {</code>
<code>            read_timeout 360s</code>
<code>        }</code>
<code>    }</code>
<code>}

設定完成後把 Docker 埠映射也收緊,只讓 Beszel 監聽本機:

ports:</code>
<code>  - 127.0.0.1:8090:8090

📌 第五步:加上 Docker 健康檢查(選用,進階)

beszel:</code>
<code>  healthcheck:</code>
<code>    test: ["CMD", "/beszel", "health", "--url", "http://localhost:8090"]</code>
<code>    interval: 120s</code>
<code>    timeout: 5s</code>
<code>    retries: 3</code>
<code>    start_period: 5s</code>

<code>beszel-agent:</code>
<code>  healthcheck:</code>
<code>    test: ["CMD", "/agent", "health"]</code>
<code>    interval: 120s</code>
<code>    timeout: 5s</code>
<code>    retries: 3</code>
<code>    start_period: 15s

📌 第六步:設定告警規則(預設值等於沒設)

每台機器加進 Hub 後,告警閾值預設都是空的,代表機器爆掉也沒人通知。至少要設這幾條基本規則:

  • CPU 持續 10 分鐘超過 80%
  • 記憶體使用率超過 90%
  • 磁碟使用率超過 85%
  • 系統離線超過 2 分鐘

通知管道支援 SMTP,以及 Shoutrrr 相容的各種第三方服務(Telegram、Discord、Slack、Gotify 等)。一個容易踩的雷:磁碟告警會分別計算根目錄與每個被掛載的卷,如果 Docker 資料卷掛在獨立分割區,那條警報得單獨開啟,光設根目錄不會自動涵蓋 📂

[40]


📎 📎 📎

📚 參考資料與延伸資源

列印本文 [49] 👨‍👩‍👧‍👦 0 次瀏覽