Webhook-Empfänger für LUPUS Mobilfunk-Rauchwarnmelder – alarmiert parallel per Telegram, ntfy Push, E-Mail und SMS.
Auf dem Proxmox-Host als root ausführen:
bash <(curl -fsSL https://raw.githubusercontent.com/yodaeichen/lupus-alert/main/install.sh)Das Skript fragt interaktiv alle Einstellungen ab und richtet vollautomatisch ein:
- Debian 12 LXC Container
- Node.js 20 + pnpm
- Alle Benachrichtigungskanäle
- systemd Service mit Autostart
LUPUS SD-GSM (Mobilfunk-Rauchwarnmelder)
│
│ HTTP Webhook
│ GET /webhook/alarm?device=SD-GSM&event=FIRE&location=Keller
│ Authorization: Bearer <token>
▼
┌──────────────────────────────────────────────┐
│ Debian 12 LXC · Node.js 20 │
│ Hono Webhook Server │
│ │
│ ┌──────────────┐ ┌───────────────────┐ │
│ │ /webhook/alarm│───▶│ Dispatcher │ │
│ └──────────────┘ │ (parallel, alle │ │
│ ┌──────────────┐ │ Kanäle gleichz.)│ │
│ │ /api/test │───▶└────────┬──────────┘ │
│ └──────────────┘ │ │
│ ┌──────────────┐ │ │
│ │ / Dashboard │ │ │
│ └──────────────┘ │ │
└──────────────────────────────┼───────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼ ▼
📱 Telegram 🔔 ntfy Push 📧 E-Mail 💬 SMS
Bot API (self-hosted SMTP sipgate /
oder ntfy.sh) Twilio
- Proxmox VE 7 oder 8
- Internetzugang vom Proxmox-Host (für Template-Download und GitHub)
- Accounts für die gewünschten Benachrichtigungskanäle (siehe unten)
- Bot erstellen: Schreib
@BotFather→/newbot - Chat-ID herausfinden: Schreib
@userinfobot - Während der Installation eingeben
- Öffentlich (kostenlos):
https://ntfy.sh– kein Account nötig - App: iOS / Android → Topic abonnieren
- Self-hosted:
docker run -p 8080:80 binwiederhier/ntfy serve
- App-Passwort erstellen (Google-Konto mit 2FA nötig)
- SMTP-Host:
smtp.gmail.com, Port:587
- Kostenloses Konto erstellen
- Token: Einstellungen → Persönlicher Zugang → Token erstellen
- SMS-Extension ist standardmäßig
s0
- Twilio Account erstellen
- Account SID + Auth Token aus der Console
- Absendernummer kaufen/verifizieren
Im LUPUS SD-GSM unter Einstellungen → Alarmierung → HTTP:
| Feld | Wert |
|---|---|
| URL | http://[LXC-IP]:3000/webhook/alarm |
| Methode | GET oder POST |
| Header | Authorization: Bearer [DEIN_TOKEN] |
| Parameter | device=SD-GSM&event=FIRE&location=Keller |
Optionale URL-Parameter:
| Parameter | Bedeutung | Beispiel |
|---|---|---|
device |
Gerätename oder -ID | SD-GSM-OG |
event |
Ereignistyp | FIRE, ALARM, LOW_BATTERY |
location |
Standort / Zone | Obergeschoss, Keller |
| Methode | Pfad | Auth | Beschreibung |
|---|---|---|---|
GET |
/health |
– | Statuscheck (Monitoring) |
GET |
/ |
– | Web-Dashboard (Ereignisprotokoll) |
GET/POST |
/webhook/alarm |
Bearer Token | LUPUS Alarm-Eingang |
POST |
/api/test |
Bearer Token | Testbenachrichtigung auslösen |
GET |
/api/events |
Bearer Token | Ereignislog als JSON |
# Alle Kanäle gleichzeitig testen
curl -X POST http://[LXC-IP]:3000/api/test \
-H "Authorization: Bearer [TOKEN]" \
-H "Content-Type: application/json" \
-d '{"channel":"all"}'
# Einzelnen Kanal testen
curl -X POST http://[LXC-IP]:3000/api/test \
-H "Authorization: Bearer [TOKEN]" \
-H "Content-Type: application/json" \
-d '{"channel":"telegram"}'
# Alarm simulieren
curl "http://[LXC-IP]:3000/webhook/alarm?device=SD-GSM&event=FIRE&location=Keller" \
-H "Authorization: Bearer [TOKEN]"# Logs live verfolgen
pct exec [CT-ID] -- journalctl -u lupus-alert -f
# Service neu starten (nach .env-Änderung)
pct exec [CT-ID] -- systemctl restart lupus-alert
# Konfiguration bearbeiten
pct exec [CT-ID] -- nano /opt/lupus-alert/.env
# Status prüfen
pct exec [CT-ID] -- systemctl status lupus-alert- Der Webhook-Token schützt vor unbefugten Anfragen (Bearer Auth)
- Service läuft unter eigenem
lupus-Systembenutzer (keine Shell, kein Home) - systemd-Hardening:
NoNewPrivileges,PrivateTmp,ProtectSystem=strict .envhat Dateiberechtigung600
# /etc/caddy/Caddyfile (im LXC oder auf dem Host)
alarm.example.com {
reverse_proxy localhost:3000
}
| Komponente | Version |
|---|---|
| Runtime | Node.js 20 LTS |
| Framework | Hono v4 |
| Paketmanager | pnpm |
| Sprache | TypeScript 5 |
| nodemailer | |
| Betriebssystem | Debian 12 (Bookworm) LXC |
MIT – siehe LICENSE