VPS
time_read33mn de lecture

Déployer une application Next.js sur VPS Linux : Node.js, PM2, Nginx et SSL

18 juin 2026
Résumez avec:

Déployer une application Next.js sur VPS Linux : Node.js, PM2, Nginx et SSL

Développer une application Next.js est souvent simple au départ : quelques pages, une API route, une authentification, puis progressivement un vrai projet prend forme. Le besoin change alors : vous ne voulez plus seulement tester votre application, mais la déployer en production sur une infrastructure fiable, maîtrisée et évolutive.✨Beaucoup de développeurs commencent avec Vercel ou Netlify, puis rencontrent certaines limites : coût des offres payantes, timeouts des fonctions serverless, besoin d’une base de données persistante, accès système limité ou volonté de garder un contrôle complet sur l’environnement serveur.

Dans ce contexte, choisir un VPS Linux devient une alternative solide pour héberger une application SaaS, un portfolio avancé, une plateforme e-commerce personnalisée ou une application full-stack basée sur Next.js.😉

Objectif

👇L’objectif de ce guide est de vous montrer comment déployer une application Next.js sur un VPS Linux en suivant une méthode claire, reproductible et adaptée à un environnement de production. Nous allons partir d’un serveur Ubuntu ou Debian, installer Node.js, préparer l’application avec le mode standalone, gérer le processus Node avec PM2, configurer Nginx comme reverse proxy, puis activer un certificat SSL Let’s Encrypt.🔒 À la fin du tutoriel, votre application sera accessible en HTTPS depuis un nom de domaine personnalisé. Elle pourra redémarrer automatiquement en cas de crash ou de reboot du serveur, ses logs seront consultables avec PM2, et les ressources du serveur pourront être surveillées depuis le LWS Panel KVM.💯

Pré-requis

Avant de commencer, vous devez :

  • Disposer d’un VPS Linux prêt à être configuré. Ce guide s’adresse principalement aux utilisateurs d’un VPS KVM LWS sous Ubuntu 22.04, Ubuntu 24.04 ou Debian 12, avec un accès root en SSH. Les identifiants de connexion au serveur sont transmis après la livraison du VPS,
  • Vous aurez également besoin d’un nom de domaine pointant vers l’adresse IP du VPS. Pour cela, créez ou modifiez un enregistrement DNS de type A depuis votre espace client, par exemple dans la section « LWS Panel > Noms de domaine > Zone DNS ». Les ports 22, 80 et 443 doivent être ouverts afin d’autoriser respectivement SSH, HTTP et HTTPS,
  • Enfin, votre application Next.js doit être disponible dans un dépôt Git, par exemple GitHub, GitLab ou Gitea,
  • Vous devez aussi être à l’aise avec les commandes de base Linux, l’utilisation de SSH, git clone, npm, ainsi que les notions essentielles de Next.js en production.

Pourquoi déployer Next.js sur VPS plutôt que Vercel

Vercel est une excellente plateforme pour démarrer rapidement avec Next.js, notamment parce qu’elle est conçue autour de ce framework. Elle simplifie le déploiement, l’intégration Git et la gestion des previews. Cependant, dès qu’un projet devient plus exigeant, un VPS Linux peut offrir davantage de liberté, de stabilité budgétaire et de contrôle technique.

Déployer Next.js sur un VPS permet notamment de maîtriser l’environnement d’exécution, d’installer ses propres services, d’héberger une base de données locale et de configurer finement Nginx, PM2, les certificats SSL, les logs ou les sauvegardes. Cette approche demande plus de configuration initiale, mais elle convient très bien aux développeurs qui veulent comprendre et contrôler leur infrastructure.

Critère Vercel gratuit / pro VPS LWS

Timeout des fonctions API

Limité selon l’offre

Illimité côté serveur, selon vos ressources

Base de données locale

Service externe requis

PostgreSQL, MySQL ou Redis possible sur le même serveur

Coût

Variable selon l’usage

Mensuel fixe et prévisible

Accès root

Non disponible

Accès root complet

Personnalisation serveur

Limitée

Totale : paquets Linux, services, configuration réseau

Plusieurs applications

Dépend de l’offre et de l’organisation

Plusieurs vhosts possibles avec Nginx

Ce tutoriel couvre le déploiement manuel de Next.js 15 en production avec Node.js, PM2, Nginx et Let’s Encrypt. Il se concentre sur une installation classique, sans couche d’orchestration supplémentaire.

Il ne couvre pas le déploiement via Docker. Pour cette approche, vous pouvez consulter le tutoriel dédié pour déployer Next.js dans un container Docker sur VPS. Si votre objectif principal est de quitter Vercel sans gérer manuellement toute la configuration serveur, l’alternative Coolify peut aussi être intéressante pour migrer de Vercel vers un VPS avec Coolify pour supprimer les timeouts.

Besoin d’un serveur VPS KVM performant et flexible ?

Découvrez nos offres VPS KVM haut de gamme : des ressources garanties et un contrôle total pour vos projets. Profitez d’un hébergement 100 % SSD, d’un accès root complet, le tout dans un datacenter en France. Démarrez dès maintenant à partir de 4,99 €/mois !

Je choisis mon VPS KVM

Créer un snapshot LWS avant de commencer

Avant de modifier la configuration de votre serveur, il est fortement recommandé de créer un snapshot LWS. Un snapshot est une image instantanée de l’état de votre VPS KVM à un moment précis. En cas d’erreur de configuration, de mauvaise installation ou de problème pendant le déploiement, vous pouvez revenir rapidement à l’état précédent.

