Files
wiki/Catalogue-Self-Hosted/apps/app-webhook-tester.md
T
2026-06-09 18:40:21 +02:00

5.8 KiB


title: WebHook Tester created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, webhook, debug, api] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/tarampampam/webhook-tester]

💻 WebHook Tester

Hookbin.com en self-hosted — un bac à sable pour inspecter, rejouer et déboguer les webhooks entrants de Stripe, GitHub, GitLab, Twilio, etc., sans envoyer d'événement en production.

📋 Informations Générales

Champ Valeur
Site web webhook-tester.tarampampam.com
GitHub tarampampam/webhook-tester
License MIT
Langage Go
Étoiles GitHub 490
Catégorie Development, Debug & Test
Référence selfh.st Development

📝 Description

WebHook Tester est un clone self-hosted de hookbin.com / requestbin.com : il génère une URL unique (https://test.example.com/inspect/abc123) à laquelle vous faites pointer n'importe quel service tiers (Stripe, GitHub, Twilio, IFTTT, Zapier) pour capturer, inspecter et rejouer les requêtes HTTP entrantes.

Quand on développe une intégration webhook, on se retrouve souvent à devoir recevoir un callback d'un service cloud pour vérifier le payload, les headers, l'IP source, le timing. Les services publics (RequestBin, Beeceptor, Hookbin) ont des limites, des quotas, et exposent potentiellement des données sensibles en clair sur Internet. WebHook Tester résout cela : vous l'hébergez, vous gardez le contrôle des payloads capturés, et vous pouvez même rejouer un webhook vers une URL de votre choix (votre preprod par exemple).

L'interface web montre l'historique des requêtes, avec payload, headers, query string, méthode, IP, body brut — exactement ce qu'il faut pour debug un webhook Stripe qui ne se déclenche pas. Possibilité de suppression auto après X heures, de partage d'une session, et d'archivage des sessions importantes.

Cas d'usage typiques : débugger un webhook GitHub Actions qui ne fire pas, tester un paiement Stripe en mode test, valider le format d'un payload Twilio, rejouer un événement sur sa stack locale, partager une URL temporaire avec un collègue.

🚀 Installation

Via Docker (recommandé)

# docker-compose.yml
version: '3.8'
services:
  webhook-tester:
    image: ghcr.io/tarampampam/webhook-tester:latest
    container_name: webhook-tester
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      WT_LISTEN_ADDR: ":8080"
      WT_PUBLIC_URL: "https://hook.example.com"
      WT_STORAGE_TTL: "72h"          # retention des sessions
      WT_MAX_BODY_SIZE: "1M"
      WT_LOG_LEVEL: "info"
    volumes:
      - wt_data:/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.hook.rule=Host(`hook.example.com`)"
      - "traefik.http.routers.hook.entrypoints=websecure"
      - "traefik.http.routers.hook.tls.certresolver=letsencrypt"

volumes:
  wt_data:

Installation manuelle

# Binaire Go statique (Linux/macOS/Windows)
curl -L https://github.com/tarampampam/webhook-tester/releases/latest/download/webhook-tester_linux_amd64.tar.gz | tar xz
./webhook-tester --listen :8080 --public-url https://hook.example.com

⚙️ Configuration

  1. WT_PUBLIC_URL : doit refléter l'URL publique HTTPS finale (sinon les liens générés seront faux).
  2. WT_STORAGE_TTL : durée de rétention des sessions (défaut 72 h) — ajuster selon vos besoins RGPD.
  3. WT_MAX_BODY_SIZE : taille max des bodies acceptés (1 Mo par défaut, suffisant pour 99 % des webhooks).
  4. Reverse proxy : laisser passer X-Forwarded-For pour voir l'IP source réelle du webhook.
  5. Authentification : non intégrée nativement — placer derrière un app-traefik avec BasicAuth pour restreindre l'accès à votre équipe.

🔗 Alternatives

  • Hookbin.com — Le service original, public, payant pour usage pro, données exposées.
  • Beeceptor — Web UI très riche, cloud uniquement, gratuit limité.
  • RequestBin (Pipedream) — Service populaire, sessions jetées après 30 j, cloud only.
  • Svix Play — Outil officiel Svix (infra webhook), public, simple, sans self-host natif.
  • MockServer / WireMock — Plus lourds, orientés mocks REST complets plutôt que capture rapide.

🔒 Sécurité

  • 🔐 HTTPS obligatoire via app-traefik : les payloads peuvent contenir des secrets, tokens API, données personnelles en clair.
  • 🛡️ Authentification devant la console : activer BasicAuth (Traefik middleware) car l'outil affiche TOUT ce qui arrive — un attaquant qui trouve l'URL peut exfiltrer vos webhooks Stripe.
  • 🛡️ TTL court : 24-72 h suffit pour le debug, garder les sessions sensibles moins longtemps (RGPD).
  • 🛡️ Ne pas logger en prod : un webhook Stripe contient des customer.id, email, amount — limiter l'accès aux logs.
  • 🛡️ Rate limiting : activer un rate-limit sur l'endpoint d'inspection pour éviter l'abus si l'URL fuite.

📚 Ressources

🔗 Pages Liées