Checkliste vor dem Launch
Diese Liste vor dem Go-live durchgehen. Jeder Punkt verlinkt auf den entsprechenden Abschnitt weiter unten.1
Replay-Schutz für Multi-Instanz konfiguriert
Der Standard-Adapter ist nur im Arbeitsspeicher. Wenn mehr als ein Prozess läuft (Gunicorn-Worker, PM2-Cluster, Kubernetes),
SUPABASE_URL + SUPABASE_ANON_KEY setzen oder RedisReplayAdapter verwenden. Details →2
Umgebungsvariablen im Secrets Manager
API-Schlüssel niemals hardcoden. Lokal
.env verwenden, in der Produktion einen Secrets Manager. Details →3
Health-Check-Endpunkt vorhanden
Monitoring-Pings dürfen keine Rechnungserstellung auslösen. Eine
/health-Route vor den kostenpflichtigen Routen hinzufügen. Details →4
Fehlerantworten geben keine internen Details preis
Provider-Fehler abfangen und einen sauberen 503 zurückgeben — keinen Stack-Trace. Details →
5
Preis ist bewusst gesetzt
priceSats sollte den tatsächlichen Wert widerspiegeln. Bei 1 sat ≈ 0,06 für einen Premium-Endpunkt angemessen. Nicht versehentlich auf 0 setzen.6
Uptime-Monitoring auf dem Rechnungsendpunkt
Die 402-Antwort überwachen (sie ist eine normale Antwort, kein Fehler). Tools wie UptimeRobot unterstützen benutzerdefinierte Erwartungen an Statuscodes.
7
Rate-Limiting bei der Rechnungserstellung
Jede nicht authentifizierte Anfrage erstellt eine Lightning-Rechnung. Ohne Rate-Limiting kann ein Angreifer das Rechnungskontingent des Providers kostenlos ausschöpfen.
express-rate-limit vor dem öffentlichen Deployment hinzufügen. Details →Kritisch: Replay-Schutz in der Produktion
Umgebungsvariablen
Schlüssel niemals hardcoden. Immer Umgebungsvariablen verwenden:Zahlungsprotokollierung (Supabase)
Jede Zahlung für das VS Code-Extension-Dashboard und Analysen in Supabase protokollieren:Cloudflare Workers Deployment
l402-kit API läuft auf Cloudflare Workers (V8-Isolates, kein Cold Start). Der In-Memory-Replay-Speicher wird pro Isolate zurückgesetzt — für APIs mit hohem Traffic Cloudflare KV oder Durable Objects für den Replay-Schutz verwenden.Docker
Löschung von Nutzerdaten
Einen Löschendpunkt bereitstellen, damit Nutzer ihre Daten dauerhaft entfernen können. Das l402-kit-Backend enthält/api/delete-data von Haus aus:
Fehlerbehandlung
Provider-Fehler abfangen, bevor sie als unformatierte 500er erscheinen:- Niemals Stack-Traces an Clients zurückgeben — serverseitig protokollieren.
- Provider-Timeouts (503) sind vorübergehend — sicherer Wiederholungsversuch mit Backoff.
- Token-Fehler (401) sind niemals vorübergehend — nicht automatisch wiederholen, neue Rechnung anfordern.
- Rate-Limit-Fehler (429) — das
retryAfter-Feld an den Aufrufer weitergeben.
Rate-Limiting
Jede nicht authentifizierte Anfrage löstcreateInvoice() beim Lightning-Provider aus. Ohne Rate-Limiting kann jeder den Endpunkt überfluten und das API-Kontingent des Providers kostenlos ausschöpfen — ohne auch nur einen einzigen sat zu bezahlen.
express-rate-limit vor den L402-Routen hinzufügen:
Bereits zahlende Clients werden durch die
skip-Funktion übersprungen — das Limit gilt nur für nicht authentifizierte Aufrufe, die eine neue Rechnung auslösen. Legitime Zahler werden niemals gedrosselt.Health-Check-Endpunkt
Immer einen kostenlosen Health-Check hinzufügen, damit Monitoring-Tools keine Rechnungserstellung auslösen:Monitoring
Wichtige Metriken zur Überwachung:- 402-Antwortrate — ein hoher Basiswert ist gesund (die meisten Aufrufer müssen zahlen)
- Zahlungsverifizierungsrate — Verhältnis von bezahlten zu unbezahlten Aufrufen
- Provider-Latenz —
blink.createInvoice()sollte < 500ms sein - Replay-Versuche — ein Anstieg deutet auf Token-Wiederverwendungsangriffe hin
Leistung
- Token-Verifizierung ist O(1) — reine Kryptografie, keine DB, kein Netzwerk
- Rechnungserstellung (402-Pfad) ruft die Lightning-Provider-API auf — einen Cache hinzufügen, wenn derselbe Endpunkt wiederholt vor der Zahlung aufgerufen wird
- Replay-Speicher ist ein In-Memory-
Set— für Multi-Instanz-Deployments durch Redis ersetzen