Deploy Webhook Buffer
Depoly Webhook Buffer on Railway
webhook-buffer
Just deployed
/data
Deploy and Host Webhook Buffer with Railway
Webhook Buffer is a lightweight, self-hosted relay that sits between webhook senders and your services. It accepts every incoming webhook instantly, stores it on disk, and fans it out to one or more destinations, retrying until each one succeeds. If a destination goes down, nothing is lost: webhooks are held until it comes back.
About Hosting Webhook Buffer
Webhook Buffer is a single static Rust binary backed by SQLite, shipped as a tiny multi-arch Docker image. On Railway it runs as one service with a persistent volume mounted at /data, where the
database lives. Senders always get an immediate 202 Accepted, so slow or offline destinations never cause upstream timeouts. Error responses are retried with exponential backoff up to a
per-destination limit. Destinations that don't respond at all are held until they call their recovery URL (/d/{token}/alive), or until you click "Mark alive" in the panel. A built-in web panel,
protected by an admin token, lets you manage endpoints and destinations, inspect headers and bodies, replay webhooks, and work through the retry queue.
Common Use Cases
Webhook Buffer is a single static Rust binary backed by SQLite, shipped as a tiny multi-arch Docker image. On Railway it runs as one service with a persistent volume mounted at /data, where the
database lives. Senders always get an immediate 202 Accepted, so slow or offline destinations never cause upstream timeouts. Error responses are retried with exponential backoff up to a
Common Use Cases
- Keep GitHub, Stripe, or CI webhooks from being lost while your app is deploying, restarting, or down for maintenance
- Fan out a single webhook source to several services (staging and production, multiple microservices, logging)
- Inspect and replay real webhook payloads while debugging an integration
- Put a stable public webhook URL in front of a service on a home server or private network that is sometimes offline
Dependencies for Webhook Buffer Hosting
- A Railway volume mounted at
/datafor the SQLite database - An
ADMIN_TOKENsecret for the web panel and admin API
Deployment Dependencies
- Source & docs: https://github.com/PIXELZX0/webhook-buffer
- Docker image:
ghcr.io/pixelzx0/webhook-buffer:latest
Implementation Details
| Variable | Default | Description |
|---|---|---|
ADMIN_TOKEN | generated | Token for the web panel and /api |
LISTEN_ADDR | 0.0.0.0:8080 | Listen address (expose port 8080) |
DB_PATH | /data/webhook-buffer.db | SQLite database path |
RETENTION_DAYS | 7 | How long delivered webhooks are kept (undelivered ones are never pruned) |
MAX_BODY_BYTES | 10485760 | Maximum accepted body size |
- Health check path:
/healthz. It returns200 okwhen the database responds. - Webhook URLs look like
https:///h/{slug}. Sub-paths and query strings are forwarded to each destination. - Run a single replica. The SQLite database lives on one volume and is not designed to be shared between instances.
Why Deploy Webhook Buffer on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to scale it vertically as your traffic grows.
By deploying Webhook Buffer on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway
By deploying Webhook Buffer on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
webhook-buffer
ghcr.io/pixelzx0/webhook-buffer:latestADMIN_TOKEN
Token for the web panel and /api