Cette précaution est particulièrement utile avant d’installer Node.js, PM2, Nginx ou Certbot. Elle permet de travailler plus sereinement, surtout si vous configurez votre premier environnement de production pour Next.js sur VPS Linux.

Depuis votre espace client, rendez-vous dans la section « LWS Panel KVM > Snapshots > Créer un snapshot ».

Créer un snapshot sur VPS KVM LWS

Donnez un nom explicite à votre snapshot, par exemple avant-deploiement-nextjs, puis lancez sa création.

Créer un snapshot sur un VPS KVM LWS

Les VPS KVM LWS permettent de conserver plusieurs snapshots simultanés, ce qui est pratique pour sécuriser les grandes étapes de configuration serveur.

Installer Node.js sur le VPS

Une application Next.js fonctionne avec Node.js. Sur un VPS Linux, vous devez donc installer une version compatible avant de cloner et builder votre projet. La méthode recommandée ici consiste à utiliser nvm, pour Node Version Manager. Cet outil permet d’installer facilement une version LTS de Node.js, de la mettre à jour et de gérer plusieurs versions si nécessaire.

Connectez-vous d’abord à votre serveur en SSH avec votre utilisateur root ou un utilisateur disposant des droits nécessaires, puis installez nvm :

# Installer nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

# Recharger le shell
source ~/.bashrc

# Installer la version LTS de Node.js
nvm install --lts

# Vérifier les versions installées
node --version
npm --version

La commande nvm install --lts installe la version Long Term Support de Node.js. C’est généralement le meilleur choix pour un serveur de production, car cette version bénéficie d’un support plus stable dans le temps.

Une fois Node.js et npm disponibles, installez PM2 globalement. PM2 servira ensuite à maintenir votre application Next.js active en production, même après un crash ou un redémarrage du serveur.

npm install -g pm2

pm2 --version
À ce stade, votre VPS dispose des deux éléments essentiels pour exécuter une application Next.js : Node.js pour lancer le serveur applicatif, et PM2 pour gérer le processus en arrière-plan. Avant de continuer, vérifiez bien que les commandes node, npm et pm2 répondent correctement dans le terminal.

Préparer l’application Next.js pour la production

Avant de copier ou de lancer votre projet sur le serveur, il faut vérifier que votre application Next.js est prête pour un déploiement en production. L’objectif est de générer un build optimisé, plus léger et plus simple à exécuter sur un VPS Linux.

Dans ce tutoriel, nous allons utiliser le mode standalone de Next.js. Ce mode produit un dossier autonome contenant uniquement les fichiers nécessaires à l’exécution de l’application. Il est particulièrement adapté à un déploiement avec Node.js, PM2 et Nginx.

1. Activer le mode output: ‘standalone’ dans next.config.js

Le mode standalone se configure directement dans le fichier next.config.js ou next.config.ts de votre projet. Il permet à Next.js de générer un dossier .next/standalone/ contenant un fichier server.js et les dépendances nécessaires à l’exécution de l’application.

Dans votre projet local, ouvrez le fichier de configuration Next.js et ajoutez l’option suivante :

// next.config.js
const nextConfig = {
  output: 'standalone',
};

export default nextConfig;

Si votre projet utilise encore une syntaxe CommonJS, la configuration peut ressembler à ceci :

// next.config.js
/** @type {import('next').NextConfig} */
const nextConfig = {
  output: 'standalone',
};

module.exports = nextConfig;
Cette option est importante pour déployer Next.js sur VPS, car elle évite de dépendre d’un lancement classique avec next start. Après le build, l’application pourra être exécutée directement avec Node.js à partir du fichier :
.next/standalone/server.js

Concrètement, cela rend le déploiement plus propre, plus prévisible et mieux adapté à une gestion en production avec PM2.

2. Variables d’environnement

Les variables d’environnement permettent de stocker les informations sensibles ou spécifiques à votre environnement de production : URL de base de données, clé secrète d’authentification, jetons API, URL publique de l’application ou paramètres SMTP. Sur un VPS Linux, elles doivent être gérées avec soin, car elles conditionnent le bon fonctionnement et la sécurité de votre application Next.js.

La règle principale est simple : ne commitez jamais vos fichiers .env dans votre dépôt Git. Un fichier comme .env.production doit être créé directement sur le serveur, ou bien ses valeurs doivent être définies dans la configuration PM2.

Attention également aux variables préfixées par NEXT_PUBLIC_. Dans Next.js, ces variables sont exposées côté navigateur. Elles peuvent donc être lues par les visiteurs de votre site. Il ne faut jamais y placer de secrets, de mots de passe, de clés privées ou d’identifiants de base de données.

Besoin d’un serveur VPS KVM performant et flexible ?

Découvrez nos offres VPS KVM haut de gamme : des ressources garanties et un contrôle total pour vos projets. Profitez d’un hébergement 100 % SSD, d’un accès root complet, le tout dans un datacenter en France. Démarrez dès maintenant à partir de 4,99 €/mois !

Je choisis mon VPS KVM

Cloner et builder l’application sur le VPS

Une fois Node.js, npm et PM2 installés, vous pouvez récupérer votre application depuis son dépôt Git. Dans cet exemple, le projet sera installé dans /var/www/monapp, un emplacement courant pour héberger une application web sur un serveur Linux.

Connectez-vous en SSH à votre VPS, puis créez le répertoire de l’application :

# Créer le répertoire de l'application
mkdir -p /var/www/monapp
cd /var/www/monapp

# Cloner le dépôt Git
git clone https://github.com/utilisateur/mon-app-nextjs.git .

Remplacez l’URL Git par celle de votre propre dépôt. Vous pouvez utiliser une URL HTTPS ou SSH selon votre configuration GitHub, GitLab ou Gitea.

Installez ensuite les dépendances du projet :

# Installer les dépendances avec les versions exactes du package-lock.json
npm ci

La commande npm ci est préférable à npm install en production. Elle s’appuie sur le fichier package-lock.json et garantit une installation plus reproductible, avec les mêmes versions de dépendances que celles validées pendant le développement.

Créez ensuite votre fichier de variables d’environnement :

nano .env.production

Ajoutez-y les variables nécessaires à votre application, par exemple :

DATABASE_URL="postgresql://user:password@localhost:5432/monapp"
NEXTAUTH_SECRET="une-cle-secrete-longue-et-aleatoire"
NEXT_PUBLIC_SITE_URL="https://mondomaine.fr"

Enregistrez le fichier, puis lancez le build de production :

npm run build

Si votre configuration output: 'standalone' est correcte, Next.js génère un dossier .next/standalone/. Vous pouvez le vérifier avec les commandes suivantes :

ls .next/standalone/
ls .next/static/

Le dossier .next/standalone/ contient notamment le fichier server.js, qui sera ensuite lancé avec PM2. Cependant, une étape importante est souvent oubliée : la copie des assets statiques.

Avec le mode standalone, les dossiers public/ et .next/static/ ne sont pas toujours copiés automatiquement dans le dossier autonome. Sans cette étape, votre application peut s’afficher sans CSS, sans images ou avec des erreurs de chargement de fichiers statiques.

Exécutez donc les commandes suivantes :

# Copier le dossier public dans le build standalone
cp -r public .next/standalone/

# Copier les assets statiques Next.js
cp -r .next/static .next/standalone/.next/

Cette étape est essentielle pour un déploiement Next.js sur VPS propre. Avant de continuer, assurez-vous que le build s’est terminé sans erreur et que les dossiers statiques sont bien présents dans .next/standalone/.

Gérer le processus avec PM2

Votre application est maintenant buildée, mais elle ne doit pas être lancée manuellement avec une simple commande node server.js laissée ouverte dans un terminal SSH. En production, il faut utiliser un gestionnaire de processus Node.js capable de maintenir l’application active, de la redémarrer en cas de crash et de la relancer automatiquement après un redémarrage du serveur.

C’est le rôle de PM2. Il permet de lancer votre application Next.js en arrière-plan, de consulter ses logs, de surveiller sa consommation mémoire et CPU, puis de gérer les redémarrages sans avoir à garder une session SSH ouverte.

Cette approche est particulièrement adaptée si vous utilisez un VPS KVM LWS pour héberger votre application Next.js, car vous gardez un contrôle complet sur le processus applicatif tout en profitant des outils de supervision du serveur depuis le LWS Panel KVM.

1. Créer le fichier de configuration PM2

Pour lancer proprement votre application, créez un fichier de configuration PM2 dans le répertoire du projet. Ce fichier permet de centraliser le nom de l’application, le script à exécuter, le port d’écoute, le dossier de travail et certains paramètres de redémarrage.

Depuis le VPS, exécutez :

nano /var/www/monapp/ecosystem.config.js

Ajoutez ensuite la configuration suivante :

module.exports = {
  apps: [
    {
      name: 'monapp-nextjs',
      script: '.next/standalone/server.js',
      cwd: '/var/www/monapp',
      instances: 1,
      exec_mode: 'fork',
      env: {
        NODE_ENV: 'production',
        PORT: 3000,
        HOSTNAME: '0.0.0.0',
      },
      max_memory_restart: '500M',
      error_file: '/var/log/pm2/monapp-error.log',
      out_file: '/var/log/pm2/monapp-out.log',
    },
  ],
};

Dans cette configuration, le champ script indique à PM2 de lancer le fichier server.js généré par le build standalone. Le champ cwd définit le dossier de travail de l’application. Les variables NODE_ENV, PORT et HOSTNAME indiquent que l’application doit fonctionner en production, écouter sur le port 3000 et accepter les connexions locales transmises ensuite par Nginx.

Le paramètre max_memory_restart permet de redémarrer automatiquement le processus si sa consommation mémoire dépasse la limite définie. C’est une sécurité utile pour éviter qu’un processus Node.js instable ne consomme progressivement toute la mémoire disponible du VPS.

2. Démarrer l’application

Une fois le fichier ecosystem.config.js créé, vous pouvez démarrer votre application Next.js avec PM2. Placez-vous dans le répertoire du projet, puis lancez la configuration :

cd /var/www/monapp

# Créer le dossier de logs si nécessaire
mkdir -p /var/log/pm2

# Démarrer l'application avec PM2
pm2 start ecosystem.config.js

PM2 démarre alors le fichier .next/standalone/server.js avec les paramètres définis dans la configuration. Pour vérifier que l’application fonctionne correctement, utilisez :

pm2 status

Vous devez voir votre application, ici monapp-nextjs, avec le statut online. Ce statut indique que le processus Node.js est bien actif.

Vous pouvez aussi consulter les derniers logs pour vérifier qu’aucune erreur ne remonte au lancement :

pm2 logs monapp-nextjs --lines 20

Les logs PM2 sont très utiles pour diagnostiquer une erreur de variable d’environnement, un problème de port, une dépendance manquante ou une erreur côté serveur. À ce stade, l’application écoute normalement sur le port 3000, mais elle n’est pas encore exposée publiquement en HTTPS. Cette étape sera gérée ensuite avec Nginx.

3. Démarrage automatique au reboot du VPS

