Sichere Web-Anwendung zum Verwalten und Auslösen von Webhooks. Ideal für Home-Automation, CI/CD-Pipelines und API-Testing.
- ✅ Sicher: Passwortgeschützter Zugang
- ✅ Einfach: Minimalistische Benutzeroberfläche
- ✅ Flexibel: Unterstützt GET und POST Requests
- ✅ Persistent: SQLite-Datenbank für alle Webhooks
- ✅ Docker-ready: Schnelle Deployment mit Docker
- ✅ Traefik-kompatibel: Einfache Integration mit Reverse Proxy
- ✅ Lightweight: Minimale Abhängigkeiten
- Docker & Docker Compose
- (Optional) Traefik als Reverse Proxy
- Repository klonen:
git clone https://github.com/your-username/webhook-manager.git
cd webhook-manager- Umgebungsvariablen anpassen:
Bearbeite docker-compose.yml und ändere:
WEBHOOK_PASSWORD: Dein sicheres PasswortSECRET_KEY: Zufälliger String für Session-Sicherheit- Traefik-Domain:
webhooks.example.comdurch deine Domain ersetzen
- Container starten:
Mit Traefik:
docker-compose up -dOhne Traefik (Standalone):
docker-compose -f docker-compose-standalone.yml up -d- Anwendung öffnen:
- Mit Traefik:
https://webhooks.example.com - Standalone:
http://localhost:5000
| Variable | Beschreibung | Standard |
|---|---|---|
WEBHOOK_PASSWORD |
Passwort für Login | admin123 |
SECRET_KEY |
Session-Secret | auto-generiert |
DATABASE_PATH |
Pfad zur SQLite-DB | /app/data/webhooks.db |
PORT |
Server-Port | 5000 |
Die docker-compose.yml enthält vorkonfigurierte Traefik-Labels:
labels:
- "traefik.enable=true"
- "traefik.http.routers.webhook-manager.rule=Host(`webhooks.example.com`)"
- "traefik.http.routers.webhook-manager.entrypoints=websecure"
- "traefik.http.routers.webhook-manager.tls.certresolver=letsencrypt"Wichtig: Stelle sicher, dass das traefik-net Netzwerk existiert:
docker network create traefik-netFür zusätzliche Sicherheit kann Basic Auth aktiviert werden:
- Passwort-Hash erzeugen:
htpasswd -nb admin dein-passwort- In
docker-compose.ymlauskommentieren und Hash eintragen:
- "traefik.http.routers.webhook-manager.middlewares=webhook-auth"
- "traefik.http.middlewares.webhook-auth.basicauth.users=admin:$$apr1$$..."- Öffne die Anwendung
- Gib dein konfiguriertes Passwort ein
- Klicke auf "Neu anlegen"
- Gib Name, URL und Beschreibung ein
- Wähle Methode (GET oder POST)
- Speichern
- Klicke auf den Button des gewünschten Webhooks
- Bestätige die Ausführung
- Erhalte Status-Feedback (Erfolg/Fehler)
- Klicke auf "Bearbeiten" oder "Löschen"
- Nehme Änderungen vor
- Speichern
Die Anwendung bietet eine RESTful API:
POST /api/login
{
"password": "dein-passwort"
}POST /api/logout
GET /api/status
GET /api/webhooks - Alle Webhooks abrufen
POST /api/webhooks - Neuen Webhook erstellen
{
"name": "Beispiel Webhook",
"url": "https://api.example.com/webhook",
"method": "POST",
"description": "Optionale Beschreibung"
}PUT /api/webhooks/{id} - Webhook aktualisieren
DELETE /api/webhooks/{id} - Webhook löschen
POST /api/webhooks/{id}/trigger - Webhook auslösen
-
Starkes Passwort verwenden
- Mindestens 16 Zeichen
- Keine Standard-Passwörter
-
HTTPS aktivieren
- Nutze Traefik mit Let's Encrypt
- Oder stelle eigenes SSL-Zertifikat bereit
-
Netzwerk-Isolation
- Container nur im benötigten Netzwerk
- Firewall-Regeln konfigurieren
-
Regelmäßige Updates
docker-compose pull docker-compose up -d
-
Backup der Datenbank
cp data/webhooks.db data/webhooks.db.backup
-
Optional: Fail2Ban
- Schutz vor Brute-Force-Angriffen
- Log-Monitoring aktivieren
- Python-Environment erstellen:
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate- Dependencies installieren:
pip install -r requirements.txt- Umgebungsvariablen setzen:
export WEBHOOK_PASSWORD=test123
export DATABASE_PATH=webhooks.db- Anwendung starten:
python app.py- Öffne:
http://localhost:5000
# Build
docker build -t webhook-manager:latest .
# Tag für Registry
docker tag webhook-manager:latest your-registry/webhook-manager:latest
# Push
docker push your-registry/webhook-manager:latest# Logs prüfen
docker-compose logs -f webhook-manager
# Container neu starten
docker-compose restart webhook-manager# Datenbank zurücksetzen (ACHTUNG: Löscht alle Daten!)
rm data/webhooks.db
docker-compose restart webhook-manager# Netzwerk prüfen
docker network ls
docker network inspect traefik-net
# Labels prüfen
docker inspect webhook-manager | grep -A 20 Labels- URL auf Erreichbarkeit prüfen
- Firewall-Regeln kontrollieren
- Logs für detaillierte Fehlermeldung ansehen
#!/bin/bash
# backup.sh
BACKUP_DIR="./backups"
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)
cp data/webhooks.db "$BACKUP_DIR/webhooks_$DATE.db"
# Alte Backups löschen (älter als 30 Tage)
find $BACKUP_DIR -name "webhooks_*.db" -mtime +30 -deleteCron-Job einrichten:
0 2 * * * /path/to/backup.shMIT License - siehe LICENSE-Datei
Bei Fragen oder Problemen erstelle ein Issue auf GitHub.
- Webhook-Historie mit Logs
- Custom Headers für Requests
- Webhook-Gruppen
- Rate Limiting
- Multi-User Support
- Webhook-Templates
- API-Key Authentifizierung
- Export/Import von Webhooks
Contributions sind willkommen! Bitte erstelle einen Pull Request.
- Fork das Repository
- Erstelle einen Feature-Branch (
git checkout -b feature/AmazingFeature) - Committe deine Änderungen (
git commit -m 'Add some AmazingFeature') - Push zum Branch (
git push origin feature/AmazingFeature) - Öffne einen Pull Request