run shell scripts as secure, streaming HTTP webhook endpoints
webhookd is a minimalist HTTP server that turns ordinary shell scripts into webhook endpoints. Drop an executable script into a directory and it becomes callable over HTTP, with the script's output streamed back to the caller in real time as chunked transfer encoding or Server-Sent Events. Request parameters and headers are passed to the script as environment variables, so a webhook can react to whatever triggered it. It is ideal for triggering deployments, maintenance jobs, backups or any automation from a CI/CD pipeline, a chatbot, a monitoring alert or another service's outgoing webhook.
The cloudimg image runs webhookd under systemd behind an nginx TLS terminator, secure by default: HTTP Basic authentication is mandatory, so no unauthenticated request can ever run a hook. No secret is baked in, a unique auth credential and a per-instance self-signed TLS certificate are generated on first boot and written to a root-only file. The OS ships fully patched with unattended security updates, and every image is paired with a step-by-step deploy guide and 24/7 cloudimg support.
This is a repackaged open source software product wherein additional charges apply for cloudimg support services.
webhookd is a lightweight HTTP server that transforms any executable shell script into a callable HTTP webhook endpoint. This image delivers webhookd 1.22.0 fully installed and running behind an nginx TLS terminator, a production ready webhook server answering HTTPS requests within minutes of launch, with no compilation, no manual configuration, and no security hardening required.
Why choose this image over a self-managed deployment: deploying webhookd from source means installing Go, compiling the binary, configuring systemd, generating TLS certificates, setting up a reverse proxy, and hardening credentials, typically hours of work. This image eliminates that. You launch the instance, retrieve the auto-generated credentials, and invoke hooks immediately. Unlike a serverless function, webhookd runs continuously with no cold starts and no per-invocation fees, so you can run unlimited webhook calls on a single instance. Hook output streams back to the caller line by line as chunked transfer encoding or Server-Sent Events, rather than waiting for the whole execution to finish.
Secure by default, not secure by effort: unlike a bare deployment or an image that ships with a default password, this image generates unique credentials on every launch. HTTP Basic authentication is mandatory and no unauthenticated request can ever execute a hook, every such request is refused with HTTP 401. A unique username and password are generated on first boot, hashed with bcrypt, and stored only in a root owned file, and a per-instance self-signed TLS certificate is generated for nginx, so nothing is baked into the image. webhookd binds exclusively to the loopback interface while nginx on port 443 faces the network. The operating system ships fully patched with unattended security updates enabled.
How it works: nginx terminates HTTPS on port 443 with the per-instance certificate and reverse proxies to webhookd on the loopback interface. Response buffering is disabled so streaming and Server-Sent Events output reaches the client the instant the script produces it. An unauthenticated health probe and an HTTP to HTTPS redirect are served on port 80, and systemd manages the service for automatic restarts and clean logging. Request query parameters and HTTP headers are passed to your script as environment variables, so a hook can react to whatever triggered it.
Common uses include triggering deployments from a CI/CD pipeline such as GitHub, GitLab or Jenkins, running infrastructure tasks from a chatbot command, kicking off scheduled maintenance such as backups or certificate renewal, and restarting or scaling services from any system that can make an HTTP call. For example, a monitoring tool can fire a webhook when disk usage crosses a threshold, and the hook script snapshots a database, uploads the backup, and streams a confirmation back to the caller. To add your own hook, drop an executable script into the hooks directory and call it by name over HTTPS; to change what runs, edit the script, with no redeployment and no recompilation. The current release available is webhookd 1.22.0.
This is a repackaged open source software product with additional charges for cloudimg support services. webhookd is distributed under the MIT license. cloudimg is not affiliated with or endorsed by the webhookd project or Nicolas Carlier. All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.