For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /de/docs/web/provider-keys.md (or send Accept: text/markdown).
Die übrigen Anbieter-Keys einsammeln
Kurze Walkthroughs für die restlichen Dienste: KI-Anbieter, Trigger.dev, S3-Storage, Sentry oder PostHog, Turnstile und Ihre Domain.
Wie Sie diese Seite nutzen
Jeder Abschnitt unten ist ein komplettes Setup-Walkthrough: Konto erstellen, Key finden, Env-Namen setzen, prüfen. Nehmen Sie nur die Abschnitte für Dienste, die Ihr Produkt ausliefert — eine Seite ohne KI-Funktionen braucht den ersten nie, und das Kit läuft weiter, selbst wenn Sie jeden Abschnitt hier überspringen.
Dieselben Secret-Regeln wie überall: API-Keys und Webhook-Secrets bleiben serverseitig, nur Werte mit NEXT_PUBLIC_/EXPO_PUBLIC_-Prefix dürfen den Client erreichen, Produktions-Secrets liegen im Secret Store des Hosts, und der Dev-Server liest Env erst nach einem Neustart.
KI-Anbieter-Keys
Das AI_PROVIDER des Kits akzeptiert openai, anthropic, openai-compatible und openrouter — plus fake, den lokalen Standard-Ersatz. Wählen Sie einen; der Anbieter-Key ist das einzige nötige Konto, denn Modell-IDs und Preise kommen aus dem Datenbank-Katalog des Kits, nicht aus Env-Variablen.
OpenAI: platform.openai.com → API keys → Create new secret key → sk-… kopieren → OPENAI_API_KEY. Anthropic: console.anthropic.com → API Keys → Create Key → sk-ant-… → ANTHROPIC_API_KEY. Beide rechnen pro Token ab — ein paar Dollar Guthaben decken die Entwicklung.
OpenRouter leitet jedes Katalog-Modell über einen Key: openrouter.ai → Keys → Create Key → sk-or-… → AI_PROVIDER=openrouter plus OPENROUTER_API_KEY; die optionalen OPENROUTER_APP_NAME/OPENROUTER_SITE_URL senden Attribution-Header. openai-compatible deckt jeden OpenAI-förmigen Endpoint ab: OPENAI_COMPATIBLE_API_KEY plus OPENAI_COMPATIBLE_BASE_URL.
Prüfen: neu starten, eine KI-Aufgabe laufen lassen und eine echte Modellantwort statt des deterministischen Fakes erwarten. Ein Startfehler, der den Key nennt, heißt: Das Anbieter-Flag ist ohne seinen Key an. Eine echte Antwort braucht außerdem JOB_PROVIDER=trigger aus dem Trigger.dev-Abschnitt unten plus ein aktiviertes Modell im Katalog des Kits — KI einrichten behandelt dieses Setup.
# apps/web/.env.local — pick ONE provider
AI_PROVIDER=openai
OPENAI_API_KEY=sk-…
# or AI_PROVIDER=anthropic
# ANTHROPIC_API_KEY=sk-ant-…
# or AI_PROVIDER=openrouter
# OPENROUTER_API_KEY=sk-or-…
# or AI_PROVIDER=openai-compatible
# OPENAI_COMPATIBLE_API_KEY=…
# OPENAI_COMPATIBLE_BASE_URL=https://your-endpoint/v1Trigger.dev
Überspringen, es sei denn, das Produkt braucht echte Hintergrundjob-Läufe — JOB_PROVIDER=local reiht Jobs im Speicher ein, ohne sie auszuführen, was für die Entwicklung richtig ist.
1. Öffnen Sie app.trigger.dev → Sign up → Projekt erstellen.
2. Kopieren Sie zwei Werte: den Project Ref proj_… aus den Projekt-Settings oder der Dashboard-URL → TRIGGER_PROJECT_REF, und den Secret Key von der API-Keys-Seite des Projekts (tr_dev_… für die Dev-Umgebung, tr_prod_… für Produktion) → TRIGGER_SECRET_KEY. Beide bleiben serverseitig.
3. Die Tasks des Kits liegen bereits in apps/web/trigger, und apps/web/trigger.config.ts liest TRIGGER_PROJECT_REF. Führen Sie aus apps/web npx trigger.dev@latest dev aus — es registriert die Tasks bei Ihrem Projekt und führt sie lokal gegen den Dev-Key aus.
Prüfen: Der Dev-Befehl protokolliert die registrierten Tasks; reihen Sie einen in der App ein und sehen Sie ihm in der Runs-Liste des Dashboards beim Ausführen zu. Deployete Umgebungen führen corepack pnpm --filter @supastack/web trigger:deploy aus, um den Task-Satz zu veröffentlichen.
# apps/web/.env.local
JOB_PROVIDER=trigger
TRIGGER_PROJECT_REF=proj_…
TRIGGER_SECRET_KEY=tr_dev_… # tr_prod_… in production
# run the worker alongside the app, from apps/web:
cd apps/web
npx trigger.dev@latest devS3-kompatibler Storage (Cloudflare R2)
Überspringen, es sei denn, das Produkt speichert Dateien — STORAGE_PROVIDER=memory hält Uploads für die Entwicklung im Prozess.
Jeder S3-kompatible Bucket funktioniert; Cloudflare R2 ist die Free-Tier-freundliche Wahl. 1. Öffnen Sie dash.cloudflare.com → R2 Object Storage → Create bucket, benennen Sie ihn und behalten Sie den Standard-Location-Hint.
2. Öffnen Sie auf der R2-Übersicht Manage R2 API Tokens → Create API token → Berechtigung Object Read & Write, auf diesen Bucket beschränkt → Create. Kopieren Sie die Access Key ID, den Secret Access Key und den gezeigten S3-Endpoint — https://<account-id>.r2.cloudflarestorage.com.
3. Setzen Sie die Env-Namen unten. STORAGE_REGION=auto ist die R2-Konvention — das Kit nutzt standardmäßig us-east-1, was R2 ebenfalls akzeptiert. STORAGE_FORCE_PATH_STYLE ist für Custom Endpoints bereits standardmäßig an, was R2 will. Öffentliche Dateien auszuliefern braucht zusätzlich STORAGE_PUBLIC_BASE_URL oder CDN-Verkabelung; private Dateien brauchen nichts weiter.
Prüfen: neu starten und durch die App hochladen — das Objekt erscheint im R2-Bucket-Browser. Ein Signatur- oder 403-Fehler heißt, dem Token fehlt Object Read/Write auf diesem Bucket; erstellen Sie einen frischen, korrekt begrenzten Token.
# apps/web/.env.local
STORAGE_PROVIDER=s3
STORAGE_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com
STORAGE_REGION=auto
STORAGE_BUCKET=your-bucket
STORAGE_ACCESS_KEY_ID=… # server-only
STORAGE_SECRET_ACCESS_KEY=… # server-only
# STORAGE_PUBLIC_BASE_URL= # optional public-URL baseSentry oder PostHog (optional)
Komplett optional: Jeder Observability-Wert ist standardmäßig leer und das Kit läuft ohne alle — fügen Sie dies hinzu, wenn Sie Fehlerberichte und Analytics in Produktion wollen.
Sentry für Fehler: sentry.io → Projekt erstellen → die Next.js-Plattform wählen → der Setup-Bildschirm zeigt den DSN https://…@….ingest.sentry.io/… → SENTRY_DSN. Exceptions erreichen Sentry dann mit Correlation-IDs getaggt; das Free Tier reicht zum Start.
PostHog für Produkt-Analytics stattdessen: posthog.com → Projekt erstellen → den Projekt-API-Key phc_… kopieren → NEXT_PUBLIC_POSTHOG_KEY plus NEXT_PUBLIC_POSTHOG_HOST (https://us.i.posthog.com oder Ihr EU-Host). Diese beiden sind by design öffentliche Browser-Werte; SENTRY_DSN bleibt serverseitig. ALERT_WEBHOOK_URL postet optional Fehler-Alarme an einen Slack-kompatiblen Endpoint.
Prüfen: neu starten, eine Test-Exception auslösen (oder Sentries Beispiel-Event nachspielen) und bestätigen, dass sie in der Issues-Liste des Projekts landet.
# apps/web/.env.local — all optional
SENTRY_DSN=https://…@….ingest.sentry.io/…
NEXT_PUBLIC_POSTHOG_KEY=phc_…
NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com
# ALERT_WEBHOOK_URL=https://hooks.slack.com/services/…Cloudflare Turnstile
Bot-Schutz für die öffentlichen Formulare und Credential-Endpoints — standardmäßig CAPTCHA_PROVIDER=off, also fügen Sie ihn hinzu, bevor Sie die Registrierung für Fremde öffnen. Kostenlos.
1. Öffnen Sie dash.cloudflare.com → Turnstile → Add widget → benennen Sie es und listen Sie die Hostnamen: localhost für die Entwicklung plus Ihre echte Domain → Create.
2. Kopieren Sie beide Werte: den Site Key — by design öffentlich, er rendert im Widget → NEXT_PUBLIC_TURNSTILE_SITE_KEY — und den Secret Key, den der Server zur Prüfung nutzt → TURNSTILE_SECRET_KEY.
3. CAPTCHA_PROVIDER=turnstile schaltet es ein; der Start scheitert und nennt den fehlenden Key. Der Captcha-Guide listet exakt, welche Oberflächen das Widget schützt.
Prüfen: öffnen Sie /auth oder das Kontaktformular — das Widget rendert; Einsendungen ohne gelöste Challenge werden abgelehnt. Lädt das Widget nie, steht der besuchte Hostname nicht auf der Widget-Liste.
# apps/web/.env.local
CAPTCHA_PROVIDER=turnstile
NEXT_PUBLIC_TURNSTILE_SITE_KEY=0x… # public by design
TURNSTILE_SECRET_KEY=0x… # server-onlyEine eigene Domain
Ein Kauf bei einem beliebigen Registrar — Cloudflare Registrar, Porkbun, Namecheap funktionieren alle. Nichts davon landet in der Env; die Domain taucht in der Services ID, den Resend-DNS, den Turnstile-Hostnamen und den OAuth-Return-URLs auf, die Sie unterwegs konfiguriert haben.
Zwei Wege, sie auf die App zu zeigen: Für Cloud Run nutzen Sie das Domain Mapping im Deploy-Guide — ein paar Konsolen-Klicks plus die DNS-Records, die Google listet. Oder ziehen Sie DNS zu Cloudflare-Nameservern um (der Registrar tauscht zwei Records) — optional, aber auch der aufgeräumte Weg, R2-Public-Buckets und Turnstile-Hostnamen an einem Ort zu verwalten.
Wenn du die Einrichtung fortsetzen möchtest, lies Datenbank einrichten.