Aller au contenu

AS213941 · Peering-20 % sur tous les VPS avec le code NVH20 · Livraison en 60 secondes

VPS LinuxDès 2,49 €/moisVPS WindowsDès 3,49 €/moisServeur FiveMDès 0,99 €/moisServeur MinecraftDès 1,99 €/mois
VPS & Cloud

Gammes

VPS Linux NVMeAccès root, Debian, Ubuntu, Alma…VPS Windows RDPBureau à distance, licence incluseServeurs dédiésIntel Xeon Gold, ressources exclusivesVPS PterodactylPanel de jeux préinstallé

Réseau et hébergement

Anti-DDoSHébergement webHousingTransit IPVPN

Professionnels

VPS revendeurProgramme revendeur
Solutions

Bots et automatisation

VPS agents IAUn serveur pour vos assistants de code et agents autonomesVPS OllamaVotre IA privée sans GPU, données en FranceVPS bot TelegramPython ou Node.js, toujours joignableVPS bot DiscordMusique, modération, tickets : sans interruptionVPS n8nWorkflows sans limite d'exécutionsVPS VPNUn tunnel chiffré qui sort par la FranceVPS web scrapingCollecte de données planifiée, IP dédiée

Trading

VPS ForexVos robots gèrent les positions la nuitVPS MetaTrader 4Plusieurs terminaux MT4 sur une machineVPS MetaTrader 5Forex, indices et actions dans MT5VPS NinjaTraderFutures et stratégies NinjaScriptVPS prop firmChallenges et comptes financés, terminal toujours en ligneVPS trading AfriqueMetaTrader à Paris, depuis le Maghreb ou l'Afrique de l'OuestVPS RDPBureau à distance Windows, toujours alluméVPS bot de tradingBots crypto open source, clés API protégées

Bureau Windows

VPS Windows 10Pour vos logiciels qui exigent Windows 10VPS Windows 11Le poste Windows récent, accessible partoutVPS SEOCrawls de gros sites sans bloquer votre PCVPS streamingUn studio OBS qui diffuse depuis le datacenterVPS WordPressSites rapides sur disque NVMe
Marketplace

Intelligence artificielle

OllamaDes modèles de langage locaux, sans API externeOpen WebUIUne interface de discussion pour vos modèles OllamaAnythingLLMAssistant IA privé sur vos documents (PDF, sites, notes) : espaces de travail, recherche…LangflowÉditeur visuel Langflow pour construire agents, flux RAG et API d'IA, protégé par votre…FlowiseCréez visuellement vos agents et chatbots IA (LangChain, RAG, outils) avec Flowise, votre…QdrantBase de données vectorielle Qdrant pour vos projets RAG et de recherche sémantique, API…

Trading

MetaTrader 5Terminal MetaTrader 5 officiel (MetaQuotes) installé en mode portable, raccourci sur le…MetaTrader 4Terminal MetaTrader 4 officiel (MetaQuotes) installé en mode portable, raccourci sur le…Pack VPS Forex (MT4 + MT5)MetaTrader 4 et MetaTrader 5 installés ensemble, chacun dans son dossier portable, VPS…NinjaTrader 8Plateforme NinjaTrader 8 avec ses prérequis (.NET 4.8, WebView2) : installée à partir du…FreqtradeRobot de trading crypto open source avec son interface FreqUI, installé en mode…Interactive Brokers TWS / IB GatewayTrader Workstation ou IB Gateway (pour l'API et les robots) d'Interactive Brokers…

Bots et agents

Claude CodeL'agent de code d'Anthropic, dans votre terminalCodex CLIL'agent de code d'OpenAI en ligne de commandeBot TelegramHébergez votre bot Telegram (Python, Node.js ou Bun) : votre code depuis Git ou une…Bot DiscordHébergez votre bot Discord (discord.py, discord.js, Bun…) : votre code depuis Git ou une…OpenClawAssistant IA personnel open source OpenClaw, actif 24 h/24 : discutez avec lui sur…Hermes AgentAgent IA autonome open source de Nous Research, avec mémoire et compétences qui…

Déploiement et automatisation

DockerLe moteur de conteneurs et Docker Composen8nVos automatisations, sans limite d'exécutionsPortainerGérez vos conteneurs Docker depuis le navigateurCoolifyDéployez vos applications depuis Git, sur votre serveurUptime KumaSurveillez vos sites et serveurs, alertes comprises

Sites et bases de données

WordPressLe CMS le plus utilisé, sur une pile Nginx rapideApache + PHP + MySQLServeur web prêt à héberger vos sites : Apache2, PHP et ses extensions courantes, MariaDB…MySQL (MariaDB)Serveur de base de données MariaDB compatible MySQL, avec votre base et votre…PleskPanel d'hébergement Plesk Obsidian installé avec ses composants recommandés : sites…NextcloudVotre cloud de fichiers, agenda et contacts

Réseau et sécurité

WireGuardVotre VPN chiffré, préinstallé en option payanteVaultwardenUn gestionnaire de mots de passe auto-hébergé

Serveurs de jeu

FiveMServeur FiveM (FXServer + txAdmin), MariaDB et phpMyAdmin installés et configurés, sous…MinecraftServeur Minecraft Java Edition clé en main : Paper, Purpur, Fabric, NeoForge, Forge ou…RustServeur Rust (Facepunch) avec LinuxGSM : mises à jour automatiques, redémarrage après…Counter-Strike 2Serveur Counter-Strike 2 dédié avec LinuxGSM (environ 60 Go à télécharger), jeton GSLT…PalworldServeur Palworld dédié avec LinuxGSM : nom, mot de passe, nombre de joueurs et mot de…ValheimServeur Valheim dédié avec LinuxGSM, protégé par mot de passe (exigé par le jeu)…
Gaming

Serveurs de jeux

Serveur FiveMtxAdmin, ESX, QBCoreServeur MinecraftJava, Bedrock, modpacksServeur RustOxide, Carbon, wipesServeur Nova-LifeRP Nova-Life: Amboise

Protection et outils

Anti-DDoS FiveMOutils gratuits
Ressources

Apprendre

DocumentationBlog

Assistance

ContactEngagement SLA
Voir les offres Espace client Peering · AS213941

Installation

Héberger une application Node.js sur un VPS avec PM2 et Nginx

Par Équipe NVHCloud 2026-09-18 Lecture : 4 min

API, site Next.js ou Express, bot Discord : une application Node.js ne se lance pas avec un simple node index.js sur un serveur. Il faut qu'elle redémarre après un plantage, qu'elle se relance au démarrage du VPS, que ses journaux soient conservés, et qu'elle soit publiée en HTTPS. PM2 gère les trois premiers points, Nginx le dernier.

1. Installer Node.js

La version de Node.js fournie par Ubuntu et Debian est souvent ancienne. Installez la version LTS (support long terme) actuelle depuis le dépôt NodeSource, puis vérifiez :

curl -fsSL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh
bash nodesource_setup.sh
apt install -y nodejs
node -v && npm -v

Utilisez toujours une version LTS en production : les versions intermédiaires ne sont maintenues que quelques mois.

2. Déployer le code

Faites tourner l'application sous un utilisateur dédié, jamais en root. Récupérez le code, idéalement depuis un dépôt Git, puis installez les dépendances :

adduser --disabled-password --gecos "" app
su - app
git clone https://github.com/votre-compte/votre-projet.git monapp
cd monapp
npm ci --omit=dev

npm ci installe exactement les versions du fichier package-lock.json, ce qui garantit que le serveur utilise les mêmes dépendances que votre poste. Si le projet doit être compilé, comme une application Next.js ou TypeScript, installez toutes les dépendances puis lancez npm run build.

Placez les secrets, comme le jeton d'un bot ou les accès à la base, dans un fichier .env hors du dépôt Git, lisible par ce seul utilisateur : chmod 600 .env.

3. Lancer avec PM2

Installez PM2 globalement, en root, puis lancez l'application avec l'utilisateur app :

npm install -g pm2
su - app
cd monapp
pm2 start index.js --name monapp
pm2 status

Si l'application plante, PM2 la relance immédiatement. Pour un projet qui se lance avec un script npm, utilisez pm2 start npm --name monapp -- start.

4. Redémarrage automatique au démarrage du VPS

Toujours avec l'utilisateur app, demandez à PM2 la commande qui l'enregistre comme service système :

pm2 startup systemd

PM2 affiche une commande commençant par sudo env PATH=... : copiez-la et exécutez-la en root. Puis, de nouveau en tant que app, enregistrez la liste des applications à relancer :

pm2 save

Redémarrez le VPS une fois pour vérifier que l'application revient seule. Pensez à relancer pm2 save après chaque ajout ou suppression d'application.

5. Un fichier de configuration pour tout décrire

Plutôt que de longues lignes de commande, décrivez vos applications dans ecosystem.config.js, à la racine du projet :

module.exports = {
  apps: [{
    name: "monapp",
    script: "index.js",
    instances: 1,
    max_memory_restart: "400M",
    env: { NODE_ENV: "production", PORT: 3000 }
  }]
};
pm2 start ecosystem.config.js
pm2 save

max_memory_restart relance l'application si elle dépasse la mémoire indiquée, un garde-fou utile contre les fuites de mémoire. Pour une API sans état, instances: "max" et exec_mode: "cluster" lancent une copie par cœur de processeur. Ne faites pas cela pour un bot Discord : chaque copie se connecterait séparément et répondrait en double.

6. Journaux

pm2 logs monapp --lines 100   # journaux en direct
pm2 monit                     # processeur et mémoire en direct

Par défaut, PM2 conserve les journaux sans limite. Installez son module de rotation pour éviter qu'ils ne remplissent le disque :

pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 20M
pm2 set pm2-logrotate:retain 7

7. Publier l'application avec Nginx et HTTPS

Un bot Discord n'a pas besoin de cette étape : il se connecte lui-même à Discord. Pour une API ou un site, faites écouter l'application sur l'adresse locale uniquement, par exemple 127.0.0.1:3000, et placez Nginx devant. Créez /etc/nginx/sites-available/api.monsite.fr :

server {
    listen 80;
    server_name api.monsite.fr;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        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_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
ln -s /etc/nginx/sites-available/api.monsite.fr /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d api.monsite.fr --redirect

Avec Express, ajoutez app.set("trust proxy", 1) pour que l'application voie l'adresse réelle des visiteurs et non celle de Nginx. Détails du certificat dans Nginx et HTTPS.

8. Mettre à jour l'application

su - app
cd monapp
git pull
npm ci --omit=dev
pm2 reload monapp

pm2 reload redémarre les instances une par une en mode cluster, sans coupure. En mode simple, il équivaut à un redémarrage rapide. Pour des déploiements plus sûrs, conteneurisez l'application : voir Docker et Docker Compose.

Questions fréquentes

Comment héberger un bot Discord 24h/24 ?

Sur un VPS, lancez-le avec PM2 comme dans ce guide, puis exécutez pm2 startup et pm2 save : le bot redémarre automatiquement après un plantage ou un redémarrage du serveur. Un bot n'a pas besoin de Nginx ni de port ouvert, puisqu'il se connecte lui-même à Discord.

PM2 ou systemd ?

Les deux fonctionnent. PM2 est plus pratique pour les projets Node.js : journaux, surveillance, mode cluster et rechargement sans coupure en une commande. systemd suffit pour une application unique et évite une dépendance supplémentaire.

Quelle version de Node.js utiliser en production ?

Toujours une version LTS, dont le numéro est pair : elle reçoit des correctifs de sécurité pendant environ trois ans. Évitez les versions impaires, maintenues seulement quelques mois.

Combien de mémoire faut-il pour une application Node.js ?

Un bot Discord simple ou une petite API consomme entre 50 et 200 Mo. Une application Next.js en production demande plutôt 300 Mo à 1 Go. Un VPS de 2 Go héberge confortablement plusieurs petits projets.

VPS WordPress

Vos sites sur NVMe, sans limite, Anti-DDoS inclus.