本篇要解決的問題
PM2 是 Node.js 裡常用的 process manager,一般如果是透過網頁監控、重啟,大概會使用官方的 Keymetrics。
但,But!就是這個 But!免費版最多只能監控 4 個 Process,再多就要掏出魔法小卡了。
問了 ChatGPT 後,發現有一個開源的替代方案:pm2.web,可以自己架設,不管幾個 process 都完全免費。
以下筆記如何使用 Vercel + MongoDB Atlas 部署 pm2.web,免費監控我們的 PM2。
架構概念
pm2.web 分成兩部分,如下。
Dashboard
Next.js 寫前端 + API。
本篇選擇放在 Vercel 執行。
Backend
官方文件裡叫 Backend,其實它就是跑在目標伺服器上的 Agent。
Agent 在我們要監控的伺服器上,透過 PM2 BUS API 讀取 process 狀態,再把資料寫到 MongoDB。
Dashboard 與 Backend 之間是透過 MongoDB Atlas 溝通,不需要開防火牆或暴露 192.168.* 內網。
步驟一:MongoDB Atlas 設定
前往 MongoDB Atlas 建一個免費 cluster。
複製連線字串,待會會用到:
在 Network Access 加上 0.0.0.0/0
(因為 Vercel 是浮動 IP,否則無法連線):
步驟二:Vercel 部署 Dashboard
點擊 官方文件 上的「Deploy」按鈕:
設定環境變數:
-
MONGODB_URI
= 我們的 Atlas 連線字串 -
NEXTAUTH_SECRET
= 自己生成的隨機字串(可用openssl rand -base64 32
,或直接開啟 https://generate-secret.vercel.app/32)
第一次部署後,一定會出現失敗,免緊張、免害怕,選單點擊 Settings → Build & Development Settings → Framework Preset,選 Next.js,之後再重新 Redeploy 一次,就 OK 了。
部署完成後,打開網址會進入註冊頁。
⚠️ 重要提醒:第一個註冊的帳號會自動成為 owner,之後就能在 UI 裡管理權限。
步驟三:安裝 Backend Agent
官方文件:pm2.web - Backend
假設內網伺服器 IP 是 192.168.1.2
,進入主機後:
下載與安裝
git clone https://github.com/oxdev03/pm2.web.git
cd pm2.web
# 根目錄先安裝(避免 pm2 報錯)
npm install
# 進入 backend 目錄
cd apps/backend
npm install
# 複製環境變數範例
cp .env.example .env
設定環境變數
編輯 .env
檔:
MONGODB_URI=我們的 Atlas 連線字串
啟動 Agent
接著,終端機要回到專案的根目錄,不能停留在 backend 的資料夾中。
執行以下:
pm2 start npm --name "pm2.web" -- run "start:apps:backend"
pm2 save
pm2 startup # 重開機後會自動啟動
接著瀏覽器打開 Vercel 提供的網址,就會看到 Dashboard 上出現資料了:
這樣 Backend 就會定期把 PM2 狀態推送到 Atlas,Dashboard 會自動讀取。
效果展示
在 Dashboard 上我們可以:
- 查看所有 process 的狀態(Running、CPU、Memory 使用率)
- 遠端重啟、停止 process
- 監控多台伺服器的 PM2 狀態
總結
照著本筆記文的方式依步驟執行後,我們就能用 Vercel + MongoDB Atlas + pm2.web,打造一個:
- ✅ 完全免費
- ✅ 介面美觀,有深色模式
- ✅ 可控管使用者權限
- ✅ 透過網站進行多機管理
的 PM2 監控系統,不用因為沒有魔法小卡,被 4 個 process 給限制。
Top comments (0)