Push-Notifications brauchen ein einmaliges Schlüsselpaar (VAPID). Damit signiert das Backend jede Push-Anfrage an Google FCM / Mozilla Autopush / Apple WebPush. Ein Pair pro Service-Domain reicht — Tarev nutzt es für Pusteblume-Florist-Push, Order-Status-Push und Anlass-Reminder.
Schritt 1 — Keypair generieren
Auf dem Dev-Rechner aus dem Repo-Root:
npx tsx scripts/gen-vapid.tsDas Skript ruft web-push generate-vapid-keys --json und gibt dir drei ENV-Zeilen zum Kopieren aus. Beispiel-Output:
NEXT_PUBLIC_PUSTEBLUME_VAPID_PUBLIC_KEY=BF4Zkm...
PUSTEBLUME_VAPID_PRIVATE_KEY=REPLACE_WITH_REAL_PRIVATE_KEY
PUSTEBLUME_VAPID_SUBJECT=mailto:info@pusteblume-halle.deSchritt 2 — In .env.production eintragen
- SSH auf den Prod-Server:
ssh root@tarev.de /opt/tarev/.env.productionöffnen- Die drei Zeilen aus Schritt 1 anhaengen
- Datei speichern
Alternative — Automatik mit dem Skript:
TAREV_DEPLOY_HOST=root@tarev.de npx tsx scripts/gen-vapid.ts --applyDas prüft erst per SSH ob die Keys schon gesetzt sind (kein Overwrite), haengt sie sonst an und startet das Backend neu. Idempotent.
[Screenshot: SSH-Session mit angehaengten VAPID-Keys in .env.production]
Schritt 3 — Backend neu starten + Frontend rebuilden
Backend lädt VAPID beim Boot — also Neustart nötig:
ssh root@tarev.de "cd /opt/tarev && docker compose -f docker-compose.prod.yml restart backend"Frontend embedet den Public-Key zur Build-Zeit (NEXT_PUBLIC_*). Nach dem Setzen einmal redeployen, damit der Key im Bundle landet.
Schritt 4 — Test-Push verifizieren
- Browser auf https://pusteblume.tarev.de öffnen
- Auf der Florist-Admin-Konsole bei "Push aktivieren" zustimmen
- Im Backend einen Test-Push triggern:
curl -X POST https://tarev.de/api/pusteblume-florist-push/test \
-H "Authorization: Bearer $PUSTEBLUME_ADMIN_TOKEN"- Innerhalb von 5 Sekunden sollte die Notification aufpoppen
Troubleshooting: "Test-Push kommt nicht an"
- Browser-Permission verweigert? chrome://settings/content/notifications
prüfen — pusteblume.tarev.de muss auf "Erlauben" stehen.
- iOS Safari? Push geht NUR wenn die Seite vorher zum
Home-Screen hinzugefügt wurde (siehe Artikel "Push-Permission auf dem iPhone").
- VAPID-Subject ungültig? Muss
mailto:oderhttps://sein,
sonst lehnt FCM die Subscription ab.
- Subscription veraltet? Push-Endpoints können vom Browser
invalidiert werden. Im Service-Worker einmal abmelden + neu abonnieren.
- Backend-Log prüfen:
ssh root@tarev.de "cd /opt/tarev && docker compose logs backend --tail 50 | grep -i push"Verwandte Artikel
- Push-Permission auf dem iPhone (für Floristen)
- Floristen-Mobile-Dashboard nutzen
- Backup wiederherstellen (Disaster-Recovery)