
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个非常简单的webhook服务器,用于启动shell脚本。
!https://github.com/ncarlier/webhookd/raw/master/webhookd.svg
webhookd是一个轻量级的webhook服务器,允许通过HTTP请求触发shell脚本执行。它设计简洁,配置灵活,支持多种参数传递方式、实时日志流、通知机制、认证与签名验证等功能,适用于自动化部署、CI/CD流程触发、简单任务调度等场景。
基本部署
bash$ docker run -d --name=webhookd \ -v ${PWD}/scripts:/scripts \ -p 8080:8080 \ ncarlier/webhookd
高级功能镜像
官方镜像轻量适用于简单脚本,如需高级功能(如Docker CLI或Docker Compose交互),可使用ncarlier/webhookd:edge-distrib镜像:
bash$ docker run -d --name=webhookd \ -v ${PWD}/scripts:/scripts \ -v /var/run/docker.sock:/var/run/docker.sock \ -p 8080:8080 \ ncarlier/webhookd:edge-distrib
webhookd可通过命令行参数或环境变量配置,执行webhookd -h查看所有参数及对应环境变量。所有配置变量详见https://github.com/ncarlier/webhookd/blob/master/etc/default/webhookd.env%E6%96%87%E4%BB%B6%E3%80%82
核心配置项:
WHD_SCRIPTS/-script:脚本目录路径(默认./scripts)WHD_HOOK_TIMEOUT:全局webhook超时时间(秒,默认10)WHD_HOOK_LOG_DIR:日志存储目录WHD_NOTIFICATION_URI:通知目标URI(HTTP或Email)WHD_PASSWD_FILE:htpasswd认证文件路径WHD_TRUST_STORE_FILE:签名验证公钥文件(PEM格式)WHD_TLS:启用TLS(true/false)WHD_TLS_DOMAIN:ACME域名(启用ACME时)webhook通过脚本目录结构定义,默认位于./scripts(可通过WHD_SCRIPTS修改)。目录结构示例:
/scripts ├── /github │ ├── build.sh │ └── deploy.sh ├── push.js └── echo.sh
注:支持任何可执行文件(需添加shebang头),如
.sh、.js等。
URL路径对应脚本路径,可省略脚本扩展名(默认查找.sh文件)。示例:
/scripts/github/build.sh对应URL:http://localhost:8080/github/build/scripts/echo.sh对应URL:http://localhost:8080/echo响应流类型
GET方法且Accept: text/event-stream头POST方法或默认GET)脚本参数来源及转换规则:
?foo=bar → foo=bar)Content-Type → content_type)application/x-www-form-urlencoded:键值对转换为变量text/*或application/json:作为脚本第一个参数传递额外内置变量:
hook_id:自动递增的hook IDhook_name:hook名称hook_method:HTTP请求方法x_forwarded_for:客户端IPx_webauth_user:认证用户名(若启用认证)WHD_HOOK_TIMEOUT环境变量设置(秒)X-Hook-Timeout HTTP头覆盖(秒)示例:
bashcurl -H "X-Hook-Timeout: 5" http://localhost:8080/echo?foo=bar
X-Hook-ID头获取的ID访问http://localhost:8080/<NAME>/<ID>查看历史日志脚本执行后可发送通知,仅输出中以特定前缀(默认notify:)开头的行将被发送。通过WHD_NOTIFICATION_URI配置通知目标。
HTTP通知
配置URI:http://example.org?prefix=notify:(prefix可选,默认notify:)
POST payload格式:
json{ "id": "42", "name": "echo", "text": "notify: Hello World\n", "error": "错误信息(如有)" }
支持Mattermost、Slack、***等webhook端点。
Email通知
配置URI:mailto:user@example.com?smtp=smtp.example.com:587&username=user&password=pass&from=webhookd@example.com
支持参数:smtp(SMTP服务器)、username/password(认证信息)、conn(连接类型:tls/tls-insecure/plain)、from(发件人)、subject(主题)。
通过htpasswd文件启用HTTP基本认证:
bashhtpasswd -B -c .htpasswd api
bashexport WHD_PASSWD_FILE=/path/to/.htpasswd
bashcurl -u api:password -XPOST "http://localhost:8080/echo?msg=hello"
支持HTTP Signatures和Ed25519签名验证,需配置公钥文件(PEM格式):
bashexport WHD_TRUST_STORE_FILE=/path/to/pubkey.pem
HTTP Signatures示例:
bashcurl -X POST \ -H 'Date: Wed, 21 Oct 2015 07:28:00 GMT' \ -H 'Signature: keyId="my-key",algorithm="rsa-sha256",headers="(request-target) date",signature="base64-signature"' \ "http://localhost:8080/echo?msg=hello"
Ed25519签名示例:
bashcurl -X POST \ -H 'X-Signature-Timestamp: 1620000000' \ -H 'X-Signature-Ed25519: base64-signature' \ "http://localhost:8080/echo?msg=hello"
启用TLS加密:
bashdocker run -d --name=webhookd \ -v ${PWD}/scripts:/scripts \ -v ${PWD}/certs:/certs \ -p 443:443 \ -e WHD_TLS=true \ -e WHD_TLS_CERT_FILE=/certs/server.pem \ -e WHD_TLS_KEY_FILE=/certs/server.key \ ncarlier/webhookd
bashdocker run -d --name=webhookd \ -v ${PWD}/scripts:/scripts \ -v ${PWD}/acme:/acme \ -p 80:80 -p 443:443 \ -e WHD_TLS=true \ -e WHD_TLS_DOMAIN=hook.example.com \ ncarlier/webhookd
MIT许可证,详见https://github.com/ncarlier/webhookd/blob/master/LICENSE%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





来自真实用户的反馈,见证轩辕镜像的优质服务