Par défaut, PM2 peut lancer votre application en arrière-plan, mais il faut aussi lui indiquer de la relancer automatiquement après un redémarrage du VPS. C’est indispensable en production : si le serveur redémarre après une mise à jour système, une intervention technique ou une coupure, votre application doit revenir en ligne sans action manuelle.

Exécutez d’abord :

pm2 startup systemd

PM2 affiche alors une commande adaptée à votre système. Copiez-collez cette commande complète dans le terminal, puis exécutez :

pm2 save

La commande pm2 save enregistre la liste des processus actuellement gérés par PM2. Ainsi, au prochain redémarrage du serveur, PM2 saura qu’il doit relancer automatiquement votre application Next.js en production.

Après cette étape, votre application devient beaucoup plus robuste : elle peut être arrêtée, redémarrée ou relancée automatiquement sans dépendre d’une session SSH ouverte.

4. Commandes PM2 utiles

PM2 propose plusieurs commandes pratiques pour administrer une application Node.js en production. Elles permettent de redémarrer l’application après une mise à jour, de suivre les logs, de surveiller les ressources ou d’arrêter temporairement le service.

Voici les commandes les plus utiles :

# Redémarrer l'application
pm2 restart monapp-nextjs

# Recharger l'application sans coupure si possible
pm2 reload monapp-nextjs

# Arrêter l'application
pm2 stop monapp-nextjs

# Supprimer l'application du registre PM2
pm2 delete monapp-nextjs

# Afficher les logs
pm2 logs monapp-nextjs

# Ouvrir le tableau de supervision temps réel
pm2 monit

La commande pm2 monit affiche un tableau de bord en temps réel avec la consommation CPU, la mémoire utilisée, les logs et l’état des processus. Elle complète très bien la supervision disponible dans le LWS Panel KVM, qui permet de suivre les ressources globales du VPS.

En pratique, après chaque nouvelle version de votre application, vous utiliserez surtout pm2 reload monapp-nextjs ou pm2 restart monapp-nextjs. Le rechargement est souvent préférable, car il limite les interruptions de service lorsque la configuration de l’application le permet.

Besoin d’un serveur VPS KVM performant et flexible ?

Découvrez nos offres VPS KVM haut de gamme : des ressources garanties et un contrôle total pour vos projets. Profitez d’un hébergement 100 % SSD, d’un accès root complet, le tout dans un datacenter en France. Démarrez dès maintenant à partir de 4,99 €/mois !

Je choisis mon VPS KVM

Configurer Nginx comme reverse proxy

Votre application Next.js tourne maintenant sur le serveur grâce à PM2, mais elle écoute uniquement sur un port interne, généralement 3000. Pour la rendre accessible depuis un navigateur avec un nom de domaine, il faut placer Nginx devant l’application.

Nginx va jouer le rôle de reverse proxy : il reçoit les requêtes HTTP ou HTTPS sur les ports 80 et 443, puis les transmet à Next.js sur 127.0.0.1:3000. Cette architecture est plus propre et plus sécurisée que d’exposer directement le serveur Node.js sur Internet.

Elle permet aussi de gérer le cache des fichiers statiques, les en-têtes HTTP, les certificats SSL, les redirections et plusieurs applications sur le même VPS grâce aux vhosts. Pour aller plus loin sur ce sujet, vous pouvez consulter le tutoriel dédié pour configurer Nginx comme reverse proxy devant votre application Next.js.

1. Installer Nginx

Pour exposer votre application Next.js sur le Web, vous devez installer Nginx sur le VPS. Nginx recevra les requêtes entrantes sur le port 80 pour HTTP, puis sur le port 443 une fois le certificat SSL activé. Il transmettra ensuite ces requêtes vers l’application Next.js exécutée par PM2 sur le port 3000.

Connectez-vous à votre VPS Linux en SSH, puis installez Nginx avec les commandes suivantes :

apt update
apt install nginx -y
systemctl enable nginx
systemctl start nginx

Vérifiez ensuite que le service est bien actif :

systemctl status nginx

Si Nginx fonctionne correctement, vous devez obtenir un statut active running. À ce stade, le serveur web est installé, mais il ne sait pas encore vers quelle application transmettre les requêtes. Il faut donc créer un vhost Nginx dédié à votre application Next.js.

2. Créer le vhost

Un vhost Nginx permet d’associer un nom de domaine à une configuration précise. Dans notre cas, il va indiquer à Nginx que les requêtes envoyées vers mondomaine.fr doivent être transmises à l’application Next.js qui tourne localement sur 127.0.0.1:3000.

Créez un nouveau fichier de configuration :

nano /etc/nginx/sites-available/monapp

Ajoutez ensuite la configuration suivante, en remplaçant mondomaine.fr par votre propre nom de domaine :

server {
    listen 80;
    server_name mondomaine.fr www.mondomaine.fr;

    # Servir les fichiers statiques Next.js directement depuis Nginx
    location /_next/static/ {
        alias /var/www/monapp/.next/static/;
        expires 1y;
        add_header Cache-Control "public, immutable";
    }

    # Servir le dossier public si nécessaire
    location /public/ {
        alias /var/www/monapp/public/;
        expires 30d;
    }

    # Transmettre toutes les autres requêtes vers Next.js
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_read_timeout 60s;
    }
}

Cette configuration remplit plusieurs rôles. Les fichiers statiques générés par Next.js, comme les fichiers CSS, JavaScript et chunks de build, sont servis directement par Nginx depuis /_next/static/. C’est plus performant que de faire passer tous les fichiers par Node.js.

Le bloc location / transmet toutes les autres requêtes vers votre application Next.js. Les en-têtes X-Real-IP, X-Forwarded-For et X-Forwarded-Proto permettent à l’application de connaître l’adresse IP réelle du visiteur et le protocole utilisé.

Les directives Upgrade et Connection "upgrade" sont également importantes. Elles assurent la compatibilité avec certains usages comme les WebSockets, les connexions persistantes ou certains comportements liés à l’App Router de Next.js. Il est préférable de les conserver, même si votre application ne semble pas en avoir besoin immédiatement.

Activez ensuite le vhost en créant un lien symbolique :

ln -s /etc/nginx/sites-available/monapp /etc/nginx/sites-enabled/

Testez la configuration Nginx :

nginx -t

Si le test retourne une syntaxe valide, rechargez Nginx :

systemctl reload nginx

Votre application Next.js sur VPS est maintenant accessible en HTTP depuis votre nom de domaine, à condition que l’enregistrement DNS de type A pointe bien vers l’adresse IP du serveur.

Ajouter SSL avec Let’s Encrypt (Certbot)

Une application en production doit être accessible en HTTPS. Le protocole HTTPS chiffre les échanges entre le navigateur du visiteur et votre serveur. Il est indispensable pour sécuriser les formulaires, les espaces membres, les paiements, les cookies d’authentification et les données personnelles.

Pour activer HTTPS gratuitement, vous pouvez utiliser Let’s Encrypt avec Certbot. Certbot va générer un certificat SSL, modifier automatiquement la configuration Nginx et mettre en place le renouvellement automatique.

Installez Certbot et son module Nginx :

apt install certbot python3-certbot-nginx -y

Lancez ensuite la génération du certificat :

certbot --nginx -d mondomaine.fr -d www.mondomaine.fr

Remplacez mondomaine.fr par votre propre domaine. Certbot va vérifier que le domaine pointe bien vers votre VPS, générer le certificat SSL Let’s Encrypt, puis proposer de rediriger automatiquement le trafic HTTP vers HTTPS.

Une fois l’opération terminée, ouvrez votre navigateur et accédez à :

https://mondomaine.fr

Vous devez voir votre application Next.js chargée avec un cadenas valide dans la barre d’adresse.

Vérifiez enfin que le renouvellement automatique fonctionne correctement :

certbot renew --dry-run

Cette commande simule le renouvellement du certificat sans modifier votre configuration. Si aucun message d’erreur n’apparaît, votre certificat pourra être renouvelé automatiquement avant son expiration.

À ce stade, votre application est disponible en HTTPS, derrière Nginx, avec un processus applicatif géré par PM2. Vous disposez donc d’une base solide pour un déploiement Next.js en production sur VPS Linux.

Mettre à jour l’application : workflow de déploiement

Après le premier déploiement, vous devrez régulièrement mettre à jour votre application : correction de bug, ajout de fonctionnalité, mise à jour de dépendances ou modification du design. Il est donc important de définir un workflow de déploiement simple et fiable.

Avant chaque mise à jour importante, créez un nouveau snapshot depuis le LWS Panel KVM. Cette précaution vous permet de restaurer rapidement l’état précédent du VPS si le build échoue ou si une nouvelle version provoque une erreur en production.

Ensuite, placez-vous dans le dossier de votre application :

cd /var/www/monapp

Récupérez la dernière version du code :

git pull origin main

Installez les dépendances à partir du fichier package-lock.json :

npm ci

Relancez ensuite le build de production :

npm run build

Comme lors du premier déploiement, recopiez les fichiers statiques nécessaires au mode standalone :

cp -r public .next/standalone/
cp -r .next/static .next/standalone/.next/

Rechargez enfin l’application avec PM2 :

pm2 reload monapp-nextjs

La commande pm2 reload permet de relancer l’application plus proprement qu’un arrêt manuel suivi d’un redémarrage. Elle est particulièrement utile pour limiter l’interruption de service lors d’une mise à jour.

Pour simplifier ce processus, vous pouvez créer un script deploy.sh :

nano /var/www/monapp/deploy.sh

Ajoutez le contenu suivant :

#!/bin/bash
set -e

cd /var/www/monapp

git pull origin main
npm ci
npm run build

cp -r public .next/standalone/
cp -r .next/static .next/standalone/.next/

pm2 reload monapp-nextjs

echo "Déploiement terminé — $(date)"

Rendez ensuite le script exécutable :

chmod +x /var/www/monapp/deploy.sh

Vous pourrez alors lancer vos prochains déploiements avec une seule commande :

./deploy.sh

Ce script ne remplace pas une vraie chaîne CI/CD, mais il offre une base pratique pour gérer un déploiement Next.js sur VPS de manière répétable. Pour un projet critique, pensez à tester le build sur un environnement de préproduction avant de l’appliquer au serveur principal.

Superviser l’application depuis le LWS Panel KVM

Une fois votre application Next.js en production déployée, la supervision devient essentielle. Il ne suffit pas que le site soit accessible en HTTPS : vous devez aussi vérifier que le VPS Linux dispose de suffisamment de ressources pour absorber le trafic, exécuter les builds et maintenir le processus Node.js stable.

Gestion de ressources VPS KVM

Depuis le LWS Panel KVM, vous pouvez suivre l’utilisation du CPU, de la RAM, du disque et du trafic réseau. Ces informations permettent d’identifier rapidement un serveur sous-dimensionné, un pic de charge anormal ou une consommation mémoire trop élevée après une mise à jour.

La supervision doit être utilisée en complément de PM2 :

Outil Rôle principal Ce qu’il permet de surveiller

PM2 monit

Supervision applicative

Processus Node.js, mémoire du process, logs, redémarrages

LWS Panel KVM

