跳轉到內容

Webhook

WebHook 管理

Webhook 允許您透過 HTTP 請求觸發伺服器上的腳本執行,藉此實現自動化部署、CI/CD 整合等功能。

建立 Webhook

點選 建立 Webhook 按鈕並填寫以下資訊:

  • 名稱:Webhook 的名稱,用於識別其用途
  • 使用者: 執行指令碼的系統使用者。 應儘量使用專用的低權限部署使用者,不要預設使用 root
  • 原始輸出: 啟用時直接返回指令碼輸出;關閉時返回 JSON 格式。
  • 指令碼: 需要執行的 Shell 指令碼,預設提供 #!/bin/bash 模板。

建立後,指令碼會作為獨立 .sh 檔案儲存在面板資料根目錄的 server/webhook 下,檔名使用生成的 Key,許可權為 0755。 刪除 WebHook 時會同時刪除該指令碼檔案。

指令碼透過 bash 執行。 設定使用者為 root 或留空時,指令碼直接以面板程序擁有者執行;選擇其他使用者時,透過 su -s /bin/bash -c 切換使用者執行,因此目標使用者必須存在並有權執行指令碼。

呼叫方式

建立後會生成唯一 Key, 通過以下地址觸發:

https://your-panel-domain/webhook/{key}

GET 和 POST 請求均可觸發。 列表中的 複製 URL可以直接複製完整呼叫地址。

編輯 WebHook

點選某列的 編輯 按鈕修改現有 WebHook。 編輯對話方塊提供與建立表單相同的 名稱使用者原始輸出指令碼欄位,並增加 啟用 開關,可在編輯時直接啟停。 儲存後會重寫指令碼檔案並更新配置,Key 保持不變。

列表操作

列表中的每一列提供以下操作:

列表操作說明
複製 URL將完整的 {panel-origin}/webhook/{key} 地址複製到剪貼簿。
編輯 WebHook開啟編輯對話方塊。
刪除確認後刪除 WebHook 及對應指令碼檔案。

還可以直接在列表的 啟用列開啟或關閉 WebHook。

使用場景

Git 自動部署

結合 GitHub 或 GitLab WebHook,在推送程式碼後部署:

bash
#!/bin/bash
cd /opt/ace/projects/myproject
git pull origin main
npm install
npm run build

由外部系統觸發任務

刪除命令必須使用明確且經過校驗的路徑,不要直接拼接請求引數。

bash
#!/bin/bash
# 清理臨時檔案
rm -rf /tmp/cache/*
# 重啟服務
systemctl restart myapp

CI/CD 整合

在流水線中呼叫:

bash
curl -X POST https://panel.example.com/webhook/your-key

列表欄位

欄位說明
名稱WebHook 名稱。
金鑰用於構造呼叫地址的唯一標識。
執行使用者執行指令碼的系統使用者。
原始輸出是否直接返回文本輸出。
啟用是否允許呼叫。
呼叫次數累計呼叫次數。
最後呼叫最近呼叫時間。
建立時間WebHook 建立時間。

安全與故障排查

  1. Key 屬於敏感資訊,不要提供給不可信人員。
  2. 原始輸出會直接返回標準輸出; 關閉時由 AcePanel 包裝為 JSON。
  3. 呼叫失敗時,檢查指令碼許可權、執行使用者、路徑、環境變數、超時、退出碼和標準錯誤。 互動式 Shell 與 WebHook 的 PATH 和使用者配置可能不同。
  4. 把請求資料用於命令前必須進行校驗,並在指令碼中加入明確的錯誤處理。
  5. URL 出現在程式碼倉庫、CI 日誌、聊天記錄或分析系統中時,刪除並重新建立 WebHook。