Vercel Deployment

Deploye deine Kit-Anwendung auf Vercel mit Preview-Umgebungen, Cron Jobs und benutzerdefinierten Domains

Vercel ist die empfohlene Hosting-Plattform für Kit. Sie bietet Zero-Configuration Next.js Deployment, automatische Preview-Umgebungen für jeden Pull Request, integrierte Analytics und Edge-Network-Verteilung — alles optimiert für den Next.js App Router, den Kit verwendet.

Voraussetzungen

Bevor du deployest, stelle sicher, dass du Folgendes hast:
  • Einen Vercel-Account (das kostenlose Tier reicht für den Einstieg)
  • Dein Kit-Repository wurde zu GitHub gepusht
  • Alle externen Dienste konfiguriert (Datenbank, Clerk, Lemon Squeezy, etc.)

Vercel-Projekt erstellen

1

Repository verbinden

  1. Gehe zu vercel.com/new
  2. Wähle Import Git Repository und wähle dein Kit-Repository
  3. Vercel erkennt das Next.js Framework automatisch
2

Build-Einstellungen konfigurieren

Setze die folgende Build-Konfiguration:
EinstellungWert
Framework PresetNext.js
Build Commandpnpm build
Output Directory.next (Standard)
Install Commandpnpm install
Node.js Version20.x
3

Deployen

Klicke auf Deploy. Vercel führt den Build-Befehl aus, bündelt deine Anwendung und deployt sie auf eine .vercel.app-Subdomain. Das erste Deployment dauert typischerweise 2-3 Minuten.

Umgebungsvariablen

Konfiguriere alle erforderlichen Umgebungsvariablen im Vercel Dashboard unter Settings > Environment Variables. Gruppiere sie nach Dienst:

Kerndienste

VariableDienstErforderlich
DATABASE_URLSupabase (gepoolte Verbindung)Ja
DIRECT_URLSupabase (direkte Verbindung)Ja
NEXT_PUBLIC_SUPABASE_URLSupabaseJa
NEXT_PUBLIC_SUPABASE_ANON_KEYSupabaseJa
SUPABASE_SERVICE_ROLE_KEYSupabaseJa
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYClerkJa
CLERK_SECRET_KEYClerkJa
CLERK_WEBHOOK_SECRETClerkJa
LEMONSQUEEZY_API_KEYLemon SqueezyJa
LEMONSQUEEZY_STORE_IDLemon SqueezyJa
LEMONSQUEEZY_WEBHOOK_SECRETLemon SqueezyJa
RESEND_API_KEYResendJa
RESEND_FROM_EMAILResendJa
BLOB_READ_WRITE_TOKENVercel BlobJa
UPSTASH_REDIS_REST_URLUpstash RedisJa
UPSTASH_REDIS_REST_TOKENUpstash RedisJa

Anwendungseinstellungen

VariableZweckBeispiel
NEXT_PUBLIC_APP_URLProduction-Domainhttps://yourdomain.com
ALLOWED_ORIGINSCORS-Whitelisthttps://yourdomain.com
CRON_SECRETVercel Cron-AuthentifizierungZufälliger String mit mind. 32 Zeichen
COLOR_THEMEUI-Farbthemadefault
NEXT_PUBLIC_PRICING_MODELPreismodellcredit_based oder subscription

KI-Provider-Schlüssel (Optional)

VariableProvider
OPENAI_API_KEYOpenAI
ANTHROPIC_API_KEYAnthropic
GOOGLE_GENERATIVE_AI_API_KEYGoogle AI
XAI_API_KEYxAI
Aktiviere KI-Features mit Feature Flags:
FlagFeature
NEXT_PUBLIC_AI_LLM_CHAT_ENABLEDLLM-Chat-Interface
NEXT_PUBLIC_AI_RAG_CHAT_ENABLEDRAG-Chat mit Dokument-Upload

Production-Konfiguration

Kit enthält zwei Konfigurationsdateien, die Vercel während des Deployments automatisch liest.

Cron Jobs

Die vercel.json-Datei definiert geplante Aufgaben, die automatisch ausgeführt werden:
vercel.json — Cron Job Configuration
{
  "crons": [
    {
      "path": "/api/cron/check-trials",
      "schedule": "0 2 * * *"
    },
    {
      "path": "/api/cron/expire-bonus-credits",
      "schedule": "0 3 * * *"
    }
  ]
}
Cron JobZeitplanZweck
/api/cron/check-trialsTäglich um 2:00 Uhr UTCErkennt abgelaufene Trial-Abonnements und stuft Benutzer herab
/api/cron/expire-bonus-creditsTäglich um 3:00 Uhr UTCEntfernt abgelaufene Bonus-Credits von Benutzerkonten
Beide Endpunkte überprüfen die CRON_SECRET-Umgebungsvariable vor der Ausführung. Setze diesen Wert auf einen zufälligen String mit mindestens 32 Zeichen in deinen Vercel-Umgebungsvariablen.

Next.js-Konfiguration