Supervision infrastructure

CPU global, RAM système, disque, trafic réseau

Un pic de CPU ou de RAM pendant npm run build est normal, car la compilation d’une application Next.js peut être gourmande. En revanche, si le serveur manque régulièrement de mémoire, il peut être nécessaire d’optimiser l’application, de réduire la charge ou de passer à une offre VPS KVM LWS supérieure.

Pour une analyse simple, utilisez donc PM2 pour surveiller votre application et le LWS Panel KVM pour vérifier l’état global de votre serveur.

Vérification du bon fonctionnement

Après le déploiement, prenez le temps de contrôler chaque élément important. Cette étape évite de découvrir plus tard une erreur de configuration, un certificat mal installé ou des fichiers statiques absents.

Commencez par vérifier que l’application est bien active avec PM2 :

pm2 status

Le statut de votre application doit être online. Consultez ensuite les logs pour détecter d’éventuelles erreurs serveur :

pm2 logs monapp-nextjs --lines 50

Ouvrez votre navigateur et accédez à votre domaine :

https://mondomaine.fr

L’application doit se charger en HTTPS, avec un cadenas valide dans la barre d’adresse. Vérifiez ensuite les éléments suivants :

  • les pages se chargent correctement ;
  • les fichiers CSS, images et polices sont bien affichés ;
  • les routes dynamiques fonctionnent ;
  • le rechargement d’une page ne provoque pas d’erreur ;
  • les appels API répondent correctement ;
  • les variables d’environnement sont bien prises en compte.

Testez également le renouvellement SSL :

certbot renew --dry-run

Enfin, simulez un redémarrage du processus PM2 :

pm2 restart monapp-nextjs

Si tout fonctionne après ce test, votre déploiement Next.js sur VPS est opérationnel.

Erreurs fréquentes et cas de blocage

Même avec une configuration correcte, certaines erreurs reviennent souvent lors d’un déploiement Next.js sur VPS Linux. La plupart sont liées aux fichiers statiques, aux ports, aux variables d’environnement ou à la configuration Nginx.

Erreur Cause probable Solution

Application error: a client-side exception au chargement

Les assets statiques n’ont pas été copiés dans .next/standalone/

Relancer cp -r public .next/standalone/ puis cp -r .next/static .next/standalone/.next/

502 Bad Gateway

L’application PM2 n’est pas démarrée ou Nginx pointe vers le mauvais port

Vérifier pm2 status, puis contrôler le port avec ss -tlnp

npm run build échoue

Mémoire insuffisante sur le VPS

Ajouter plus de RAM, optimiser le projet ou utiliser NODE_OPTIONS=--max-old-space-size=2048

Variables non chargées

Fichier .env.production absent ou mal placé

Vérifier le fichier .env.production, puis relancer npm run build et pm2 reload

Application hors ligne après reboot

pm2 save n’a pas été exécuté après pm2 startup

Relancer pm2 startup systemd, exécuter la commande affichée, puis pm2 save

Images Next.js cassées

Domaine externe non autorisé dans next.config.js

Ajouter le domaine dans images.remotePatterns, puis rebuilder

Port 3000 déjà utilisé

Un autre processus écoute déjà sur le port

Identifier le processus avec ss -tlnp, puis changer le port ou arrêter le service concerné

Certificat SSL impossible à générer

Le domaine ne pointe pas vers l’IP du VPS

Vérifier l’enregistrement DNS de type A et attendre la propagation

Page sans CSS

Copie de .next/static oubliée

Copier le dossier statique, puis redémarrer l’application

Redirection HTTPS incorrecte

Vhost Nginx mal modifié par Certbot ou conflit de configuration

Vérifier /etc/nginx/sites-available/monapp, tester avec nginx -t, puis recharger Nginx

Pour diagnostiquer rapidement une erreur, commencez toujours par trois commandes :

pm2 status
pm2 logs monapp-nextjs --lines 50
nginx -t

Ces commandes permettent de savoir si le problème vient de Next.js, de PM2 ou de Nginx. Dans la majorité des cas, elles suffisent à orienter la correction.

Besoin d’un serveur VPS KVM performant et flexible ?

Découvrez nos offres VPS KVM haut de gamme : des ressources garanties et un contrôle total pour vos projets. Profitez d’un hébergement 100 % SSD, d’un accès root complet, le tout dans un datacenter en France. Démarrez dès maintenant à partir de 4,99 €/mois !

Je choisis mon VPS KVM

Bonnes pratiques

Pour maintenir une application Next.js sur VPS stable dans le temps, adoptez quelques bonnes pratiques dès le premier déploiement. Elles réduisent les risques d’interruption, facilitent les mises à jour et améliorent la sécurité de votre environnement.

Ne lancez pas l’application manuellement avec une simple commande node server.js dans un terminal SSH. En production, utilisez toujours PM2 pour profiter du redémarrage automatique, de la gestion des logs et de la supervision du processus.

Utilisez également npm ci plutôt que npm install sur le serveur. Cette commande respecte précisément les versions définies dans package-lock.json, ce qui limite les différences entre votre environnement local et votre VPS Linux.

Pensez aussi à versionner le fichier ecosystem.config.js dans votre dépôt Git, sauf si vous y placez des informations sensibles. Cela permet de conserver une configuration cohérente entre vos environnements.

Surveillez régulièrement la mémoire consommée par votre application avec :

pm2 monit

Si le processus dépasse souvent la limite prévue, ajustez max_memory_restart, optimisez votre code ou envisagez une offre VPS plus adaptée.

