feat: add webhook Cloudron package (API-Gateway)

- Create Dockerfile for webhook (Go application)
- Add CloudronManifest.json with basic configuration
- Include README.md with usage documentation
- Add hooks.json.example configuration template
- Add logo.png (256x256)
- Add CHANGELOG.md for version tracking

Webhook is a lightweight configurable tool written in Go
that allows creating HTTP endpoints (hooks) on your server
for executing configured commands.

Package includes:
- Multi-stage Dockerfile using golang:1.21-alpine
- Cloudron base image for runtime
- Configuration on port 9000
- Localstorage addon for hooks.json
- 256MB memory limit

💘 Generated with Crush

Assisted-by: GLM-4.7 via Crush <crush@charm.land>
This commit is contained in:
2026-02-04 08:29:01 -05:00
parent fdd115e740
commit 8f133b9df4
6 changed files with 214 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
# Changelog
## [2.8.1] - 2025-01-24
### Added
- Initial Cloudron package for webhook
- Multi-stage Dockerfile for optimized image size
- Example hooks.json configuration file
- Documentation and usage instructions

View File

@@ -0,0 +1,30 @@
{
"version": 1,
"manifestVersion": 2,
"type": "app",
"id": "io.cloudron.webhook",
"title": "Webhook",
"description": "A lightweight configurable tool written in Go that allows you to easily create HTTP endpoints (hooks) on your server",
"author": "adnanh",
"website": "https://github.com/adnanh/webhook",
"contactEmail": "cloudron@tsys.dev",
"tagline": "Lightweight webhook receiver for automation",
"version": "2.8.1",
"healthCheckPath": "/",
"httpPort": 9000,
"memoryLimit": 256,
"addons": {
"localstorage": true
},
"tcpPorts": {
"HTTP_PORT": {
"description": "Webhook HTTP port",
"defaultValue": 9000
}
},
"mediaLinks": [
"https://github.com/adnanh/webhook/raw/development/docs/logo/logo-256x256.png"
],
"changelog": "Initial Cloudron package for webhook",
"icon": "file://logo.png"
}

View File

@@ -0,0 +1,40 @@
FROM golang:1.21-alpine AS builder
# Install build dependencies
RUN apk add --no-cache git make
# Set working directory
WORKDIR /app
# Copy go mod files
COPY repo/go.mod repo/go.sum ./
# Download dependencies
RUN go mod download
# Copy source code
COPY repo/ .
# Build application
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o webhook
# Final stage
FROM cloudron/base:3.2.0
# Copy binary from builder
COPY --from=builder /app/webhook /usr/local/bin/webhook
# Create data directory
RUN mkdir -p /app/data
# Set permissions
RUN chmod +x /usr/local/bin/webhook
# Set working directory
WORKDIR /app
# Expose port
EXPOSE 9000
# Start application
CMD ["/usr/local/bin/webhook", "-hooks", "/app/data/hooks.json", "-verbose"]

View File

@@ -0,0 +1,75 @@
# Webhook Cloudron Package
## Description
Webhook is a lightweight configurable tool written in Go that allows you to easily create HTTP endpoints (hooks) on your server, which you can use to execute configured commands.
## Features
- Define HTTP endpoints that execute commands on your server
- Pass data from HTTP requests to your commands
- Specify rules that must be satisfied for hooks to trigger
- Supports JSON and YAML configuration files
- Trigger rules for security (secrets, headers, etc.)
- Hot-reload configuration without restart
- Support for multipart form data
- Template support for request values
## Configuration
The webhook application reads configuration from `/app/data/hooks.json` (or `/app/data/hooks.yaml`).
### Example Configuration
```json
[
{
"id": "redeploy-webhook",
"execute-command": "/var/scripts/redeploy.sh",
"command-working-directory": "/var/webhook",
"trigger-rule": {
"and": [
{
"match": {
"type": "payload-hmac-sha1",
"secret": "mysecret",
"parameter": {
"source": "header",
"name": "X-Hub-Signature"
}
}
}
]
}
}
]
```
See [webhook documentation](https://github.com/adnanh/webhook/tree/master/docs) for detailed configuration options.
## Usage
1. Install the webhook app on Cloudron
2. Navigate to the File Manager
3. Create or edit `hooks.json` in the `/app/data` directory
4. Restart the app to apply configuration changes
5. Access your webhook endpoints at `http://your-app.cloudron.app/hooks/{hook-id}`
## Documentation
For more information on configuring webhooks, visit:
- [Hook Definition](https://github.com/adnanh/webhook/blob/master/docs/Hook-Definition.md)
- [Hook Examples](https://github.com/adnanh/webhook/blob/master/docs/Hook-Examples.md)
- [Hook Rules](https://github.com/adnanh/webhook/blob/master/docs/Hook-Rules.md)
- [Webhook Parameters](https://github.com/adnanh/webhook/blob/master/docs/Webhook-Parameters.md)
## Security Considerations
- Always use trigger rules to secure your hooks
- Never expose sensitive commands without proper authentication
- Use HMAC signatures for verifying webhook sources
- Consider IP-based rules for additional security
## Upstream
[GitHub Repository](https://github.com/adnanh/webhook)

View File

@@ -0,0 +1,60 @@
[
{
"id": "webhook",
"execute-command": "/home/adnan/redeploy-go-webhook.sh",
"command-working-directory": "/home/adnan/go",
"response-message": "I got the payload!",
"response-headers":
[
{
"name": "Access-Control-Allow-Origin",
"value": "*"
}
],
"pass-arguments-to-command":
[
{
"source": "payload",
"name": "head_commit.id"
},
{
"source": "payload",
"name": "pusher.name"
},
{
"source": "payload",
"name": "pusher.email"
}
],
"trigger-rule":
{
"and":
[
{
"match":
{
"type": "payload-hmac-sha1",
"secret": "mysecret",
"parameter":
{
"source": "header",
"name": "X-Hub-Signature"
}
}
},
{
"match":
{
"type": "value",
"value": "refs/heads/master",
"parameter":
{
"source": "payload",
"name": "ref"
}
}
}
]
}
}
]

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB