宝塔面板 Webhook 怎么设置

chinaz
chinaz 正式会员超兽战士
发布于 2026-10-07 04:52 ·1 浏览 ·0 回复

照着做完,你就能用宝塔面板的 WebHook 插件搭出一个能被外部请求触发的自动化入口,最典型的用途是:代码一 push 到 Git 仓库,服务器自动拉取更新。

第一步:安装宝塔 WebHook 插件

这一步要做的,是把 WebHook 功能装到面板里,装完会在软件商店的已安装列表里多出一个「宝塔WebHook」条目。

登录宝塔面板(以 Linux 面板 9.x 为例),左侧菜单点「软件商店」,在搜索框输入 宝塔WebHook,找到官方那个免费插件,点右侧「安装」。安装过程十几秒,完成后点「设置」,会弹出一个新页面,里面就是 Hook 管理界面。

注意:插件名是「宝塔WebHook」,不是第三方改版的「Webhook 管理器」之类,装错了接口地址和参数规则都不一样。

第二步:添加一个 Hook 并写脚本

这一步要得到一个带 access_key 的专属调用地址,以及一段真正干活的 Shell 脚本。

在插件页面点「添加Hook」,填写三项:

  • 名称:随便起,比如 deploy-blog
  • 脚本:写你要执行的命令
  • 备注:可留空

脚本示例,用来拉取站点代码:

#!/bin/bash
echo "收到参数: $1"
cd /www/wwwroot/mysite || exit 1
git pull origin main 2>&1
echo "部署完成 $(date)"

保存后,列表里这条 Hook 的右侧会显示调用地址,形如:

http://你的服务器IP:8888/hook?access_key=xxxxxxxx&param=test

注意:脚本以 root 身份执行。拉代码的目录必须提前做过 git clone,并且配置好免密(SSH Deploy Key 或把 token 写进 remote),否则 git pull 会卡在输入密码上。

第三步:本地测试,确认能跑通

这一步是为了在接外部平台之前,先确认脚本本身没问题。

在你自己电脑的终端里执行:

curl "http://你的服务器IP:8888/hook?access_key=xxxxxxxx&param=test"

返回内容里应该能看到脚本的 echo 输出。如果没反应,回插件页面点「日志」,看有没有执行记录。

注意:面板端口(默认 8888)必须在云厂商安全组和系统防火墙里放行,否则外网访问不到。如果面板开了 HTTPS 或改了端口、设了安全入口,调用地址要按面板「设置 → 面板端口/面板SSL」里的实际配置改写。

第四步:接到 Git 平台(自动部署场景)

这一步让 push 代码自动触发上一步的脚本。

以 GitHub 为例:进入仓库页面,点右上角「Settings」→ 左侧「Webhooks」→「Add webhook」,填写:

  • Payload URL:粘贴第二步那条带 access_key 的地址
  • Content type:选 application/json
  • Which events:选 Just the push event
  • Active:勾上

点「Add webhook」保存。之后往这个仓库 push 一次,去 GitHub 的 Webhooks 页面点开刚建的这条,下方「Recent Deliveries」里能看到一次绿色的 200 响应,同时插件日志里也会出现记录。

Gitee 的路径是:仓库 → 「管理」→「WebHooks」→「添加」,填法与上面一致。

注意:宝塔插件不会解析 Git 平台发来的 JSON 请求体,所以「哪个分支触发」这类判断,要靠 URL 里的 param 传参、在脚本里用 $1 取,或者在脚本里自己写 if 判断。

第五步:加一层安全防护

这一步决定你的服务器会不会被人随手调用。

access_key 等于执行权限,一旦泄露,任何人都能触发你的脚本。三个最低限度的动作:

  1. 不要把带 access_key 的地址贴到公开仓库、论坛或聊天群里
  2. 脚本里只做固定动作,绝对不要写成 eval $1 这种把参数当命令执行的形式
  3. 在宝塔「网站 → 设置 → 配置文件」里,或用云厂商安全组,只允许 Git 平台的回调 IP 段访问该端口

小结

  • 装官方「宝塔WebHook」插件,在插件页面添加 Hook,得到带 access_key 的调用地址
  • 脚本以 root 运行,git pull 前先把免密和目录准备好
  • 先用 curl 本地测通,再去 GitHub/Gitee 的 Webhooks 页面填地址,事件选 Just the push event
  • 分支、环境等差异通过 URL 的 param 传给脚本 $1,插件不解析 JSON 请求体
  • access_key 就是执行权限,不外泄、不拼接进命令、尽量限制来源 IP
版权声明:本文来自 GJ论坛《宝塔面板 Webhook 怎么设置》
原文链接:https://www.gj0.com/thread-79.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~