Avant chaque mise à jour importante, créez un snapshot LWS. Pour les projets critiques, activez aussi les sauvegardes automatiques depuis le LWS Panel KVM. Vous pouvez également consulter le guide dédié pour déployer Next.js dans un container Docker sur VPS si vous souhaitez isoler davantage votre environnement applicatif.

FAQ

Cette FAQ répond aux questions fréquentes avant de déployer Next.js sur VPS. Elle peut ensuite être reprise dans un balisage FAQPage JSON-LD pour améliorer la compréhension de la page par les moteurs de recherche.

Quelle version de Node.js utiliser pour déployer Next.js 15 sur VPS ?

Pour déployer Next.js 15 sur un VPS, il faut utiliser une version de Node.js compatible avec votre version du framework. Lors de la sortie de Next.js 15, la version minimale requise de Node.js avait été relevée à 18.18.0. En production, il est toutefois préférable d’installer une version LTS plus récente avec nvm install --lts, afin de bénéficier d’un support stable et de mises à jour de sécurité.

Au moment de la vérification, la version Latest LTS affichée par Node.js est Node.js 24.16.0, tandis que Node.js 26 est la version Current. Pour un serveur de production, privilégiez donc la version LTS plutôt que la version Current.

Quelle est la différence entre next start et le mode standalone pour un VPS ?

La commande next start permet de lancer une application Next.js après un build classique. Elle fonctionne pour de nombreux projets, mais elle repose sur l’environnement complet du projet, avec ses dépendances installées dans node_modules.

Le mode standalone, activé avec output: 'standalone', génère un dossier autonome contenant le serveur server.js et uniquement les dépendances nécessaires à l’exécution. C’est une approche plus propre pour un déploiement Next.js sur VPS Linux, car elle facilite l’exécution avec PM2, réduit les fichiers nécessaires en production et rend le déploiement plus prévisible.

Dans ce tutoriel, le mode standalone est recommandé, car il s’intègre très bien avec Node.js, PM2, Nginx et un certificat SSL Let’s Encrypt.

PM2 ou Docker pour héberger Next.js sur VPS : lequel choisir ?

PM2 et Docker répondent à deux besoins différents. PM2 est idéal si vous voulez une méthode simple pour lancer une application Next.js en production, gérer les logs, redémarrer le processus automatiquement et surveiller la consommation mémoire. C’est l’approche utilisée dans ce guide.

Docker est plus adapté si vous souhaitez isoler complètement l’environnement applicatif, standardiser les déploiements entre plusieurs serveurs ou intégrer votre projet dans une architecture plus complexe avec plusieurs services. Il demande cependant une couche de configuration supplémentaire.

Pour un premier déploiement Next.js sur VPS, PM2 est souvent plus direct. Pour une infrastructure plus industrialisée, vous pouvez choisir de déployer Next.js dans un container Docker sur VPS.

Comment mettre à jour une application Next.js en production sans coupure de service ?

Pour mettre à jour une application Next.js en production avec le moins d’interruption possible, utilisez un workflow simple : récupérer le dernier code avec git pull, réinstaller les dépendances avec npm ci, relancer le build, recopier les fichiers statiques du mode standalone, puis recharger le processus avec PM2.

La commande recommandée est :

pm2 reload monapp-nextjs

Elle permet de recharger l’application plus proprement qu’un arrêt manuel. Avant une mise à jour importante, créez toujours un snapshot LWS depuis le LWS Panel KVM afin de pouvoir restaurer le serveur si le nouveau build provoque une erreur. Pour les changements critiques, testez d’abord le déploiement sur un environnement de préproduction.

Next.js sur VPS LWS : quelle taille de VPS KVM recommander ?

La taille du VPS KVM LWS dépend du poids de votre application, du trafic attendu et des traitements exécutés côté serveur. Pour une petite application Next.js, un portfolio ou un site vitrine dynamique, une configuration modérée peut suffire. En revanche, une application SaaS, un back-office, un site e-commerce ou un projet avec beaucoup de rendu serveur demandera davantage de RAM et de CPU.

Le point le plus sensible est souvent le build :

npm run build

Cette commande peut consommer beaucoup de mémoire, surtout sur un projet volumineux. Si le build échoue par manque de RAM, vous pouvez temporairement augmenter la mémoire disponible pour Node.js avec NODE_OPTIONS=--max-old-space-size=2048, optimiser le projet ou passer à une offre VPS supérieure.

En production, privilégiez toujours une version Active LTS ou Maintenance LTS de Node.js, conformément aux recommandations officielles du projet Node.js. À la date du 17 juin 2026, Node.js affiche notamment Node.js 24.16.0 comme version LTS récente, tandis que Node.js 26 est indiqué comme version Current.

Les variables d’environnement .env sont-elles sécurisées sur un VPS ?

Les fichiers .env peuvent être utilisés de manière sécurisée sur un VPS Linux, à condition de respecter quelques règles. Ils ne doivent jamais être envoyés dans un dépôt Git public ou privé partagé sans précaution. Le fichier .env.production doit être créé directement sur le serveur, avec des droits d’accès limités.

Vous pouvez vérifier ou ajuster les permissions avec :

chmod 600 /var/www/monapp/.env.production

Les secrets comme DATABASE_URL, NEXTAUTH_SECRET, les clés API privées ou les mots de passe SMTP ne doivent jamais être préfixés par NEXT_PUBLIC_. Dans Next.js, les variables commençant par NEXT_PUBLIC_ sont destinées au navigateur et peuvent donc être exposées côté client. Il faut les réserver aux valeurs réellement publiques, comme l’URL publique du site ou une clé front-end non sensible. Les exigences système de Next.js évoluant selon les versions, il est aussi recommandé de vérifier la documentation officielle avant chaque montée de version majeure.

