跳转到内容

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。