Pratique
Checklist déploiement sécurisé Next.js
Une application Next.js en production doit être pensée comme une application web complète : secrets, headers, dépendances, logs, reverse proxy, base de données et authentification.
Variables d'environnement
- séparer local et production
- ne jamais commiter
.env - utiliser des secrets longs
- limiter les variables exposées au navigateur
- préfixer uniquement ce qui doit être public avec
NEXT_PUBLIC_ - protéger les fichiers
.envsur le serveur
Attention
Une variable NEXT_PUBLIC_* est visible côté navigateur. Elle ne doit jamais contenir de secret.
Dépendances
- utiliser
npm cien production - auditer les dépendances
- mettre à jour régulièrement
- éviter les paquets inutiles
- vérifier les warnings importants
npm ci
npm audit --omit=dev
Build et migrations
Ordre typique :
npm ci
npx prisma generate
npx prisma migrate deploy
npm run build
pm2 restart app
Les migrations doivent être testées avant production.
Authentification
- utiliser un secret Auth.js fort
- configurer l'URL publique
- activer la confiance proxy si nécessaire
- protéger les pages privées
- limiter les inscriptions
- appliquer du rate limiting
- journaliser les erreurs auth utiles
Reverse proxy
Nginx ou équivalent doit gérer :
- HTTPS
- redirection HTTP vers HTTPS
- headers de sécurité
- timeouts
- taille maximale de requête
- rate limiting
- logs d'accès
Base de données
- ne pas exposer PostgreSQL publiquement
- utiliser un mot de passe fort
- créer un utilisateur dédié
- sauvegarder régulièrement
- tester les restaurations
- appliquer les migrations proprement
- limiter les droits applicatifs si possible
Logs
À surveiller :
- erreurs serveur
- erreurs auth
- erreurs Prisma
- codes HTTP 4xx et 5xx
- redémarrages PM2
- espace disque
SEO et pages privées
- vérifier
robots.txt - exclure
/admin,/app,/api,/login,/inscription - générer un sitemap
- configurer l'URL canonique
- éviter d'indexer les pages privées
À retenir
Le déploiement sécurisé d'une app Next.js ne se limite pas au code. Il inclut les secrets, le proxy, la base, les logs, les dépendances et le processus de mise à jour.