Conclusion

Déployer une application Next.js sur VPS Linux demande plus de configuration qu’une plateforme managée, mais cette approche offre un contrôle complet sur l’infrastructure. ✨Avec Node.js, le mode standalone, PM2, Nginx et Let’s Encrypt, vous disposez d’un environnement solide pour héberger une application en production sur votre propre serveur. Cette méthode vous permet de gérer vos logs, vos processus, vos certificats, vos mises à jour et vos ressources serveur avec précision. En complément, le LWS Panel KVM facilite la supervision du CPU, de la RAM, du disque et du trafic réseau.⚡ Pour héberger votre projet dans un environnement flexible et administrable, vous pouvez choisir un VPS KVM LWS pour héberger votre application Next.js.

Besoin d’un serveur VPS KVM performant et flexible ?

Découvrez nos offres VPS KVM haut de gamme : des ressources garanties et un contrôle total pour vos projets. Profitez d’un hébergement 100 % SSD, d’un accès root complet, le tout dans un datacenter en France. Démarrez dès maintenant à partir de 4,99 €/mois !

Je choisis mon VPS KVM

Vous avez rencontré une difficulté lors du déploiement de votre application Next.js sur VPS ? Partagez votre question ou votre retour d’expérience en commentaire : cela pourra aider d’autres développeurs à résoudre les mêmes problèmes.

Avatar de l'auteur

Auteur de l'article

Joseph

Bonjour, je m'appelle Joseph. Je suis rédacteur spécialisé dans WordPress, PrestaShop et d'autres CMS. Fort d'une expertise approfondie en PHP et MySQL, je partage mes connaissances à travers des tutoriels simples et accessibles. Passionné par le développement et la transmission de savoir, j'aime expliquer et rendre les concepts techniques compréhensibles pour tous

Avis client de l'hébergeur LWS

Nos avis Trustpilot Nos avis Hostadvice Nos avis sur avis.lws.fr
Avis trustpilot 30/04/2022

LWS l'hébergeur par excellence !

LWS est pour moi l'hébergeur par excellence, que cela soit au niveau de l'hébergement qui est très performant, les mails qui sont d'une qualité professionnelle et de la gestion du domaine facile à comprendre.

PauseGreen

Avis hostadvice 27/04/2022

Super, au top !

Au top, prix attractif. Service très rapide et réactif. Je l'ai même personnellement recommandé à des proches. La vie est bien plus facile avec LWS

Masset Eliot

Avis avislws 26/04/2022

Support

Clair, efficace, rapide et à tarif abordable. J'ai maintenant un site superbe à mon image, puisque je le fais moi-même. L'équipe technique est au top, j'ai une réponse en 20 minutes, cela change d'autres hébergeurs pourtant plus connu.

Lady Whip

Avis hostadvice 24/04/2022

Bravo et merci

Bravo et merci aux équipes techniques pour leur réactivité et leur professionnalisme depuis plus de 10 ans chez eux et de nombreux sites !!! Merci

Olivier Delmas

Avis trustpilot 23/04/2022

Je suis très satisfait.

J'ai commandé un hébergement pour le site d'une association. Tout s'est passé très rapidement et sans la moindre embuche. La tarification est attractive et me parait très claire. Le panneau d'administration de l'hébergement est facile à utiliser et à comprendre. Je n'ai pas encore installé Wordpress car le contenu n'est pas prêt mais ce sera la prochaine étape et je suis très confiant. Merci !

Pierre-André Liné

Avis avislws 20/04/2022

Un service technique excellent

Je suis client chez LWS depuis 2011 avec une boutique OSCommerce qui tourne comme une horloge depuis cette date sur un hébergement mutualisé. La disponibilité de la boutique est très proche de 100%. Concernant les rares problèmes rencontrés en huit ans, j’ai eu à chaque fois un technicien compétent qui a résolu le problème très rapidement et efficacement. Je suis en train de migrer sur une plateforme Pretashop sur un VPS, avec l’offre LWS Debian 9 et Prestashop. Un technicien m’a grandement aidé pour finaliser l’installation de la boutique lors de la mise à jour vers la dernière version de Prestashop 1.7 qui posait problème. Je suis très satisfait de LWS, et ce sur la durée : réponses et réactions rapides et efficaces. Je recommande cet hébergeur et encore merci.

Alain

Avis trustpilot 16/04/2022

Une expérience jamais égalée !

Étant Développeur Web & Mobile Full-Stack depuis plus de 5 ans déjà, j'ai rarement eu un service client aussi rapide et efficace. Sans compter la qualité du service en ligne. Je recommande VIVEMENT LWS !

Chris KOUAKAM

Avis hostadvice 12/04/2022

Très bon hébergeur

J'ai un serveur VPS chez eux et je n'ai aucun problème, dès qu'il y a un problème le service technique est la pour vous aider et répond assez rapidement à votre demande. Je recommande vivement cet hébergeur.

Vanden Cruyce

Avis avislws 09/04/2022

Je suis ravie

Je suis ravie d'être avec LWS sur tous les plans, je remercie les Techniciens (Fabrice, Omar, Sandy-Mahitsison) depuis plus de 8 ans j'ai évolué avec LWS et toujours soutenue. Une véritable relation humaine même si les questions ou nos inquiétudes ne correspondent pas à leurs missions, ils sont là pour nous répondent et nous rassurent. Mon site c'est mon travail ma source de revenue donc il sont mes partenaires ! les travailleurs de l'ombre merci à eux ! Merci LWS

L'atelier-and-Co

Commentaires (0)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.