Skip to main content

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,0006sind100sats0,0006 sind 100 sats ≈ 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

Der Standard-Replay-Adapter ist nur im Arbeitsspeicher — er wird bei jedem Prozessneustart zurückgesetzt und funktioniert nicht über mehrere Serverinstanzen hinweg. In der Produktion mit mehr als einem Prozess (Gunicorn-Worker, Kubernetes-Pods, PM2-Cluster) kann dasselbe preimage zweimal akzeptiert werden.Lösung: SUPABASE_URL + SUPABASE_ANON_KEY in der Umgebung setzen. Die Middleware verwendet dann automatisch Supabase als Replay-Speicher, der über alle Instanzen geteilt wird.Für Redis: einen RedisReplayAdapter explizit übergeben (siehe TypeScript SDK oder Python SDK).

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:
Die VS Code-Extension zeigt dies als Danger Zone-Panel am unteren Rand des Dashboards an — Nutzer müssen ihre Lightning-Adresse zur Bestätigung eingeben, danach werden alle Zahlungshistorien und Pro-Zugänge gelöscht. Der Vorgang verwendet den Supabase-Service-Key serverseitig; der Anon-Key hat keine DELETE-Berechtigung.

Fehlerbehandlung

Provider-Fehler abfangen, bevor sie als unformatierte 500er erscheinen:
Faustregeln:
  • 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.
Siehe Fehlerreferenz für die vollständige Liste der strukturierten Fehlercodes.

Rate-Limiting

Jede nicht authentifizierte Anfrage löst createInvoice() 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.
Für FastAPI:

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-Latenzblink.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