# 🚀 Deployment Checklist für QR Master Diese Checkliste enthält alle notwendigen Änderungen vor dem Push nach Gitea und dem Production Deployment. --- ## ✅ 1. Environment Variables (.env) ### Basis URLs ändern ```bash # Von: NEXT_PUBLIC_APP_URL=http://localhost:3050 NEXTAUTH_URL=http://localhost:3050 # Zu: NEXT_PUBLIC_APP_URL=https://www.qrmaster.net NEXTAUTH_URL=https://www.qrmaster.net ``` ### Secrets generieren (falls noch nicht geschehen) ```bash # NEXTAUTH_SECRET (für JWT/Session Encryption) openssl rand -base64 32 # IP_SALT (für DSGVO-konforme IP-Hashing) openssl rand -base64 32 ``` Bereits generiert: - ✅ NEXTAUTH_SECRET: `PT8XVydC4v7QluCz/mV1yb7Y3docSFZeFDioJz4ZE98=` - ✅ IP_SALT: `j/aluIpzsgn5Z6cbF4conM6ApK5cj4jDagkswzfgQPc=` ### Database URLs ```bash # Development (localhost): DATABASE_URL="postgresql://postgres:postgres@localhost:5435/qrmaster?schema=public" DIRECT_URL="postgresql://postgres:postgres@localhost:5435/qrmaster?schema=public" # Production (anpassen an deinen Server): DATABASE_URL="postgresql://USER:PASSWORD@HOST:5432/qrmaster?schema=public" DIRECT_URL="postgresql://USER:PASSWORD@HOST:5432/qrmaster?schema=public" ``` --- ## 🔐 2. Google OAuth Configuration ### Redirect URIs in Google Cloud Console hinzufügen 1. Gehe zu: https://console.cloud.google.com/apis/credentials 2. Wähle deine OAuth 2.0 Client ID: `683784117141-ci1d928jo8f9g6i1isrveflmrinp92l4.apps.googleusercontent.com` 3. Füge folgende **Authorized redirect URIs** hinzu: ``` https://www.qrmaster.net/api/auth/callback/google ``` **Optional** (für Staging/Testing): ``` http://localhost:3050/api/auth/callback/google https://staging.qrmaster.net/api/auth/callback/google ``` --- ## 💳 3. Stripe Configuration ### ⚠️ WICHTIG: Von Test Mode zu Live Mode wechseln #### Current (Test Mode): ```bash STRIPE_SECRET_KEY=sk_test_51QYL7gP9xM... NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_51QYL7gP9xM... ``` #### Production (Live Mode): 1. Gehe zu: https://dashboard.stripe.com/ 2. Wechsle von **Test Mode** zu **Live Mode** (Toggle oben rechts) 3. Hole dir die **Live Keys**: - `API Keys` → `Secret key` (beginnt mit `sk_live_`) - `API Keys` → `Publishable key` (beginnt mit `pk_live_`) ```bash # Production Keys: STRIPE_SECRET_KEY=sk_live_XXXXX NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_XXXXX ``` #### Webhook Secret (Production) 1. Erstelle einen neuen Webhook Endpoint: https://dashboard.stripe.com/webhooks 2. Endpoint URL: `https://www.qrmaster.net/api/webhooks/stripe` 3. Events to listen: - `checkout.session.completed` - `customer.subscription.updated` - `customer.subscription.deleted` - `invoice.payment_succeeded` - `invoice.payment_failed` 4. Kopiere den **Signing Secret** (beginnt mit `whsec_`) ```bash STRIPE_WEBHOOK_SECRET=whsec_XXXXX ``` #### Price IDs aktualisieren Erstelle Produkte und Preise in **Live Mode**: 1. https://dashboard.stripe.com/products 2. Erstelle "Pro" und "Business" Pläne 3. Kopiere die Price IDs (beginnen mit `price_`) ```bash STRIPE_PRICE_ID_PRO_MONTHLY=price_XXXXX STRIPE_PRICE_ID_PRO_YEARLY=price_XXXXX STRIPE_PRICE_ID_BUSINESS_MONTHLY=price_XXXXX STRIPE_PRICE_ID_BUSINESS_YEARLY=price_XXXXX ``` --- ## 📧 4. Resend Email Configuration ### Domain Verification 1. Gehe zu: https://resend.com/domains 2. Füge Domain hinzu: `qrmaster.net` 3. Konfiguriere DNS Records (SPF, DKIM, DMARC) 4. Warte auf Verification ### From Email anpassen Aktuell verwendet alle Emails: `onboarding@resend.dev` (Resend's Test Domain) Nach Domain Verification in `src/lib/email.ts` ändern: ```typescript // Von: from: 'Timo from QR Master ', // Zu: from: 'Timo from QR Master ', // oder from: 'Timo from QR Master ', ``` --- ## 🔍 5. SEO Configuration ### Bereits korrekt konfiguriert ✅ ```bash NEXT_PUBLIC_INDEXABLE=true # ✅ Bereits gesetzt ``` ### Sitemap & robots.txt prüfen - Sitemap: `https://www.qrmaster.net/sitemap.xml` - Robots: `https://www.qrmaster.net/robots.txt` Nach Deployment testen! --- ## 📊 6. PostHog Analytics (Optional) Falls du PostHog nutzt: ```bash NEXT_PUBLIC_POSTHOG_KEY=phc_XXXXX NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com ``` --- ## 🐳 7. Docker Deployment ### docker-compose.yml prüfen Stelle sicher, dass alle ENV Variables korrekt gemappt sind: ```yaml environment: NEXTAUTH_URL: https://www.qrmaster.net NEXT_PUBLIC_APP_URL: https://www.qrmaster.net # ... weitere vars ``` ### Deployment Commands ```bash # Build & Deploy docker-compose up -d --build # Database Migration (nach erstem Deploy) docker-compose exec web npm run db:migrate # Logs checken docker-compose logs -f web # Health Check curl https://www.qrmaster.net ``` --- ## 🔒 8. Security Checklist - [ ] ✅ NEXTAUTH_SECRET ist gesetzt und sicher (32+ Zeichen) - [ ] ✅ IP_SALT ist gesetzt und sicher - [ ] ⚠️ Stripe ist auf **Live Mode** umgestellt - [ ] ⚠️ Google OAuth Redirect URIs enthalten Production URL - [ ] ⚠️ Resend Domain ist verifiziert - [ ] ⚠️ Webhook Secrets sind für Production gesetzt - [ ] ⚠️ Database URLs zeigen auf Production DB - [ ] ⚠️ Keine Test/Dev Secrets in Production --- ## 📝 9. Vor dem Git Push ### Files prüfen ```bash # .env sollte NICHT committet werden! git status # Falls .env in Git ist: git rm --cached .env echo ".env" >> .gitignore ``` ### Sensible Daten entfernen - [ ] Keine API Keys im Code - [ ] Keine Secrets in Config Files - [ ] `.env` ist in `.gitignore` --- ## 🎯 10. Nach dem Deployment testen ### Funktionen testen 1. **Google OAuth Login**: https://www.qrmaster.net/login 2. **QR Code erstellen**: https://www.qrmaster.net/create 3. **Stripe Checkout**: Testprodukt kaufen mit echten Stripe Test Cards 4. **Email Delivery**: Password Reset testen 5. **Analytics**: PostHog Events tracken ### Monitoring ```bash # Server Logs docker-compose logs -f # Database Status docker-compose exec db psql -U postgres -d qrmaster -c "SELECT COUNT(*) FROM \"User\";" # Redis Status docker-compose exec redis redis-cli PING ``` --- ## 📞 Support Kontakte - **Stripe Support**: https://support.stripe.com - **Google Cloud Support**: https://support.google.com/cloud - **Resend Support**: https://resend.com/docs - **Next.js Docs**: https://nextjs.org/docs --- ## ✨ Deployment erfolgreich! Nach erfolgreichem Deployment: 1. ✅ Teste alle wichtigen Features 2. ✅ Monitor Logs für Fehler 3. ✅ Prüfe Analytics Dashboard 4. ✅ Backup der Production Database erstellen **Good luck! 🚀**