{"id":53234,"date":"2026-10-11T16:20:28","date_gmt":"2026-10-11T09:20:28","guid":{"rendered":"\/fr\/tutoriels\/?p=53234"},"modified":"2026-10-09T16:20:38","modified_gmt":"2026-10-09T09:20:38","slug":"comment-deployer-application-node-js","status":"publish","type":"post","link":"\/fr\/tutoriels\/comment-deployer-application-node-js\/","title":{"rendered":"Comment d\u00e9ployer une application Node.js"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Pour d&eacute;ployer une application Node.js, vous pouvez suivre une proc&eacute;dure g&eacute;n&eacute;rale adapt&eacute;e &agrave; la plupart des environnements d&rsquo;h&eacute;bergement ou choisir une m&eacute;thode sp&eacute;cifique, selon que vous utilisez un h&eacute;bergement d&rsquo;applications web ou un serveur priv&eacute; virtuel (VPS).<\/p><p class=\"wp-block-paragraph\">D&eacute;ployer une application Node.js consiste &agrave; la transf&eacute;rer de votre ordinateur de d&eacute;veloppement vers un serveur de production afin de la rendre accessible aux utilisateurs sur Internet.<\/p><p class=\"wp-block-paragraph\">La qualit&eacute; du d&eacute;ploiement influe directement sur les performances de votre application Node.js lorsqu&rsquo;elle est soumise &agrave; un trafic r&eacute;el. Un serveur mal configur&eacute; peut entra&icirc;ner des temps de r&eacute;ponse &eacute;lev&eacute;s, des interruptions de service impr&eacute;vues ou des failles de s&eacute;curit&eacute; susceptibles d&rsquo;exposer des donn&eacute;es sensibles.<\/p><p class=\"wp-block-paragraph\">Configurer correctement l&rsquo;environnement de production de votre application Node.js d&egrave;s le d&eacute;part permet d&rsquo;&eacute;viter ces probl&egrave;mes et de maintenir sa stabilit&eacute; &agrave; mesure que le trafic augmente.<\/p><p class=\"wp-block-paragraph\">Le d&eacute;ploiement d&rsquo;une application Node.js comprend g&eacute;n&eacute;ralement cinq &eacute;tapes : la pr&eacute;paration, le choix de l&rsquo;h&eacute;bergement, la configuration de l&rsquo;environnement, le d&eacute;ploiement et la surveillance.<\/p><p class=\"wp-block-paragraph\">Voici en quoi consiste chacune de ces &eacute;tapes :<\/p><ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Pr&eacute;parez l&rsquo;application pour la production.<\/strong> D&eacute;finissez les d&eacute;pendances dans <strong>package.json<\/strong>, configurez les variables d&rsquo;environnement et ajoutez un script de d&eacute;marrage.<\/li>\n\n\n\n<li><strong>Cr&eacute;ez un commit et envoyez le code vers un d&eacute;p&ocirc;t Git.<\/strong> T&eacute;l&eacute;versez les fichiers dans le d&eacute;p&ocirc;t depuis l&rsquo;interface du navigateur ou ex&eacute;cutez les commandes Git depuis le terminal de votre ordinateur.<\/li>\n\n\n\n<li><strong>Installez Node.js et un gestionnaire de processus.<\/strong> Installez Node.js sur le serveur, configurez les variables d&rsquo;environnement et utilisez PM2 pour maintenir l&rsquo;application en fonctionnement apr&egrave;s un plantage ou un red&eacute;marrage du serveur.<\/li>\n\n\n\n<li><strong>Faites transiter le trafic par un proxy inverse.<\/strong> Configurez NGINX pour transmettre les requ&ecirc;tes au processus Node.js sur son port interne et s&eacute;curisez les connexions avec un certificat SSL.<\/li>\n\n\n\n<li><strong>V&eacute;rifiez et surveillez le d&eacute;ploiement.<\/strong> Testez l&rsquo;application dans un navigateur, consultez les journaux PM2 et surveillez les indicateurs de performance pour d&eacute;tecter rapidement les probl&egrave;mes.<\/li>\n<\/ol><h2 class=\"wp-block-heading h-t-title-2\" id=\"h-comment-deployer-une-application-node-js\"><strong>Comment d&eacute;ployer une application Node.js<\/strong><\/h2><p class=\"wp-block-paragraph\">Le d&eacute;ploiement d&rsquo;une application <a href=\"\/fr\/tutoriels\/quest-ce-que-node-js\/\">Node.js<\/a> repose sur une proc&eacute;dure g&eacute;n&eacute;rale, quel que soit l&rsquo;h&eacute;bergeur choisi.<\/p><p class=\"wp-block-paragraph\">Cette proc&eacute;dure consiste &agrave; pr&eacute;parer l&rsquo;application pour la production, &agrave; envoyer le code vers un d&eacute;p&ocirc;t Git, &agrave; configurer le serveur avec un gestionnaire de processus, &agrave; mettre en place un proxy inverse avec HTTPS et &agrave; tester l&rsquo;application une fois en ligne.<\/p><h3 class=\"wp-block-heading h-t-title-3\"><strong>1. Pr&eacute;parez l&rsquo;application Node.js pour le d&eacute;ploiement<\/strong><\/h3><p class=\"wp-block-paragraph\">Pour pr&eacute;parer une application Node.js au d&eacute;ploiement, assurez-vous que le projet contient tous les &eacute;l&eacute;ments n&eacute;cessaires &agrave; l&rsquo;installation des d&eacute;pendances et au d&eacute;marrage automatique de l&rsquo;application sur un serveur de production.<\/p><p class=\"wp-block-paragraph\">Trois fichiers constituent la base d&rsquo;un projet Node.js pr&ecirc;t pour le d&eacute;ploiement : <strong>app.js<\/strong> (le fichier principal de l&rsquo;application), <strong>package.json<\/strong> (les m&eacute;tadonn&eacute;es du projet, les d&eacute;pendances et les scripts) et <strong>.gitignore<\/strong> (les fichiers exclus du contr&ocirc;le de version).<\/p><p class=\"wp-block-paragraph\">Tous les packages import&eacute;s par votre application doivent figurer dans le champ <strong>dependencies<\/strong> du fichier <strong>package.json<\/strong>. Ce fichier indique &agrave; <strong>npm<\/strong> les packages &agrave; t&eacute;l&eacute;charger sur le serveur lors de l&rsquo;installation.<\/p><p class=\"wp-block-paragraph\">Si un package requis n&rsquo;y figure pas, l&rsquo;application plantera en production, m&ecirc;me si elle fonctionnait en local gr&acirc;ce &agrave; la pr&eacute;sence de ce package dans <strong>node_modules<\/strong>. Voici un exemple :<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n  \"name\": \"node-deploy-test\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Sample Node.js app for deployment tutorial\",\n  \"main\": \"app.js\",\n  \"scripts\": {\n    \"start\": \"node app.js\"\n  },\n  \"dependencies\": {\n    \"express\": \"^4.21.0\"\n  }\n}<\/pre><p class=\"wp-block-paragraph\">La section des scripts d&eacute;finit la mani&egrave;re dont les plateformes d&rsquo;h&eacute;bergement Node.js et les gestionnaires de processus d&eacute;marrent l&rsquo;application. L&rsquo;entr&eacute;e <strong>&ldquo;start&rdquo;: &ldquo;node app.js&rdquo;<\/strong> indique au serveur d&rsquo;ex&eacute;cuter <strong>app.js<\/strong> comme point d&rsquo;entr&eacute;e.<\/p><p class=\"wp-block-paragraph\">Les variables d&rsquo;environnement Node.js servent &agrave; stocker les param&egrave;tres de configuration qui diff&egrave;rent selon l&rsquo;environnement, notamment entre le d&eacute;veloppement et la production. Utilisez-les pour d&eacute;finir les num&eacute;ros de port, les identifiants de connexion aux bases de donn&eacute;es et les cl&eacute;s API, plut&ocirc;t que d&rsquo;inscrire ces valeurs directement dans les fichiers source.<\/p><p class=\"wp-block-paragraph\">Dans le code de l&rsquo;application, acc&eacute;dez &agrave; ces valeurs &agrave; l&rsquo;aide de <strong>process.env<\/strong> :<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const PORT = process.env.PORT || 3000;<\/pre><p class=\"wp-block-paragraph\">Cette ligne r&eacute;cup&egrave;re la valeur de la variable <strong>PORT<\/strong> si elle existe. Dans le cas contraire, elle utilise la valeur par d&eacute;faut <strong>3000<\/strong>. Le m&ecirc;me principe s&rsquo;applique &agrave; <strong>NODE_ENV<\/strong>, que les plateformes d&rsquo;h&eacute;bergement d&eacute;finissent g&eacute;n&eacute;ralement automatiquement sur production.<\/p><p class=\"wp-block-paragraph\">Le stockage des param&egrave;tres de configuration dans des variables d&rsquo;environnement &eacute;vite que des donn&eacute;es sensibles ne se retrouvent dans votre d&eacute;p&ocirc;t. Vous pouvez &eacute;galement modifier ces param&egrave;tres pour chaque environnement sans toucher au code.<\/p><h3 class=\"wp-block-heading h-t-title-3\"><strong>2. Envoyez le code de l&rsquo;application vers un d&eacute;p&ocirc;t Git<\/strong><\/h3><p class=\"wp-block-paragraph\">Le contr&ocirc;le de version est essentiel au d&eacute;ploiement d&rsquo;une application Node.js, car il permet de conserver un historique fiable et tra&ccedil;able de chaque modification du code source.<\/p><p class=\"wp-block-paragraph\">Si un d&eacute;ploiement introduit un bug, vous pouvez revenir au dernier commit fonctionnel en quelques secondes, plut&ocirc;t que de chercher l&rsquo;origine du probl&egrave;me &agrave; l&rsquo;aveugle.<\/p><p class=\"wp-block-paragraph\">Git est le syst&egrave;me de contr&ocirc;le de version de r&eacute;f&eacute;rence. GitHub et GitLab comptent parmi les plateformes les plus courantes pour h&eacute;berger des d&eacute;p&ocirc;ts Git. Voici comment proc&eacute;der avec GitHub :<\/p><ol start=\"1\" class=\"wp-block-list\">\n<li>Connectez-vous &agrave; GitHub ou cr&eacute;ez un compte sur <strong>github.com<\/strong> si vous n&rsquo;en avez pas.<\/li>\n\n\n\n<li>Dans le tableau de bord, cliquez sur <strong>New<\/strong>, puis saisissez un nom de d&eacute;p&ocirc;t, par exemple <strong>node-deploy-test<\/strong>.<\/li>\n\n\n\n<li>D&eacute;finissez la visibilit&eacute; sur <strong>Public<\/strong> si vous pr&eacute;voyez de connecter le d&eacute;p&ocirc;t &agrave; une plateforme d&rsquo;h&eacute;bergement par la suite.<\/li>\n\n\n\n<li>Laissez les autres options d&eacute;coch&eacute;es (sans <strong>README<\/strong>, sans <strong>.gitignore<\/strong> et sans licence), puis cliquez sur <strong>Create repository<\/strong>.<\/li>\n<\/ol><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f7f3420\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f7f3420\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1010\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/github-creer-un-nouveau-depot.png\/w=1024,h=1024,fit=scale-down\" alt=\"Le menu de cr&eacute;ation d&rsquo;un d&eacute;p&ocirc;t sur GitHub\" class=\"wp-image-53213\" title=\"github-create-a-new-repository\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/github-creer-un-nouveau-depot.png\/w=1010,fit=scale-down 1010w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/github-creer-un-nouveau-depot.png\/w=296,fit=scale-down 296w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/github-creer-un-nouveau-depot.png\/w=148,fit=scale-down 148w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/github-creer-un-nouveau-depot.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1010px) 100vw, 1010px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Le moyen le plus simple d&rsquo;ajouter des fichiers consiste &agrave; passer par le navigateur :<\/p><ol start=\"1\" class=\"wp-block-list\">\n<li>Sur la page de configuration du d&eacute;p&ocirc;t, cliquez sur <strong>uploading an existing file<\/strong>.<\/li>\n\n\n\n<li>Faites glisser <strong>app.js<\/strong> et <strong>package.json<\/strong> dans la zone de t&eacute;l&eacute;versement.<\/li>\n\n\n\n<li>Cliquez sur <strong>Commit changes<\/strong>.<\/li>\n<\/ol><p class=\"wp-block-paragraph\">La plupart des syst&egrave;mes d&rsquo;exploitation masquent les fichiers dont le nom commence par un point, comme <strong>.gitignore<\/strong>. Vous ne pourrez donc pas les t&eacute;l&eacute;verser par glisser-d&eacute;poser. Cr&eacute;ez plut&ocirc;t le fichier directement sur GitHub :<\/p><ol start=\"1\" class=\"wp-block-list\">\n<li>Sur la page principale du d&eacute;p&ocirc;t, cliquez sur <strong>Add file<\/strong> &rarr; <strong>Create new file<\/strong>.<\/li>\n\n\n\n<li>Saisissez <strong>.gitignore<\/strong> comme nom de fichier et ajoutez la ligne suivante :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">node_modules\/<\/pre><ol start=\"3\" class=\"wp-block-list\">\n<li>Cliquez sur <strong>Commit changes<\/strong>.<\/li>\n<\/ol><p class=\"wp-block-paragraph\">Si Git est install&eacute; sur votre ordinateur, vous pouvez &eacute;galement envoyer tous vos fichiers, y compris <strong>.gitignore<\/strong>, &agrave; l&rsquo;aide des <a href=\"\/fr\/tutoriels\/commandes-git\/\">commandes Git en ligne de commande<\/a> :<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cd path\/to\/node-deploy-test\ngit init\ngit add .\ngit commit -m \"Initial commit\"\ngit remote add origin https:\/\/github.com\/your-username\/node-deploy-test.git\ngit push -u origin main<\/pre><p class=\"wp-block-paragraph\">Remplacez <strong>your-username<\/strong> par votre v&eacute;ritable nom d&rsquo;utilisateur GitHub.<\/p><p class=\"wp-block-paragraph\">L&rsquo;utilisation de Git en ligne de commande est plus adapt&eacute;e au d&eacute;veloppement continu. La commande <strong>git push<\/strong> n&rsquo;envoie que les modifications apport&eacute;es, tandis que l&rsquo;interface du navigateur vous oblige &agrave; t&eacute;l&eacute;verser de nouveau les fichiers.<\/p><h3 class=\"wp-block-heading h-t-title-3\"><strong>3. Configurez le serveur et lancez l&rsquo;application<\/strong><\/h3><p class=\"wp-block-paragraph\">La configuration du serveur commence par l&rsquo;installation de Node.js. Vous pouvez utiliser Node Version Manager (NVM) ou un gestionnaire de paquets syst&egrave;me.<\/p><p class=\"wp-block-paragraph\">NVM est pr&eacute;f&eacute;rable, car il permet d&rsquo;installer plusieurs versions de Node.js et de passer de l&rsquo;une &agrave; l&rsquo;autre sans disposer des droits root.<\/p><p class=\"wp-block-paragraph\">Les processus Node.js s&rsquo;arr&ecirc;tent lorsque vous fermez la session du terminal ou que le serveur red&eacute;marre. En cas de plantage, l&rsquo;application peut donc rester inaccessible jusqu&rsquo;&agrave; ce qu&rsquo;elle soit red&eacute;marr&eacute;e manuellement.<\/p><p class=\"wp-block-paragraph\">PM2, un gestionnaire de processus Node.js con&ccedil;u pour la production, r&eacute;sout ce probl&egrave;me. Il ex&eacute;cute l&rsquo;application en arri&egrave;re-plan sous forme de daemon et la red&eacute;marre automatiquement apr&egrave;s un plantage ou un red&eacute;marrage du serveur.<\/p><p class=\"wp-block-paragraph\">&Agrave; ce stade, l&rsquo;application fonctionne sur un port interne, par exemple <strong>3000<\/strong>, mais les utilisateurs ne peuvent pas encore y acc&eacute;der par les ports web standard <strong>80<\/strong> ou <strong>443<\/strong>. Pour la rendre accessible depuis Internet, vous devez configurer un proxy inverse.<\/p><h3 class=\"wp-block-heading h-t-title-3\"><strong>4. Configurez un proxy inverse et activez HTTPS<\/strong><\/h3><p class=\"wp-block-paragraph\">Un proxy inverse comme NGINX achemine le trafic public vers l&rsquo;application Node.js qui s&rsquo;ex&eacute;cute sur un port interne.<\/p><p class=\"wp-block-paragraph\">NGINX &eacute;coute sur les ports <strong>80<\/strong> (HTTP) et <strong>443<\/strong> (HTTPS), re&ccedil;oit les requ&ecirc;tes entrantes et les transmet &agrave; <strong>localhost:3000<\/strong> ou au port utilis&eacute; par votre application. Les utilisateurs n&rsquo;interagissent donc jamais directement avec le processus Node.js.<\/p><p class=\"wp-block-paragraph\">Cette configuration assure &eacute;galement la terminaison des connexions SSL\/TLS, ce qui permet de g&eacute;rer le chiffrement ind&eacute;pendamment du code de l&rsquo;application.<\/p><p class=\"wp-block-paragraph\">Une fois le proxy inverse configur&eacute;, activez HTTPS &agrave; l&rsquo;aide de Certbot et d&rsquo;un certificat SSL Let&rsquo;s Encrypt.<\/p><h3 class=\"wp-block-heading h-t-title-3\"><strong>5. Testez et surveillez l&rsquo;application d&eacute;ploy&eacute;e<\/strong><\/h3><p class=\"wp-block-paragraph\">Apr&egrave;s le d&eacute;ploiement, testez l&rsquo;application Node.js en ouvrant son URL racine dans un navigateur, par exemple <strong>http:\/\/domain.tld<\/strong>. La page principale doit s&rsquo;afficher avec le contenu attendu.<\/p><p class=\"wp-block-paragraph\">Si vous avez ajout&eacute; une route de v&eacute;rification de l&rsquo;&eacute;tat de l&rsquo;application, ajoutez <strong>\/health<\/strong> &agrave; son URL et v&eacute;rifiez qu&rsquo;elle renvoie une r&eacute;ponse JSON comme celle-ci :<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\"status\":\"healthy\",\"uptime\":...}<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f801d95\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f801d95\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"181\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/route-de-verification-de-letat-de-lapplication-node-js.png\/w=1024,h=1024,fit=scale-down\" alt=\"La route de v&eacute;rification de l&rsquo;&eacute;tat d&rsquo;une application Node.js\" class=\"wp-image-53212\" title=\"node-js-app-health-check-route\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/route-de-verification-de-letat-de-lapplication-node-js.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/route-de-verification-de-letat-de-lapplication-node-js.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/route-de-verification-de-letat-de-lapplication-node-js.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/route-de-verification-de-letat-de-lapplication-node-js.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Consultez ensuite les journaux Node.js &agrave; l&rsquo;aide de votre gestionnaire de processus. Avec PM2, la commande <strong>pm2 logs<\/strong> affiche en temps r&eacute;el les messages de sortie et d&rsquo;erreur de votre application.<\/p><p class=\"wp-block-paragraph\">Pour obtenir une vue d&rsquo;ensemble, ex&eacute;cutez <strong>pm2 monit<\/strong> afin d&rsquo;ouvrir un tableau de bord interactif. Celui-ci regroupe l&rsquo;utilisation du processeur, la consommation de m&eacute;moire, la latence de la boucle d&rsquo;&eacute;v&eacute;nements et les journaux.<\/p><p class=\"wp-block-paragraph\">&Agrave; titre indicatif, une application Node.js en bon &eacute;tat de fonctionnement pr&eacute;sente g&eacute;n&eacute;ralement une latence de la boucle d&rsquo;&eacute;v&eacute;nements inf&eacute;rieure &agrave; 50 ms, une consommation de m&eacute;moire d&rsquo;environ 300 &agrave; 500 Mo pour une application Express standard et une utilisation du processeur inf&eacute;rieure &agrave; 70 % dans des conditions de trafic normales.<\/p><h2 class=\"wp-block-heading h-t-title-2\" id=\"h-comment-deployer-une-application-node-js-avec-un-hebergement-dapplications-web\"><strong>Comment d&eacute;ployer une application Node.js avec un h&eacute;bergement d&rsquo;applications web<\/strong><\/h2><p class=\"wp-block-paragraph\">Pour d&eacute;ployer une application Node.js avec un h&eacute;bergement d&rsquo;applications web, vous devez connecter un d&eacute;p&ocirc;t Git, d&eacute;finir les commandes de build et lancer le d&eacute;ploiement depuis un tableau de bord.<\/p><p class=\"wp-block-paragraph\">L&rsquo;h&eacute;bergement d&rsquo;applications web Node.js de Hostinger propose un environnement g&eacute;r&eacute; qui vous permet de d&eacute;ployer vos applications sans avoir &agrave; configurer vous-m&ecirc;me un serveur de A &agrave; Z.<\/p><p class=\"wp-block-paragraph\">Hostinger prend en charge l&rsquo;infrastructure sous-jacente, notamment la configuration du serveur, l&rsquo;installation de Node.js, la gestion des processus et les certificats SSL.<\/p><p class=\"wp-block-paragraph\">Le service permet &eacute;galement le red&eacute;ploiement automatique : chaque fois que vous envoyez des modifications vers GitHub ou GitLab, le syst&egrave;me relance le build et red&eacute;ploie automatiquement votre application.<\/p><p>\n\n\n        <div class=\"protip\">\n            <div class=\"protip__heading\">\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <path d=\"M1.49234 23.5024C1.23229 23.5024 0.972242 23.4024 0.782206 23.2123C0.562165 22.9923 0.452144 22.6822 0.502153 22.3722C0.562165 21.9221 1.14227 17.9113 3.00262 16.351C3.63274 15.8209 4.43289 15.5509 5.26305 15.5609C6.09321 15.5909 6.87335 15.9109 7.47347 16.4911C8.6937 17.6913 8.76371 19.6717 7.6435 20.9919C6.0832 22.8523 2.08245 23.4324 1.63237 23.4924C1.59236 23.4924 1.54235 23.4924 1.50234 23.4924L1.49234 23.5024ZM5.16303 17.5613C4.84297 17.5613 4.53291 17.6713 4.29287 17.8813C3.60274 18.4614 3.07264 19.9317 2.75258 21.242C4.06282 20.9219 5.5331 20.3918 6.11321 19.7017C6.55329 19.1716 6.54329 18.3814 6.0832 17.9213C5.85316 17.7013 5.5431 17.5713 5.20304 17.5613C5.19304 17.5613 5.17303 17.5613 5.16303 17.5613ZM11.7243 21.8821C11.4942 21.8821 11.2642 21.8021 11.0841 21.652C10.8541 21.462 10.7241 21.1819 10.7241 20.8819V15.9109L8.08358 13.2705H3.11264C2.81259 13.2705 2.53254 13.1404 2.3425 12.9104C2.15246 12.6803 2.07245 12.3803 2.12246 12.0902C2.19247 11.7102 2.84259 8.36953 4.70294 7.12929C6.33325 6.04909 8.96375 6.49918 10.244 6.80923C11.5442 4.96889 13.2546 3.4286 15.2349 2.33839C17.4553 1.11816 19.9858 0.518051 22.4963 0.498047C23.0464 0.498047 23.4865 0.948132 23.4865 1.49824C23.4865 5.0389 22.3763 9.97983 17.1753 13.7605C17.4853 15.0408 17.9354 17.6613 16.8552 19.2816C15.615 21.1419 12.2744 21.7921 11.8943 21.8621C11.8343 21.8721 11.7743 21.8821 11.7143 21.8821H11.7243ZM12.7245 16.181V19.6016C13.7146 19.2916 14.7948 18.7915 15.2049 18.1814C15.675 17.4812 15.605 16.091 15.385 14.9008C14.5248 15.3808 13.6346 15.8109 12.7245 16.181ZM9.66388 12.0302L11.9643 14.3307C13.1845 13.8306 14.3648 13.2204 15.485 12.5103C19.9358 9.51974 21.2361 5.60901 21.4561 2.53843C19.6157 2.67846 17.8254 3.20856 16.2051 4.09872C14.2847 5.14892 12.6544 6.68921 11.4942 8.54956C10.7841 9.65977 10.174 10.82 9.66388 12.0302ZM4.39289 11.2701H7.81353C8.1936 10.3599 8.63368 9.46974 9.11377 8.60957C7.92355 8.38953 6.51329 8.31952 5.81315 8.78961C5.19304 9.19968 4.70294 10.3099 4.39289 11.2701Z\" fill=\"#673DE6\"\/>\n                <\/svg>\n                <p class=\"protip__title\">\n                    Conseil de pro                <\/p>\n            <\/div>\n            <p class=\"protip__content\"><a href=\"\/fr\/connector\">Hostinger Connector<\/a> offre une solution plus rapide si vous d&eacute;veloppez dans un &eacute;diteur assist&eacute; par IA, comme VS Code ou Cursor, ou avec un agent tel que Claude Code. Cette extension gratuite connecte votre &eacute;diteur &agrave; votre compte Hostinger. Il vous suffit alors de demander &agrave; votre assistant de publier le projet pour qu&rsquo;il d&eacute;ploie votre application Node.js sur l&rsquo;h&eacute;bergement d&rsquo;applications web &agrave; votre place.<\/p>\n                    <\/div>\n        \n\n\n\n<\/p><h3 class=\"wp-block-heading h-t-title-3\"><strong>1. Cr&eacute;ez un environnement d&rsquo;h&eacute;bergement pour votre application web Node.js<\/strong><\/h3><p class=\"wp-block-paragraph\">Apr&egrave;s avoir souscrit un <a href=\"\/fr\/hebergement-applications-web\">plan d&rsquo;h&eacute;bergement Node.js<\/a>, connectez-vous au tableau de bord Hostinger avec votre compte pour cr&eacute;er une nouvelle application.<\/p><p class=\"wp-block-paragraph\">Acc&eacute;dez &agrave; <strong>Sites web<\/strong> &rarr; <strong>Ajouter un site web<\/strong> &rarr; <strong>Application web Node.js<\/strong>.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f803e9b\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f803e9b\" class=\"aligncenter size-full is-resized wp-lightbox-container\"><img decoding=\"async\" width=\"800\" height=\"480\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/ajouter-un-site-web-application-nodejs.png\/public\" alt=\"L&rsquo;option Application web Node.js dans le menu Sites web de hPanel\" class=\"wp-image-53333\" style=\"width:840px;height:auto\" title=\"hpanel-websites-node-js-web-app-highlighted\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/ajouter-un-site-web-application-nodejs.png\/w=800,fit=scale-down 800w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/ajouter-un-site-web-application-nodejs.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/ajouter-un-site-web-application-nodejs.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/ajouter-un-site-web-application-nodejs.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Si vous disposez d&rsquo;un plan <strong>Business<\/strong> ou sup&eacute;rieur sur un h&eacute;bergement web classique, vous pouvez suivre les m&ecirc;mes &eacute;tapes pour cr&eacute;er une application Node.js.<\/p><figure class=\"wp-block-image size-full\"><a aria-label=\"Fr\" href=\"https:\/\/www.hostinger.com\/fr\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2022\/12\/FR-Web-hosting_in-text-banner-1-1024x300-1.png\/public\" alt=\"\" class=\"wp-image-41467\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2022\/12\/FR-Web-hosting_in-text-banner-1-1024x300-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2022\/12\/FR-Web-hosting_in-text-banner-1-1024x300-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2022\/12\/FR-Web-hosting_in-text-banner-1-1024x300-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2022\/12\/FR-Web-hosting_in-text-banner-1-1024x300-1.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h3 class=\"wp-block-heading h-t-title-3\"><strong>2. Connectez le d&eacute;p&ocirc;t Git<\/strong><\/h3><p class=\"wp-block-paragraph\">La connexion d&rsquo;un d&eacute;p&ocirc;t Git permet de relier votre projet GitHub ou GitLab &agrave; l&rsquo;environnement d&rsquo;h&eacute;bergement de votre application web Node.js.<\/p><p class=\"wp-block-paragraph\">Une fois le d&eacute;p&ocirc;t connect&eacute;, la plateforme r&eacute;cup&egrave;re automatiquement la derni&egrave;re version du code &agrave; chaque nouvel envoi vers GitHub ou GitLab, installe les d&eacute;pendances et red&eacute;marre l&rsquo;application.<\/p><p class=\"wp-block-paragraph\">Pour connecter le d&eacute;p&ocirc;t :<\/p><ol start=\"1\" class=\"wp-block-list\">\n<li>Sur l&rsquo;&eacute;cran de configuration, s&eacute;lectionnez <strong>Importer un d&eacute;p&ocirc;t Git<\/strong>.<\/li>\n<\/ol><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f806d0f\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f806d0f\" class=\"aligncenter size-full is-resized wp-lightbox-container\"><img decoding=\"async\" width=\"799\" height=\"444\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/deployer-application-web.png\/public\" alt=\"L&rsquo;option d&rsquo;importation d&rsquo;un d&eacute;p&ocirc;t Git avec le bouton de connexion &agrave; GitHub s&eacute;lectionn&eacute; dans le tableau de bord Hostinger\" class=\"wp-image-53335\" style=\"width:840px;height:auto\" title=\"hpanel-deploy-your-node-js-web-app-connect-with-github\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/deployer-application-web.png\/w=799,fit=scale-down 799w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/deployer-application-web.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/deployer-application-web.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/deployer-application-web.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 799px) 100vw, 799px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><ol start=\"2\" class=\"wp-block-list\">\n<li>Choisissez GitHub ou GitLab comme source du d&eacute;p&ocirc;t et autorisez Hostinger &agrave; acc&eacute;der &agrave; votre compte.<\/li>\n\n\n\n<li>S&eacute;lectionnez le d&eacute;p&ocirc;t dans la liste.<\/li>\n<\/ol><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f808a49\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f808a49\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"800\" height=\"620\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/selection-depot-git.png\/public\" alt=\"La fen&ecirc;tre de s&eacute;lection du d&eacute;p&ocirc;t Git &agrave; importer dans hPanel\" class=\"wp-image-53338\" title=\"hpanel-select-git-repository-to-import\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/selection-depot-git.png\/w=800,fit=scale-down 800w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/selection-depot-git.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/selection-depot-git.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/selection-depot-git.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Vous pouvez &eacute;galement d&eacute;ployer une application &agrave; partir d&rsquo;un d&eacute;p&ocirc;t GitHub public qui ne vous appartient pas. Pour cela, collez son URL dans l&rsquo;&eacute;cran de configuration. Le syst&egrave;me v&eacute;rifie que le d&eacute;p&ocirc;t est public et accessible.<\/p><p class=\"wp-block-paragraph\">Saisissez ensuite un nom pour le nouveau d&eacute;p&ocirc;t et choisissez sa visibilit&eacute; : publique ou priv&eacute;e. Le syst&egrave;me clone le d&eacute;p&ocirc;t public dans votre compte GitHub afin que vous disposiez de votre propre copie, que vous pourrez modifier et red&eacute;ployer.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f80ad23\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f80ad23\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"799\" height=\"448\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/creation-application-web-nodejs.png\/public\" alt=\"La fen&ecirc;tre de cr&eacute;ation d&rsquo;une nouvelle application dans hPanel\" class=\"wp-image-53334\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/creation-application-web-nodejs.png\/w=799,fit=scale-down 799w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/creation-application-web-nodejs.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/creation-application-web-nodejs.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/creation-application-web-nodejs.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 799px) 100vw, 799px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Un plan d&rsquo;h&eacute;bergement ne peut &ecirc;tre connect&eacute; qu&rsquo;&agrave; un seul compte GitHub &agrave; la fois. Tous les sites web Node.js associ&eacute;s &agrave; ce plan partagent cette connexion.<\/p><p class=\"wp-block-paragraph\">Si les fichiers de votre projet ne se trouvent pas dans un d&eacute;p&ocirc;t Git, s&eacute;lectionnez plut&ocirc;t <strong>T&eacute;l&eacute;verser les fichiers de votre site web<\/strong>, puis t&eacute;l&eacute;versez une archive ZIP. Cette m&eacute;thode ne permet pas de red&eacute;ployer automatiquement l&rsquo;application lorsque vous modifiez le code.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f80cb4f\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f80cb4f\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"800\" height=\"326\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/importer-fichiers-application-nodejs.png\/public\" alt=\"L&rsquo;option de t&eacute;l&eacute;versement des fichiers de l&rsquo;application dans le menu de d&eacute;ploiement Node.js de hPanel\" class=\"wp-image-53337\" title=\"hpanel-upload-your-app-files\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/importer-fichiers-application-nodejs.png\/w=800,fit=scale-down 800w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/importer-fichiers-application-nodejs.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/importer-fichiers-application-nodejs.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/importer-fichiers-application-nodejs.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Vous pouvez aussi partir de l&rsquo;un des 50 templates Node.js pr&eacute;construits plut&ocirc;t que de cr&eacute;er votre application de A &agrave; Z. Ces templates sont adapt&eacute;s &agrave; diff&eacute;rents types de projets : blogs, sites d&rsquo;entreprise, sites e-commerce, portfolios et applications SaaS. Vous disposez ainsi d&rsquo;une application fonctionnelle que vous pouvez personnaliser et d&eacute;ployer.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f80e953\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f80e953\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"800\" height=\"416\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/galerie-de-modeles-github.png\/public\" alt=\"Les templates Node.js disponibles chez Hostinger\" class=\"wp-image-53336\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/galerie-de-modeles-github.png\/w=800,fit=scale-down 800w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/galerie-de-modeles-github.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/galerie-de-modeles-github.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/galerie-de-modeles-github.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><h3 class=\"wp-block-heading h-t-title-3\"><strong>3. Configurez les commandes de build et de d&eacute;marrage<\/strong><\/h3><p class=\"wp-block-paragraph\">Apr&egrave;s la s&eacute;lection du d&eacute;p&ocirc;t, le syst&egrave;me d&eacute;tecte automatiquement le framework utilis&eacute; et propose les param&egrave;tres de build correspondants.<\/p><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-content\/uploads\/sites\/46\/2026\/10\/configuration-importation-github.png\"><img decoding=\"async\" width=\"800\" height=\"570\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/configuration-importation-github.png\/public\" alt=\"La fen&ecirc;tre de configuration des variables d&rsquo;environnement dans le tableau de bord Hostinger, avec trois cl&eacute;s d&eacute;tect&eacute;es automatiquement et des champs de valeur vides\" class=\"wp-image-53340\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/configuration-importation-github.png\/w=800,fit=scale-down 800w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/configuration-importation-github.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/configuration-importation-github.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/configuration-importation-github.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Vous pouvez modifier ces param&egrave;tres si votre projet n&eacute;cessite d&rsquo;autres valeurs :<\/p><ul class=\"wp-block-list\">\n<li><strong>Framework pr&eacute;d&eacute;fini.<\/strong> Le framework d&eacute;tect&eacute; pour votre projet, par exemple Express.js. Modifiez ce param&egrave;tre si la d&eacute;tection automatique n&rsquo;a pas identifi&eacute; le bon framework.<\/li>\n\n\n\n<li><strong>Version de Node.js.<\/strong> La version de Node.js utilis&eacute;e pour ex&eacute;cuter votre application. Le syst&egrave;me la d&eacute;tecte &agrave; partir du champ engines de <strong>package.json<\/strong>, mais vous pouvez choisir une autre version manuellement.<\/li>\n\n\n\n<li><strong>Fichier d&rsquo;entr&eacute;e.<\/strong> Le fichier ex&eacute;cut&eacute; par le serveur pour d&eacute;marrer l&rsquo;application. Par d&eacute;faut, il s&rsquo;agit de <strong>app.js<\/strong>, selon la commande de d&eacute;marrage Node.js d&eacute;finie dans <strong>package.json<\/strong>.<\/li>\n\n\n\n<li><strong>Gestionnaire de paquets.<\/strong> L&rsquo;outil utilis&eacute; pour installer les d&eacute;pendances. Par d&eacute;faut, le syst&egrave;me utilise <strong>npm<\/strong>, mais vous pouvez s&eacute;lectionner <strong>Yarn<\/strong> ou <strong>pnpm<\/strong> si votre projet utilise un autre fichier de verrouillage.<\/li>\n\n\n\n<li><strong>Variables d&rsquo;environnement.<\/strong> Le syst&egrave;me analyse votre d&eacute;p&ocirc;t pour d&eacute;tecter les noms des variables n&eacute;cessaires &agrave; votre application, comme <strong>DATABASE_URL<\/strong>. Si certaines valeurs manquent, la mention <strong>Action requise<\/strong> appara&icirc;t sur la ligne correspondante. Cliquez sur <strong>Modifier<\/strong>, saisissez la valeur de production de chaque cl&eacute; d&eacute;tect&eacute;e, puis cliquez sur <strong>Terminer<\/strong>. Vous pouvez &eacute;galement ajouter manuellement des cl&eacute;s avec <strong>Ajouter d&rsquo;autres variables<\/strong> ou t&eacute;l&eacute;verser un fichier &agrave; l&rsquo;aide de <strong>Importer .env<\/strong>.<\/li>\n<\/ul><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f81272f\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f81272f\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"800\" height=\"615\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/variables-environnement.png\/public\" alt=\"L&rsquo;&eacute;cran de v&eacute;rification des param&egrave;tres de build dans le tableau de bord Hostinger, avec la mention Action requise et le bouton Modifier sur la ligne des variables d&rsquo;environnement\" class=\"wp-image-53341\" title=\"hpanel-review-build-settings\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/variables-environnement.png\/w=800,fit=scale-down 800w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/variables-environnement.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/variables-environnement.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/variables-environnement.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><h3 class=\"wp-block-heading h-t-title-3\"><strong>4. Lancez le d&eacute;ploiement et v&eacute;rifiez l&rsquo;application<\/strong><\/h3><p class=\"wp-block-paragraph\">Cliquez sur <strong>D&eacute;ployer<\/strong> pour lancer le build. Le syst&egrave;me installe les d&eacute;pendances, ex&eacute;cute la commande de build et d&eacute;marre l&rsquo;application Node.js.<\/p><p class=\"wp-block-paragraph\">Une fois le d&eacute;ploiement termin&eacute;, le message &laquo; D&eacute;ploiement termin&eacute; &raquo; doit appara&icirc;tre.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f8149cc\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f8149cc\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"800\" height=\"616\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/deploiement-termine.png\/public\" alt=\"La fen&ecirc;tre de confirmation du d&eacute;ploiement d&rsquo;une application web Node.js dans hPanel\" class=\"wp-image-53342\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/deploiement-termine.png\/w=800,fit=scale-down 800w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/deploiement-termine.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/deploiement-termine.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/deploiement-termine.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Cliquez sur <strong>Acc&eacute;der au tableau de bord<\/strong>, puis ouvrez le domaine temporaire dans un nouvel onglet du navigateur pour v&eacute;rifier que l&rsquo;application se charge correctement.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f816984\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f816984\" class=\"aligncenter size-full is-resized wp-lightbox-container\"><img decoding=\"async\" width=\"800\" height=\"366\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/tableau-de-bord-site-nodejs.png\/public\" alt=\"Le domaine temporaire affich&eacute; dans le tableau de bord Node.js de hPanel\" class=\"wp-image-53343\" style=\"width:840px;height:auto\" title=\"hpanel-node-js-websites-temporary-domain-highlighted\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/tableau-de-bord-site-nodejs.png\/w=800,fit=scale-down 800w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/tableau-de-bord-site-nodejs.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/tableau-de-bord-site-nodejs.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/tableau-de-bord-site-nodejs.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Le tableau de bord Node.js de Hostinger vous donne une vue d&rsquo;ensemble de l&rsquo;application d&eacute;ploy&eacute;e et permet de surveiller ses performances et de g&eacute;rer ses param&egrave;tres.<\/p><ul class=\"wp-block-list\">\n<li><strong>Lien vers le d&eacute;p&ocirc;t connect&eacute;.<\/strong> Ouvre le d&eacute;p&ocirc;t GitHub ou GitLab associ&eacute; dans un nouvel onglet pour consulter le code, les branches ou les commits r&eacute;cents.<\/li>\n\n\n\n<li><strong>D&eacute;tails du dernier d&eacute;ploiement.<\/strong> Affiche l&rsquo;&eacute;tat du d&eacute;ploiement (<strong>succ&egrave;s<\/strong> ou <strong>&eacute;chec<\/strong>), sa date et son heure, ainsi qu&rsquo;un lien vers le journal complet du d&eacute;ploiement.<\/li>\n\n\n\n<li><strong>Liens rapides.<\/strong> Permettent d&rsquo;acc&eacute;der directement aux sections <strong>D&eacute;ploiements<\/strong>, <strong>Variables d&rsquo;environnement<\/strong>, <strong>Param&egrave;tres et red&eacute;ploiement<\/strong> ou <strong>Gestionnaire de fichiers<\/strong>.<\/li>\n\n\n\n<li><strong>Graphiques d&rsquo;utilisation des ressources.<\/strong> Pr&eacute;sentent l&rsquo;utilisation moyenne du processeur, de la m&eacute;moire vive et des entr&eacute;es\/sorties (E\/S). Si un indicateur s&rsquo;approche de la ligne pointill&eacute;e rouge repr&eacute;sentant la limite de votre plan, envisagez de passer &agrave; un plan sup&eacute;rieur.<\/li>\n<\/ul><h2 class=\"wp-block-heading h-t-title-2\" id=\"h-comment-deployer-une-application-node-js-avec-un-hebergement-vps\"><strong>Comment d&eacute;ployer une application Node.js avec un h&eacute;bergement VPS<\/strong><\/h2><p class=\"wp-block-paragraph\">Pour d&eacute;ployer une application Node.js sur un VPS, vous devez vous connecter &agrave; un serveur distant via SSH, installer Node.js, transf&eacute;rer le code de l&rsquo;application, configurer un gestionnaire de processus et un proxy inverse, puis activer HTTPS.<\/p><p class=\"wp-block-paragraph\">L&rsquo;<a href=\"\/fr\/vps\">h&eacute;bergement VPS<\/a> vous donne un contr&ocirc;le total sur l&rsquo;environnement du serveur. Vous pouvez ainsi tout configurer, du syst&egrave;me d&rsquo;exploitation aux r&egrave;gles du pare-feu.<\/p><p class=\"wp-block-paragraph\">Cette m&eacute;thode demande davantage de configuration que l&rsquo;h&eacute;bergement g&eacute;r&eacute; d&rsquo;applications web. En contrepartie, vous disposez d&rsquo;un acc&egrave;s direct au serveur pour personnaliser sa configuration, effectuer des op&eacute;rations de d&eacute;bogage au niveau du syst&egrave;me d&rsquo;exploitation et ex&eacute;cuter d&rsquo;autres services en parall&egrave;le de votre application Node.js.<\/p><figure class=\"wp-block-image size-full\"><a aria-label=\"Vps\" href=\"https:\/\/www.hostinger.com\/fr\/vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2022\/12\/FR-VPS-hosting_in-text-banner-1024x300-1.png\/public\" alt=\"\" class=\"wp-image-41471\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2022\/12\/FR-VPS-hosting_in-text-banner-1024x300-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2022\/12\/FR-VPS-hosting_in-text-banner-1024x300-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2022\/12\/FR-VPS-hosting_in-text-banner-1024x300-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2022\/12\/FR-VPS-hosting_in-text-banner-1024x300-1.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><h3 class=\"wp-block-heading h-t-title-3\"><strong>1. Cr&eacute;ez une instance VPS<\/strong><\/h3><p class=\"wp-block-paragraph\">Commencez par cr&eacute;er une instance VPS et connectez-vous au serveur via SSH. Choisissez comme syst&egrave;me d&rsquo;exploitation la version LTS (&agrave; support &agrave; long terme) d&rsquo;Ubuntu la plus r&eacute;cente, par exemple <strong>24.04<\/strong>.<\/p><p class=\"wp-block-paragraph\">Connectez-vous ensuite &agrave; l&rsquo;aide d&rsquo;un <a href=\"\/fr\/tutoriels\/connexion-ssh-windows-putty\/\">client SSH comme PuTTY<\/a> ou du terminal accessible depuis le navigateur dans le tableau de bord Hostinger.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f8199b4\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f8199b4\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"997\" height=\"494\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/console-web-terminal-vps-hostinger-dashboard.png\/public\" alt=\"Le bouton d&rsquo;acc&egrave;s au terminal dans le navigateur depuis le tableau de bord VPS de hPanel\" class=\"wp-image-53331\" title=\"hpanel-vps-overview-terminal-highlighted\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/console-web-terminal-vps-hostinger-dashboard.png\/w=997,fit=scale-down 997w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/console-web-terminal-vps-hostinger-dashboard.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/console-web-terminal-vps-hostinger-dashboard.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/console-web-terminal-vps-hostinger-dashboard.png\/w=767,fit=scale-down 767w\" sizes=\"(max-width: 997px) 100vw, 997px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Effectuez ensuite la <a href=\"\/fr\/tutoriels\/comment-configurer-un-vps\/\">configuration initiale du serveur VPS<\/a> : mettez &agrave; jour les paquets syst&egrave;me, configurez le pare-feu avec <strong>ufw<\/strong> et cr&eacute;ez un utilisateur autre que root, dot&eacute; des privil&egrave;ges sudo pour une utilisation quotidienne.<\/p><h3 class=\"wp-block-heading h-t-title-3\"><strong>2. Installez Node.js sur le serveur<\/strong><\/h3><p class=\"wp-block-paragraph\">Pour <a href=\"\/fr\/tutoriels\/comment-installer-node-js-sur-ubuntu\/\">installer Node.js sur Ubuntu<\/a>, vous pouvez utiliser NVM ou un gestionnaire de paquets syst&egrave;me. Si vous choisissez NVM, suivez ces &eacute;tapes :<\/p><ol start=\"1\" class=\"wp-block-list\">\n<li>Ex&eacute;cutez le script d&rsquo;installation de NVM :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">curl -o- https:\/\/raw.githubusercontent.com\/nvm-sh\/nvm\/v0.40.2\/install.sh | bash<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li>Fermez puis rouvrez le terminal pour charger NVM dans la session en cours.<\/li>\n\n\n\n<li>Installez la derni&egrave;re version LTS de Node.js :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nvm install --lts<\/pre><ol start=\"4\" class=\"wp-block-list\">\n<li>V&eacute;rifiez que Node.js et <strong>npm<\/strong> sont correctement install&eacute;s :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">node -v\nnpm -v<\/pre><p class=\"wp-block-paragraph\">Les deux commandes doivent afficher des num&eacute;ros de version semblables &agrave; ceux-ci :<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f81bd62\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f81bd62\" class=\"aligncenter size-full wp-lightbox-container\"><img decoding=\"async\" width=\"694\" height=\"216\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-node-v-npm-v.png\/public\" alt=\"Le r&eacute;sultat des commandes node -v et npm -v dans le terminal\" class=\"wp-image-53224\" title=\"terminal-node-v-npm-v\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-node-v-npm-v.png\/w=694,fit=scale-down 694w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-node-v-npm-v.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-node-v-npm-v.png\/w=150,fit=scale-down 150w\" sizes=\"(max-width: 694px) 100vw, 694px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><h3 class=\"wp-block-heading h-t-title-3\"><strong>3. T&eacute;l&eacute;versez l&rsquo;application Node.js sur le serveur<\/strong><\/h3><p class=\"wp-block-paragraph\">Si vous avez d&eacute;j&agrave; envoy&eacute; le code de votre application vers un d&eacute;p&ocirc;t GitHub ou GitLab, vous pouvez le r&eacute;cup&eacute;rer sur le serveur &agrave; l&rsquo;aide de Git. L&rsquo;exemple suivant utilise GitHub :<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cd \/var\/www\ngit clone https:\/\/github.com\/your-username\/your-repository.git\ncd your-repository\nnpm install<\/pre><p class=\"wp-block-paragraph\">Remplacez <strong>your-username<\/strong> par votre nom d&rsquo;utilisateur GitHub et <strong>your-repository<\/strong> par le nom de votre d&eacute;p&ocirc;t.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f81dead\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f81dead\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"581\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-git-clone-npm-installation.png\/w=1024,h=1024,fit=scale-down\" alt=\"Le r&eacute;sultat des commandes git clone et npm install dans le terminal\" class=\"wp-image-53226\" title=\"terminal-git-clone-npm-install\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-git-clone-npm-installation.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-git-clone-npm-installation.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-git-clone-npm-installation.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-git-clone-npm-installation.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">La commande <strong>npm install<\/strong> lit le fichier <strong>package.json<\/strong> et installe toutes les d&eacute;pendances dans le dossier <strong>node_modules<\/strong> sur le serveur.<\/p><p class=\"wp-block-paragraph\">Vous pouvez &eacute;galement transf&eacute;rer directement les fichiers &agrave; l&rsquo;aide de la <a href=\"\/fr\/tutoriels\/comment-utiliser-la-commande-scp-linux\/\">commande scp<\/a>. Ouvrez une nouvelle fen&ecirc;tre de terminal sur votre ordinateur, et non dans la session connect&eacute;e au serveur, puis ex&eacute;cutez :<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">scp -r \/local\/path\/node-deploy-test root@192.0.2.1:\/var\/www\/<\/pre><p class=\"wp-block-paragraph\">Remplacez <strong>\/local\/path\/node-deploy-test<\/strong> par le chemin d&rsquo;acc&egrave;s au dossier de votre projet, <strong>root<\/strong> par votre nom d&rsquo;utilisateur sur le serveur et <strong>192.0.2.1<\/strong> par l&rsquo;adresse IP de votre serveur.<\/p><p class=\"wp-block-paragraph\">Si vous utilisez un VPS Hostinger, vous trouverez l&rsquo;adresse IP de votre serveur dans le tableau de bord Hostinger, sous <strong>VPS &rarr; G&eacute;rer &rarr; Aper&ccedil;u &rarr; D&eacute;tails du VPS<\/strong>.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f81ed97\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f81ed97\" class=\"aligncenter size-large is-resized wp-lightbox-container\"><img decoding=\"async\" width=\"1101\" height=\"402\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/07\/ipv4-vps-hpanel-fr.png\/w=1024,h=1024,fit=scale-down\" alt=\"Adresse IPv4 du serveur affich&eacute;e sur la page &laquo; Vue d&rsquo;ensemble &raquo; du VPS dans hPanel\" class=\"wp-image-51096\" style=\"width:840px;height:auto\" title=\"hpanel-vps-overview-ipv4-highlighted\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/07\/ipv4-vps-hpanel-fr.png\/w=1101,fit=scale-down 1101w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/07\/ipv4-vps-hpanel-fr.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/07\/ipv4-vps-hpanel-fr.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/07\/ipv4-vps-hpanel-fr.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/07\/ipv4-vps-hpanel-fr.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1101px) 100vw, 1101px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Une fois le transfert termin&eacute;, revenez au terminal du serveur et ex&eacute;cutez <code>npm install<\/code> dans le r&eacute;pertoire du projet.<\/p><p class=\"wp-block-paragraph\">D&eacute;finissez ensuite les variables d&rsquo;environnement n&eacute;cessaires avant de d&eacute;marrer l&rsquo;application :<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">export NODE_ENV=production\nexport PORT=3000<\/pre><p class=\"wp-block-paragraph\"><strong>NODE_ENV=production<\/strong> indique aux frameworks qu&rsquo;ils doivent optimiser les performances et d&eacute;sactiver les fonctionnalit&eacute;s de d&eacute;veloppement. La valeur de <strong>PORT<\/strong> doit correspondre au port sur lequel votre application &eacute;coute, tel qu&rsquo;il est configur&eacute; dans <strong>app.js<\/strong>.<\/p><h3 class=\"wp-block-heading h-t-title-3\"><strong>4. Configurez PM2 et le proxy inverse<\/strong><\/h3><p class=\"wp-block-paragraph\">D&eacute;marrez votre application Node.js avec PM2 pour qu&rsquo;elle continue de fonctionner en arri&egrave;re-plan.<\/p><ol start=\"1\" class=\"wp-block-list\">\n<li>Installez PM2 et d&eacute;marrez l&rsquo;application :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">npm install -g pm2\npm2 start app.js --name \"node-app\"<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li>Configurez PM2 pour red&eacute;marrer l&rsquo;application apr&egrave;s un red&eacute;marrage du serveur :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pm2 startup\npm2 save<\/pre><p class=\"wp-block-paragraph\"><strong>pm2 startup<\/strong> g&eacute;n&egrave;re un service syst&egrave;me qui lance PM2 au d&eacute;marrage du serveur. <strong>pm2 save<\/strong> enregistre la liste actuelle des processus pour que PM2 sache quelles applications red&eacute;marrer.<\/p><ol start=\"3\" class=\"wp-block-list\">\n<li>Ouvrez les ports du pare-feu n&eacute;cessaires au trafic web. Sans cela, NGINX ne pourra pas recevoir les connexions entrantes :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ufw allow http\nufw allow https<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f8211d4\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f8211d4\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"247\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-ufw-allow-http-ufw-allow-https.png\/w=1024,h=1024,fit=scale-down\" alt=\"Le r&eacute;sultat des commandes ufw allow http et ufw allow https dans le terminal\" class=\"wp-image-53225\" title=\"terminal-ufw-allow-http-ufw-allow-https\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-ufw-allow-http-ufw-allow-https.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-ufw-allow-http-ufw-allow-https.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-ufw-allow-http-ufw-allow-https.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-ufw-allow-http-ufw-allow-https.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><ol start=\"4\" class=\"wp-block-list\">\n<li>Installez NGINX sur votre serveur :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apt update\napt install nginx -y<\/pre><ol start=\"5\" class=\"wp-block-list\">\n<li>Cr&eacute;ez un fichier de configuration pour mettre en place un <a href=\"\/fr\/tutoriels\/reverse-proxy-nginx\/\">proxy inverse NGINX<\/a> destin&eacute; &agrave; votre application Node.js :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nano \/etc\/nginx\/sites-available\/node-app<\/pre><ol start=\"6\" class=\"wp-block-list\">\n<li>Ajoutez la configuration suivante en rempla&ccedil;ant <strong>your-hostname<\/strong> par votre nom de domaine ou le nom d&rsquo;h&ocirc;te de votre serveur :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">server {\n    listen 80;\n    server_name your-hostname;\n\n    location \/ {\n        proxy_pass http:\/\/localhost:3000;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection 'upgrade';\n        proxy_set_header Host $host;\n        proxy_cache_bypass $http_upgrade;\n    }\n}<\/pre><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f823413\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f823413\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"598\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-nano-node-app.png\/w=1024,h=1024,fit=scale-down\" alt=\"Le contenu du fichier node-app dans l&rsquo;&eacute;diteur de texte nano\" class=\"wp-image-53228\" title=\"terminal-nano-node-app\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-nano-node-app.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-nano-node-app.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-nano-node-app.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-nano-node-app.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Cette configuration transmet toutes les requ&ecirc;tes HTTP entrantes au processus Node.js sur le port <strong>3000<\/strong>. Les directives <strong>proxy_set_header<\/strong> pr&eacute;servent les informations du client et permettent les connexions WebSocket.<\/p><ol start=\"7\" class=\"wp-block-list\">\n<li>Enregistrez le fichier et quittez l&rsquo;&eacute;diteur avec <strong>Ctrl + O<\/strong> &rarr; <strong>Entr&eacute;e<\/strong> &rarr; <strong>Ctrl + X<\/strong>.<\/li>\n\n\n\n<li>Activez la configuration et supprimez le site par d&eacute;faut :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ln -s \/etc\/nginx\/sites-available\/node-app \/etc\/nginx\/sites-enabled\/\nrm \/etc\/nginx\/sites-enabled\/default<\/pre><ol start=\"9\" class=\"wp-block-list\">\n<li>Testez la configuration, puis rechargez NGINX. La commande de test doit afficher les messages &laquo; syntax is ok &raquo; et &laquo; test is successful &raquo; :<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nginx -t\nsystemctl reload nginx<\/pre><ol start=\"10\" class=\"wp-block-list\">\n<li>Ouvrez l&rsquo;URL de votre application dans un navigateur, sans indiquer de num&eacute;ro de port. La page doit s&rsquo;afficher correctement.<\/li>\n<\/ol><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f82521a\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f82521a\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"679\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/application-Chrome-Nodejs.png\/w=1024,h=1024,fit=scale-down\" alt=\"L&rsquo;application Node.js affich&eacute;e dans le navigateur\" class=\"wp-image-53230\" title=\"chrome-node-js-application\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/application-Chrome-Nodejs.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/application-Chrome-Nodejs.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/application-Chrome-Nodejs.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/application-Chrome-Nodejs.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><ol start=\"11\" class=\"wp-block-list\">\n<li>Activez HTTPS avec Certbot. V&eacute;rifiez que votre nom de domaine ou votre nom d&rsquo;h&ocirc;te pointe vers l&rsquo;adresse IP du serveur, car Certbot ne peut pas d&eacute;livrer de certificat pour une adresse IP.<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apt install certbot python3-certbot-nginx -y\ncertbot --nginx -d your-hostname<\/pre><ol start=\"12\" class=\"wp-block-list\">\n<li>Suivez les instructions affich&eacute;es pour saisir une adresse e-mail et accepter les conditions d&rsquo;utilisation. Certbot v&eacute;rifie que vous &ecirc;tes propri&eacute;taire du domaine, d&eacute;livre le certificat et modifie automatiquement la configuration NGINX pour rediriger le trafic HTTP vers HTTPS.<\/li>\n<\/ol><p class=\"wp-block-paragraph\">Une fois l&rsquo;op&eacute;ration termin&eacute;e, ouvrez de nouveau l&rsquo;URL de votre application et v&eacute;rifiez que le message &laquo; La connexion est s&eacute;curis&eacute;e &raquo; appara&icirc;t dans votre navigateur.<\/p><h3 class=\"wp-block-heading h-t-title-3\"><strong>5. Ex&eacute;cutez et v&eacute;rifiez l&rsquo;application en production<\/strong><\/h3><p class=\"wp-block-paragraph\">Ouvrez l&rsquo;URL de votre application Node.js et v&eacute;rifiez que la page affiche le contenu attendu. Si elle ne se charge pas, utilisez <strong>systemctl status nginx<\/strong> pour v&eacute;rifier que NGINX fonctionne et <strong>pm2 list<\/strong> pour confirmer que PM2 affiche le statut &laquo; online &raquo; pour votre application.<\/p><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f827383\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f827383\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"241\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-list.png\/w=1024,h=1024,fit=scale-down\" alt=\"Le r&eacute;sultat de la commande pm2 list dans le terminal\" class=\"wp-image-53229\" title=\"terminal-pm2-list\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-list.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-list.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-list.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-list.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Une fois l&rsquo;application en ligne, utilisez PM2 pour surveiller son comportement en cours d&rsquo;ex&eacute;cution :<\/p><ul class=\"wp-block-list\">\n<li><strong>pm2 logs<\/strong>. Affiche en temps r&eacute;el les sorties et les erreurs de l&rsquo;application. Ouvrez l&rsquo;application dans votre navigateur pendant l&rsquo;ex&eacute;cution de cette commande pour v&eacute;rifier que de nouvelles entr&eacute;es apparaissent dans les journaux.<\/li>\n<\/ul><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f82a827\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f82a827\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"379\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-logs.png\/w=1024,h=1024,fit=scale-down\" alt=\"Le r&eacute;sultat de la commande pm2 logs dans le terminal\" class=\"wp-image-53231\" title=\"terminal-pm2-logs\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-logs.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-logs.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-logs.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-logs.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><ul class=\"wp-block-list\">\n<li><strong>pm2 monit<\/strong>. Ouvre un tableau de bord interactif regroupant l&rsquo;utilisation du processeur, la consommation de m&eacute;moire, la latence de la boucle d&rsquo;&eacute;v&eacute;nements et les journaux.<\/li>\n<\/ul><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f82c94a\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f82c94a\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"1024\" height=\"554\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-monit.png\/w=1024,h=1024,fit=scale-down\" alt=\"Le tableau de bord de surveillance ouvert avec la commande pm2 monit dans le terminal\" class=\"wp-image-53232\" title=\"terminal-pm2-monit\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-monit.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-monit.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-monit.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-monit.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><ul class=\"wp-block-list\">\n<li><strong>pm2 show node-app<\/strong>. Affiche des informations d&eacute;taill&eacute;es, notamment la dur&eacute;e de fonctionnement, le nombre de red&eacute;marrages, la consommation de m&eacute;moire, le chemin d&rsquo;acc&egrave;s au script et l&rsquo;emplacement des fichiers journaux.<\/li>\n<\/ul><div class=\"wp-block-image\">\n<figure data-wp-context='{\"imageId\":\"6acce4f82e78b\"}' data-wp-interactive=\"core\/image\" data-wp-key=\"6acce4f82e78b\" class=\"aligncenter size-large wp-lightbox-container\"><img decoding=\"async\" width=\"899\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-show-node-app.png\/w=1024,h=1024,fit=scale-down\" alt=\"Les informations affich&eacute;es par la commande pm2 show node-app dans le terminal\" class=\"wp-image-53233\" title=\"terminal-pm2-show-node-app\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-show-node-app.png\/w=899,fit=scale-down 899w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-show-node-app.png\/w=263,fit=scale-down 263w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-show-node-app.png\/w=132,fit=scale-down 132w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/46\/2026\/10\/terminal-pm2-show-node-app.png\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 899px) 100vw, 899px\" \/><button class=\"lightbox-trigger\" type=\"button\" aria-haspopup=\"dialog\" data-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\" data-wp-init=\"callbacks.initTriggerButton\" data-wp-on--click=\"actions.showLightbox\" data-wp-style--right=\"state.thisImage.buttonRight\" data-wp-style--top=\"state.thisImage.buttonTop\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewbox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\"><\/path>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div><p class=\"wp-block-paragraph\">Appuyez sur <strong>Ctrl + C<\/strong> pour quitter l&rsquo;une de ces vues.<\/p><h2 class=\"wp-block-heading h-t-title-2\" id=\"h-quelles-sont-les-bonnes-pratiques-pour-deployer-une-application-node-js\"><strong>Quelles sont les bonnes pratiques pour d&eacute;ployer une application Node.js ?<\/strong><\/h2><p class=\"wp-block-paragraph\">Les bonnes pratiques de d&eacute;ploiement Node.js reposent sur l&rsquo;automatisation, la s&eacute;paration des environnements et une surveillance proactive afin de maintenir la stabilit&eacute; et la s&eacute;curit&eacute; des applications en production.<\/p><ul class=\"wp-block-list\">\n<li><strong>Mettez en place un pipeline CI\/CD.<\/strong> Utilisez des outils comme GitHub Actions, GitLab CI\/CD ou Jenkins pour ex&eacute;cuter votre suite de tests &agrave; chaque commit et d&eacute;ployer automatiquement l&rsquo;application une fois tous les tests r&eacute;ussis. Vous &eacute;vitez ainsi les &eacute;tapes de d&eacute;ploiement manuelles et pouvez d&eacute;tecter les bugs avant qu&rsquo;ils n&rsquo;atteignent la production.<\/li>\n\n\n\n<li><strong>S&eacute;parez la configuration du code.<\/strong> Stockez les valeurs propres &agrave; chaque environnement dans des variables d&rsquo;environnement ou des fichiers de configuration externes que vous ne versionnez pas dans le d&eacute;p&ocirc;t. En local, utilisez un fichier <strong>.env<\/strong> charg&eacute; &agrave; l&rsquo;aide d&rsquo;une biblioth&egrave;que comme <strong>dotenv<\/strong>. En production, d&eacute;finissez directement les variables sur le serveur ou dans le tableau de bord de votre plateforme d&rsquo;h&eacute;bergement.<\/li>\n\n\n\n<li><strong>Utilisez des journaux structur&eacute;s.<\/strong> Enregistrez les journaux au format JSON afin que des outils comme la suite ELK (Elasticsearch, Logstash, Kibana) ou Datadog puissent les analyser et y effectuer des recherches efficacement. Incluez un horodatage, un niveau de journalisation et un identifiant de requ&ecirc;te dans chaque entr&eacute;e pour suivre les probl&egrave;mes d&rsquo;une requ&ecirc;te &agrave; l&rsquo;autre.<\/li>\n\n\n\n<li><strong>Configurez des v&eacute;rifications automatiques de l&rsquo;&eacute;tat de l&rsquo;application.<\/strong> Utilisez un service de surveillance comme UptimeRobot ou Pingdom pour interroger le point de terminaison de v&eacute;rification de l&rsquo;&eacute;tat de votre application toutes les 30 &agrave; 60 secondes. Si ce point de terminaison ne r&eacute;pond pas ou renvoie une erreur, le service vous alerte par e-mail, Slack ou SMS afin que vous puissiez intervenir avant que les utilisateurs ne remarquent le probl&egrave;me. &Agrave; titre indicatif, visez un temps de r&eacute;ponse p95 inf&eacute;rieur &agrave; 200 ms.<\/li>\n\n\n\n<li><strong>Activez les retours automatiques &agrave; la version pr&eacute;c&eacute;dente.<\/strong> Configurez votre pipeline CI\/CD pour qu&rsquo;il red&eacute;ploie la derni&egrave;re version stable si une nouvelle version &eacute;choue aux v&eacute;rifications de l&rsquo;&eacute;tat de l&rsquo;application ou plante pendant une p&eacute;riode d&eacute;finie, par exemple apr&egrave;s trois red&eacute;marrages en cinq minutes. PM2 permet de limiter le nombre de red&eacute;marrages avec l&rsquo;option <strong>&ndash;max-restarts<\/strong>, tandis que des outils comme GitHub Actions peuvent d&eacute;clencher un retour &agrave; la version pr&eacute;c&eacute;dente en cas d&rsquo;&eacute;chec du script de d&eacute;ploiement.<\/li>\n<\/ul><h2 class=\"wp-block-heading h-t-title-2\" id=\"h-comment-faire-evoluer-une-application-node-js-en-production\"><strong>Comment faire &eacute;voluer une application Node.js en production<\/strong><\/h2><p class=\"wp-block-paragraph\">Pour faire &eacute;voluer une application Node.js en production, combinez des strat&eacute;gies de mise &agrave; l&rsquo;&eacute;chelle des serveurs et des adaptations de l&rsquo;architecture afin de r&eacute;partir le trafic et la charge de travail entre plusieurs processus ou machines.<\/p><p class=\"wp-block-paragraph\"><strong>Mise &agrave; l&rsquo;&eacute;chelle horizontale.<\/strong> Elle consiste &agrave; ajouter des instances de serveur pour g&eacute;rer l&rsquo;augmentation du trafic, tandis qu&rsquo;un r&eacute;partiteur de charge distribue les requ&ecirc;tes entre les diff&eacute;rents serveurs.<\/p><p class=\"wp-block-paragraph\"><strong>Mise &agrave; l&rsquo;&eacute;chelle verticale.<\/strong> Elle consiste &agrave; augmenter les ressources d&rsquo;un serveur unique, notamment sa puissance de calcul, sa m&eacute;moire vive et son espace de stockage. Plus simple &agrave; mettre en place, cette approche reste limit&eacute;e par les capacit&eacute;s maximales d&rsquo;une seule machine.<\/p><p class=\"wp-block-paragraph\"><strong>R&eacute;partition de charge.<\/strong> Elle permet de distribuer les requ&ecirc;tes de mani&egrave;re &eacute;quilibr&eacute;e pour &eacute;viter qu&rsquo;un seul processus ne devienne un goulot d&rsquo;&eacute;tranglement. NGINX peut assurer ce r&ocirc;le en d&eacute;finissant un bloc upstream contenant plusieurs serveurs backend et en r&eacute;partissant le trafic entre eux.<\/p><p class=\"wp-block-paragraph\">Par d&eacute;faut, Node.js fonctionne sur un seul thread et n&rsquo;utilise donc qu&rsquo;un seul c&oelig;ur de processeur, m&ecirc;me si le serveur en poss&egrave;de plusieurs.<\/p><p class=\"wp-block-paragraph\">Le module int&eacute;gr&eacute; <strong>cluster<\/strong> r&eacute;sout ce probl&egrave;me en cr&eacute;ant plusieurs processus de travail &agrave; partir du processus principal, g&eacute;n&eacute;ralement un par c&oelig;ur de processeur. Tous ces processus partagent le m&ecirc;me port sur le serveur.<\/p><p class=\"wp-block-paragraph\">PM2 simplifie cette gestion des processus gr&acirc;ce au mode cluster. La commande <strong>pm2 start app.js -i max<\/strong> lance automatiquement un processus de travail pour chaque c&oelig;ur de processeur disponible.<\/p><p class=\"wp-block-paragraph\">Pour les infrastructures plus importantes, la conteneurisation avec Docker permet de regrouper votre application Node.js et ses d&eacute;pendances dans une image Docker portable, qui fonctionne de mani&egrave;re coh&eacute;rente dans diff&eacute;rents environnements.<\/p><p class=\"wp-block-paragraph\">Des outils comme <a href=\"\/fr\/tutoriels\/tuto-kubernetes\/\">Kubernetes<\/a> permettent de g&eacute;rer les conteneurs sur plusieurs machines. Ils automatisent la mise &agrave; l&rsquo;&eacute;chelle, les mises &agrave; jour progressives, les v&eacute;rifications de l&rsquo;&eacute;tat des applications et la r&eacute;partition de charge.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pour d&eacute;ployer une application Node.js, vous pouvez suivre une proc&eacute;dure g&eacute;n&eacute;rale adapt&eacute;e &agrave; la plupart des environnements d&rsquo;h&eacute;bergement ou choisir une m&eacute;thode sp&eacute;cifique, selon que vous utilisez un h&eacute;bergement d&rsquo;applications web ou un serveur priv&eacute; virtuel (VPS). D&eacute;ployer une application Node.js consiste &agrave; la transf&eacute;rer de votre ordinateur de d&eacute;veloppement vers un serveur de production [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/fr\/tutoriels\/comment-deployer-application-node-js\/\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":190,"featured_media":53210,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"Comment d\u00e9ployer une application Node.js : guide complet","rank_math_description":"Apprenez \u00e0 d\u00e9ployer une application Node.js sur un VPS ou un h\u00e9bergement web. Suivez les \u00e9tapes pour la mettre en production, la s\u00e9curiser et la surveiller.","rank_math_focus_keyword":"d\u00e9ployer une application node.js","footnotes":""},"categories":[5846],"tags":[],"class_list":["post-53234","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-web"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/deploy-node-js-application\/","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/deploy-node-js-application\/","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/deploy-node-js-application\/","default":0},{"locale":"en-GB","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/deploy-node-js-application\/","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/deploy-node-js-application\/","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/deploy-node-js-application\/","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/deploy-node-js-application\/","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/deploy-node-js-application\/","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/comment-deployer-application-node-js","default":0}],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/posts\/53234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/users\/190"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/comments?post=53234"}],"version-history":[{"count":9,"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/posts\/53234\/revisions"}],"predecessor-version":[{"id":53346,"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/posts\/53234\/revisions\/53346"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/media\/53210"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/media?parent=53234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/categories?post=53234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/fr\/tutoriels\/wp-json\/wp\/v2\/tags?post=53234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}