Déployer en production
Guide complet pour mettre votre Wagoo en production.
Étape 1 : Préparer votre code
Vérifier le code
# Vérifier que tout compile
pnpm build
# Tests
pnpm test
# Linting
pnpm lintCommiter et pusher
# Assurez-vous que .env.local est dans .gitignore
cat .gitignore | grep .env
# Commiter le code
git add .
git commit -m "PrĂŞt pour la production"
git push origin mainÉtape 2 : Préparer la base de données
Créer la DB en production
Vous avez 2 options :
Option 1 : Hosted DB (Recommandé)
- Heroku PostgreSQL
- AWS RDS
- DigitalOcean Managed Databases
- Render.com PostgreSQL
Avantages:
- âś… Sauvegardes automatiques
- ✅ Haute disponibilité
- âś… Monitoring inclus
Option 2 : Auto-hébergée
- VPS avec PostgreSQL
- Nécessite la maintenance
Récupérer la connexion
Exemple avec Render :
PostgreSQL://user:password@host:5432/databaseÉtape 3 : Préparer les secrets
Créez un fichier .env.production (local):
# Database
DATABASE_URL="postgresql://user:password@host:5432/db"
# Auth - better-auth
BETTER_AUTH_SECRET="votre-secret-très-long-et-aléatoire"
BETTER_AUTH_URL="https://monsite.com"
# OAuth GitHub (optionnel)
GITHUB_ID="..."
GITHUB_SECRET="..."
# OAuth Google (optionnel)
GOOGLE_ID="..."
GOOGLE_SECRET="..."
# Stripe
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_live_..."
STRIPE_SECRET_KEY="sk_live_..."
STRIPE_WEBHOOK_SECRET="whsec_..."
# Email (optionnel)
SMTP_HOST="smtp.gmail.com"
SMTP_PORT="587"
SMTP_USER="votre-email@gmail.com"
SMTP_PASSWORD="votre-password"
SMTP_FROM="noreply@monsite.com"
# Autres
NODE_ENV="production"⚠️ Ne commites JAMAIS ce fichier!
Étape 4 : Runner les migrations
Avant le déploiement:
Assurez-vous que la base de données est à jour :
# Créer la DB si elle n'existe pas
createdb production_db
# Appliquer les migrations Prisma
DATABASE_URL="postgresql://user:password@host:5432/db" \
pnpm prisma migrate deployÉtape 5 : Choisir un provider
Vercel (Recommandé)
Avantages :
- ✅ Déploiement automatique avec Git
- ✅ Serverless (pas de serveur à gérer)
- âś… HTTPS automatique
- âś… Scaling automatique
- ✅ Free tier généreux
Voir : Déployer avec Vercel
Autres providers
Pour AWS, DigitalOcean, etc. :
# Build
pnpm build
# Lancer
node .next/standalone/server.jsVous avez besoin d’un serveur Node.js actif.
Étape 6 : Configurer le domaine
- Achetez/préparez votre domaine
- Configurez les records DNS
- Activez SSL/HTTPS
- Voir : Domaine personnalisé
Étape 7 : Vérifier les logs
Après le déploiement :
# Vérifier les logs
tail -f /var/log/app.log
# Ou dans Vercel Dashboard
# Deployments → LogsÉtape 8 : Activer le monitoring
Voir : Monitoring
Checklist finale
- ✅ Code pusé sur Git
- âś… Build local OK (
pnpm build) - âś… Tests passent (
pnpm test) - âś… Linting OK (
pnpm lint) - âś… .env.local dans .gitignore
- ✅ BD production créée et migrée
- ✅ Secrets configurés
- âś… Stripe en mode Live
- ✅ Webhooks configurés pour l’URL production
- ✅ Domaine DNS configuré
- âś… SSL/HTTPS actif
- âś… Monitoring en place
Variables d’environnement critiques
| Variable | Critique | Exemple |
|---|---|---|
| DATABASE_URL | ✅ | postgresql://… |
| BETTER_AUTH_SECRET | âś… | (secret long) |
| BETTER_AUTH_URL | ✅ | https://monsite.com |
| STRIPE_SECRET_KEY | ✅ | sk_live_… |
| NODE_ENV | âś… | production |
| NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY | ✅ | pk_live_… |
Sécurité en production
Secrets
✅ Utilisez un gestionnaire de secrets ✅ Jamais en clair dans Git ✅ Rotation régulière ✅ Audit des accès
Base de données
✅ Sauvegardes quotidiennes ✅ Réplication en standby ✅ Chiffrement au repos ✅ Authentification forte
Application
✅ HTTPS obligatoire ✅ Headers de sécurité ✅ Rate limiting ✅ WAF (optionnel)
Performances en production
Optimisations
// next.config.mjs
export default {
compress: true,
images: {
optimization: true,
formats: ['image/avif', 'image/webp'],
},
poweredByHeader: false,
}Monitoring
- Response time < 500ms
- CPU usage < 80%
- Memory usage < 80%
- Error rate < 0.1%
Rollback si problème
Rollback Vercel
- Vercel Dashboard → Deployments
- Cliquez sur le déploiement précédent
- Cliquez “Promote to Production”
Rollback manuel
git revert <commit-hash>
git push origin main
# Le déploiement se refait automatiquement