Déployer Next.js en production, hors de Vercel
Hors de Vercel, Next.js garde toutes ses fonctions. Il lui faut un conteneur, ses fichiers statiques, sharp pour les images et, dès deux instances, un cache partagé. Vous posez ça dans votre dépôt, Fransys déploie à chaque push, sans YAML.
Sans carte bancaire, sans engagement.
Votre dépôt Next.js
- Conteneur Next.js
- Redis
- Base de données
- Stockage objet
Kubernetes, monté et opéré par Fransys
Le cloud européen choisi Scaleway · OVHcloud · Hetzner · Outscale
Ce que Vercel réglait pour vous
La documentation de Next.js est claire : un serveur Node.js ou un conteneur Docker prend en charge toutes ses fonctions. Ce que Vercel réglait sans vous le demander devient votre configuration : l’image, les fichiers statiques, l’optimisation d’images, le cache entre instances, l’arrêt propre. Elle tient dans votre dépôt, et la plateforme opère le reste.
- 1Dockerfile à la racine du dépôt
- 1geste de déploiement : git push
- 0ligne de YAML à écrire
Next.js en production, point par point
-
Le conteneur
output: 'standalone'produit un dossier.next/standalonequi se déploie sans installernode_modules. Votre Dockerfile, à la racine du dépôt, en fait l’image du bloc Docker. -
Les fichiers statiques
Ce serveur minimal ne copie ni
publicni.next/static. Votre Dockerfile les place à côté du dossier standalone, sinon ils manquent en production. -
Les images
Avec le mode standalone, la documentation demande d’installer
sharppour l’optimisation d’images. Il entre dans l’image, avec vos dépendances. -
Le cache partagé
Par défaut, chaque instance garde son cache en mémoire. Dès la deuxième, un cache handler et un bloc Redis partagent les entrées et les tags. Les identifiants sont injectés dans l’application.
-
Les variables
Les
NEXT_PUBLIC_sont figées au build : elles doivent exister quand l’image se construit. Les autres se règlent dans le bloc, hors du dépôt et hors de l’image. -
L’arrêt propre
À chaque mise à jour, Kubernetes envoie
SIGTERMà l’ancienne instance. Next.js finit alors les requêtes en cours avant de s’arrêter, et sa documentation recommande de lui laisser 10 à 30 secondes.
Du push à la mise en ligne
-
git pushLe commit part sur la branche configurée.
-
buildL’image est construite depuis votre Dockerfile, avec vos variables publiques.
-
verifyLe cluster lance la nouvelle image, et la plateforme vérifie qu’elle répond.
-
liveLa nouvelle version reçoit le trafic. En cas d’échec, retour automatique à la précédente.
Avec votre agent, ou à la main
Avec votre agentexemple
Déploie mon app Next.js en mode standalone, avec un cache Redis partagé.
- L'agent lit votre dépôt et prépare le plan : les blocs, chacun avec son prix.
- Une personne de l'équipe valide le plan.
- Le moteur exécute ; la nouvelle version reçoit le trafic une fois vérifiée.
À la main
- Posez un bloc Docker sur le canvas, puis un bloc Redis relié à l'application.
- Branchez votre dépôt Git : le Dockerfile à la racine sert au build.
- Poussez sur la branche configurée : la version part en ligne.
Ce qu’on nous demande sur Next.js
Fransys a-t-il un bloc Next.js ?
Next.js passe par le bloc Docker, avec votre Dockerfile. Laravel, React, Angular et Vue ont un bloc natif ; les autres frameworks passent par ce bloc, qui a les mêmes connexions, variables, métriques et journaux.
Mes variables NEXT_PUBLIC_ ne changent pas après un redéploiement : pourquoi ?
Next.js les fige au moment du build, et l’application ne réagit plus à leurs changements ensuite. Passez-les à la construction de l’image, dans le Dockerfile ou le pipeline que Fransys ajoute à votre dépôt, et reconstruisez pour en changer une. Une valeur lue côté serveur reste dans le bloc.
Comment partager le cache entre plusieurs instances ?
Déclarez un cacheHandler et mettez cacheMaxMemorySize à 0, comme le montre la documentation de Next.js. Votre handler range les entrées dans un bloc Redis relié à l’application, qui reçoit REDIS_HOST, REDIS_PORT et REDIS_PASSWORD. Les tags invalidés se synchronisent aussi par Redis.
Et le streaming ?
Next.js le prend en charge hors de Vercel. Derrière nginx ou un proxy semblable, il demande de couper le buffering : sa documentation pose l’en-tête X-Accel-Buffering à no dans next.config.js.
Deux versions peuvent-elles cohabiter pendant une mise à jour ?
Oui, le temps de la bascule. Next.js détecte ce décalage avec deploymentId : donnez-lui l’identifiant de la version, le commit par exemple, lu dans une variable fixée au build.
Quelles versions de Next.js et de Node.js ?
Celles de votre Dockerfile : l’image de base reste votre choix. Au 2 novembre 2026, la dernière version de Next.js est la 16.4.4, et sa documentation demande Node.js 20.9 au minimum.
Pour aller plus loin : l'alternative à Vercel en Europe et le CI/CD sur Kubernetes.
Votre appli Next.js sur Fransys, par où commencer
Voyez la console en démo, à votre nom. Pour chiffrer votre appli, le plan d’infra le fait ligne par ligne, machines comprises.
Sans carte bancaire, sans engagement.
À lire sur le blog
Heroku et Vercel deviennent trop chers : où migrer en 2026 ?
Heroku sans free tier, Vercel qui explose les factures : comparatif des alternatives européennes pour startups. Migration vers Kubernetes managé sans DevOps.
Combien coûte vraiment un DevOps en 2026 ? (et comment limiter cette dépense)
Salaire, charges, recrutement, turnover : le coût réel d'un DevOps en France dépasse 90 000 €/an. Analyse complète et alternatives pour startups sans DevOps.
AWS vs Fransys : combien coûte vraiment votre infrastructure cloud en 2026 ?
Comparatif détaillé AWS vs Fransys sur hébergeur européen. Les prix poste par poste, et trois scénarios de startup chiffrés.