Rascal expects GitHub webhooks at:
https://YOUR_DOMAIN/v1/webhooks/github
The init flow configures webhook + rascal label when admin token is
available.
rascal init --provision --repo OWNER/REPO --domain rascal.example.comIf needed, you can re-run init with --skip-deploy to resync webhook
configuration.
Health check:
curl -fsS https://YOUR_DOMAIN/healthzWebhook endpoint should not redirect for POST requests:
curl -i -X POST https://YOUR_DOMAIN/v1/webhooks/githubWithout signature, 401/403/405 can be expected. 3xx redirects are a problem.
The public proxy also rejects malformed webhook traffic before it reaches
rascald: only the expected method/path/header shape is forwarded, request
bodies are size-capped, and slow/oversized requests are cut off at Caddy.
Synthetic webhook test from CLI:
rascal github webhook test \
--repo OWNER/REPO \
--webhook-secret "$RASCAL_GITHUB_WEBHOOK_SECRET" \
--dry-runIf using Cloudflare proxy (orange cloud):
- Set SSL/TLS mode to
Full (strict)in Cloudflare dashboard (SSL/TLS -> Overview). - Avoid redirect rules that loop back to the same hostname/path.
- During first setup/debug,
DNS onlymode is often easiest.
401 invalid webhook signature: webhook secret mismatch between GitHub and server.403 resource not accessible by token: missing admin token permissions.- Delivery timeouts: DNS/TLS/redirect misconfiguration.