Die next.config.mjs enthält production-kritische Einstellungen, die automatisch angewendet werden:
next.config.mjs — Core Production Settings
const nextConfig = {
  pageExtensions: ['js', 'jsx', 'ts', 'tsx'],
  reactStrictMode: true,
  swcMinify: true,
  • reactStrictMode — Findet häufige Bugs während der Entwicklung, kein Overhead in Production
  • swcMinify — Verwendet den SWC-Compiler für Minifizierung (schneller als Terser)
  • image formats — Liefert AVIF und WebP automatisch basierend auf Browser-Unterstützung
next.config.mjs — Security Headers
// Security Headers
  async headers() {
    return [
      {
        source: '/:path*',
        headers: [
          {
            key: 'X-DNS-Prefetch-Control',
            value: 'on',
          },
          {
            key: 'X-Frame-Options',
            value: 'SAMEORIGIN',
          },
          {
            key: 'X-Content-Type-Options',
            value: 'nosniff',
          },
          {
            key: 'X-XSS-Protection',
            value: '1; mode=block',
          },
          {
            key: 'Referrer-Policy',
            value: 'strict-origin-when-cross-origin',
          },
          {
            key: 'Permissions-Policy',
            value: 'camera=(), microphone=(self), geolocation=(), interest-cohort=(), payment=(), usb=()',
          },
          {
            key: 'Content-Security-Policy',
            value: ContentSecurityPolicy.replace(/\s{2,}/g, ' ').trim(),
          },
        ],
      },
    ]
  },
Diese Sicherheits-Header werden auf alle Routen angewendet und umfassen Content-Security-Policy, X-Frame-Options, X-Content-Type-Options und Referrer-Policy. Siehe die Sicherheitsübersicht für Details zu jedem Header.

Preview Deployments

Jeder Pull Request erhält automatisch seine eigene Deployment-URL. Vercel erstellt eine einzigartige Preview-Umgebung mit dem Code des PRs, fügt einen Kommentar zum PR mit dem Preview-Link hinzu und entfernt sie, wenn der PR geschlossen wird.
Preview Deployments sind nützlich für:
  • Code-Reviews — Reviewer können Änderungen in einer echten Umgebung testen, bevor sie gemergt werden
  • QA-Tests — Teste Zahlungsabläufe, Auth-Abläufe und KI-Features, ohne Production zu beeinflussen
  • Stakeholder-Demos — Teile einen Link mit nicht-technischen Teammitgliedern

Benutzerdefinierte Domain

1

Domain hinzufügen

Gehe zu Settings > Domains in deinem Vercel-Projekt und füge deine Domain hinzu (z.B. yourdomain.com).
2

DNS konfigurieren

Füge die DNS-Einträge hinzu, die Vercel bereitstellt. Typischerweise:
TypNameWert
A@76.76.21.21
CNAMEwwwcname.vercel-dns.com
3

Umgebungsvariablen aktualisieren

Setze NEXT_PUBLIC_APP_URL auf deine Production-Domain:
bash
NEXT_PUBLIC_APP_URL=https://yourdomain.com
Aktualisiere auch ALLOWED_ORIGINS, um deine Domain für CORS einzuschließen:
bash
ALLOWED_ORIGINS=https://yourdomain.com
4

Externe Dienste aktualisieren

Richte Webhooks und Callback-URLs auf deine Production-Domain aus:
  • Clerk — Aktualisiere die Sign-in/Sign-up-Redirect-URLs und den Webhook-Endpunkt
  • Lemon Squeezy — Aktualisiere die Webhook-URL auf https://yourdomain.com/api/webhooks/lemonsqueezy
  • Resend — Verifiziere deine Domain für den E-Mail-Versand

Manuelles Deployment per CLI

Für Fälle, in denen du außerhalb der GitHub-Integration deployen musst (Debugging, Hotfixes), verwende die Vercel CLI:
bash
# Vercel CLI installieren
pnpm add -g vercel@latest

# Bei Vercel anmelden
vercel login

# Auf Preview deployen
vercel

# Auf Production deployen
vercel --prod
Die CI/CD-Pipeline verwendet --archive=tgz, um Dateien vor dem Upload zu komprimieren, was Rate-Limit-Fehler bei Projekten mit vielen Dateien vermeidet:
bash
vercel deploy --prebuilt --prod --archive=tgz --token=$VERCEL_TOKEN

Fehlerbehebung

Build schlägt wegen fehlender Umgebungsvariablen fehl

Vercel-Builds laufen in einer sauberen Umgebung. Jede Variable, die dein Build-Prozess liest, muss im Vercel Dashboard konfiguriert sein. Prüfe die Build-Logs auf undefined-Werte und füge die fehlenden Variablen hinzu.

Cron Jobs laufen nicht

  1. Prüfe, ob vercel.json im Projekt-Root liegt (oder im Root Directory, das du konfiguriert hast)
  2. Bestätige, dass CRON_SECRET in den Production-Umgebungsvariablen gesetzt ist
  3. Prüfe den Cron-Tab im Vercel Dashboard, um den Ausführungsverlauf zu sehen

Preview Deployments erscheinen nicht

Stelle sicher, dass die Vercel GitHub-Integration Zugriff auf das Repository hat. Gehe zu Settings > Git in Vercel und überprüfe das verbundene Repository.