本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

一个非常简单的webhook服务器,用于启动shell脚本。
!Logo
webhookd是一个轻量级的webhook服务器,允许通过HTTP请求触发shell脚本执行。它设计简洁,配置灵活,支持多种参数传递方式、实时日志流、通知机制、认证与签名验证等功能,适用于自动化部署、CI/CD流程触发、简单任务调度等场景。
$ docker run -d --name=webhookd \ -v ${PWD}/scripts:/scripts \ -p 8080:8080 \ ncarlier/webhookd
官方镜像轻量适用于简单脚本,如需高级功能(如Docker CLI或Docker Compose交互),可使用ncarlier/webhookd:edge-distrib镜像:
$ 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查看所有参数及对应环境变量。所有配置变量详见etc/default/webhookd.env文件。
核心配置项:
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/echoGET方法且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头覆盖(秒)示例:
curl -H "X-Hook-Timeout: 5" http://localhost:8080/echo?foo=bar
X-Hook-ID头获取的ID访问http://localhost:8080/<NAME>/<ID>查看历史日志脚本执行后可发送通知,仅输出中以特定前缀(默认notify:)开头的行将被发送。通过WHD_NOTIFICATION_URI配置通知目标。
配置URI:[***](prefix可选,默认notify:)
POST payload格式:
{ "id": "42", "name": "echo", "text": "notify: Hello World\n", "error": "错误信息(如有)" }
支持Mattermost、Slack、***等webhook端点。
配置URI:mailto:***?smtp=smtp.example.com:587&username=user&password=pass&from=***
支持参数:smtp(SMTP服务器)、username/password(认证信息)、conn(连接类型:tls/tls-insecure/plain)、from(发件人)、subject(主题)。
通过htpasswd文件启用HTTP基本认证:
htpasswd -B -c .htpasswd api
export WHD_PASSWD_FILE=/path/to/.htpasswd
curl -u api:password -XPOST "http://localhost:8080/echo?msg=hello"
支持HTTP Signatures和Ed25519签名验证,需配置公钥文件(PEM格式):
export WHD_TRUST_STORE_FILE=/path/to/pubkey.pem
curl -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"
curl -X POST \ -H 'X-Signature-Timestamp: 1620000000' \ -H 'X-Signature-Ed25519: base64-signature' \ "http://localhost:8080/echo?msg=hello"
启用TLS加密:
docker 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
docker 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许可证,详见LICENSE。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429