---
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](https://webhook-tester.tarampampam.com/) |
| **GitHub** | [tarampampam/webhook-tester](https://github.com/tarampampam/webhook-tester) |
| **License** | MIT |
| **Langage** | Go |
| **Étoiles GitHub** | 490 ⭐ |
| **Catégorie** | Development, Debug & Test |
| **Référence** | [selfh.st Development](https://selfh.st/apps/?tag=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é)

```yaml
# 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

```bash
# 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

- [Site officiel](https://webhook-tester.tarampampam.com/)
- [Documentation](https://github.com/tarampampam/webhook-tester#readme)
- [GitHub tarampampam/webhook-tester](https://github.com/tarampampam/webhook-tester)
- [Selfh.st — Development](https://selfh.st/apps/?tag=Development)
- [Hookbin.com](https://hookbin.com/) — L'original public

## 🔗 Pages Liées

- [[cat-development]] — Catégorie Development
- [[app-traefik]] — Reverse proxy HTTPS + BasicAuth devant l'instance
- [[securisation-home-lab]] — Bonnes pratiques de sécurité
- [[recettes-docker-compose]] — Templates Docker Compose
