Aller au contenu
Guides

Comment héberger et publier une application Node.js avec votre nom de domaine et SSL

Mis à jour le

Vous avez une application Node.js (réalisée avec Express, par exemple) et vous voulez la voir sur https://votre-domaine.com, avec le cadenas, sans configurer de serveur vous-même. Ce guide vous accompagne du dossier jusqu’au nom de domaine, en suivant le fonctionnement de NodeApp sur notre serveur : votre application vit dans un dossier, PM2 la maintient en marche, nginx relie votre domaine à elle et le SSL Let’s Encrypt est gratuit. Si vous voulez d’abord voir ce que comprend le service, il est résumé dans la page hébergement Node.js.

Ce qu’il vous faut avant de commencer

Trois choses : une offre qui inclut les applications Node.js, un nom de domaine et votre code.

Élément Cloud Startup
Applications Node.js Incluses
Accès SSH Oui (shell cloisonné)
Sites Illimités
Disque 100 Go SSD
Mémoire et cœurs 4 Go de RAM et 4 cœurs
Bases de données 300 (MySQL/MariaDB)
Prix de lancement 9,99 US$ par mois la première année, en paiement annuel
Renouvellement 311,88 US$ par an (25,99 US$ par mois)
Paiement mois par mois 27,99 US$
  • Offre. Un shell cloisonné est un terminal limité à votre propre compte : vous exécutez des commandes, mais vous ne touchez pas au reste du serveur. Le paiement se fait par carte bancaire (crédit ou débit) via Stripe, en dollars américains (US$). Si vous utilisez une carte bolivienne, vérifiez auprès de votre banque qu’elle est activée pour les achats à l’étranger.
  • Nom de domaine. Si vous en avez déjà un, faites-le pointer vers ns1.quimeracloud.com et ns2.quimeracloud.com chez votre bureau d’enregistrement ; les étapes se trouvent dans le guide comment pointer un nom de domaine .com ou .bo vers votre hébergement. Si vous avez besoin d’un nouveau nom de domaine, il est enregistré automatiquement dès que le paiement est confirmé : le .com et le .net coûtent 20 US$ la première année et 25 US$ par an au renouvellement, et le .org coûte 16 US$ la première année et 20 US$ par an au renouvellement (plus de détails sur la page domaines). Nous ne vendons pas de domaines .bo.
  • Votre code. Un projet avec son propre package.json.

Comment fonctionne NodeApp, en quatre éléments

NodeApp est le plugin HCPP-NodeApp (v2.0.3 sur notre serveur) de HestiaCP, le panneau de contrôle que nous utilisons. Selon son README, il permet d’héberger des applications Node.js pilotées avec PM2.

Élément Son rôle
Dossier nodeapp Votre application vit dans web/<domaine>/nodeapp.
PM2 C’est un gestionnaire de processus : un programme qui démarre votre application et aide à la maintenir en ligne, d’après sa documentation. Si votre application plante, il la redémarre.
Port automatique Le système attribue le port et le transmet à votre application au démarrage.
nginx Reçoit les visites sur votre domaine et les transmet à votre application, avec prise en charge des WebSocket.

Pas à pas

1. Activez NodeApp sur votre domaine

  1. Connectez-vous au panneau (disponible en français, espagnol, portugais, italien, allemand et anglais).
  2. Dans l’onglet Web, modifiez votre domaine et ouvrez les options avancées (Advanced Options).
  3. Choisissez NodeApp dans la liste des modèles de proxy (Proxy Template), comme l’indique la documentation du plugin, puis enregistrez.

Le plugin exige aussi que votre utilisateur ait un accès SSH ; chez QuimeraCloud, Cloud Startup l’inclut. Si vous ne voyez pas NodeApp parmi les modèles, ou si votre utilisateur n’a pas encore le SSH, écrivez-nous sur WhatsApp.

2. Regardez l’exemple fourni

Dans le dossier web/<domaine>/nodeapp, vous trouverez un exemple avec Express : app.js et app.config.js. Ouvrez-les avant d’écrire quoi que ce soit, car ils montrent comment une application reçoit son port sur ce serveur.

Le fichier app.js d’exemple ne lit pas de variable d’environnement : il reçoit le port en argument -p. Voici une version abrégée du fichier du plugin :

const express = require('express');
const app = express();

// Le plugin démarre l'application avec -p <port>
const argv = require('minimist')(process.argv.slice(2));
const port = argv.p || 0;
if (port == 0) {
  console.log('Port number is not specified');
  process.exit(1);
}

app.get('*', (req, res) => res.send('Hello World!'));
app.listen(port, () => console.log(`Écoute sur le port ${port}`));

L’exemple utilise express et minimist comme dépendances. Quant à app.config.js, c’est le fichier que PM2 lit pour démarrer l’application :

module.exports = {
  apps: (function () {
    let nodeapp = require('/usr/local/hestia/plugins/nodeapp/nodeapp.js')(__filename);
    return [nodeapp];
  })()
}

Inutile de le modifier. D’après son propre commentaire, ce module du plugin prend en charge automatiquement .nvmrc et l’attribution du port. Votre dossier contient sa propre copie de ces fichiers : servez-vous-en comme référence si vous constatez une différence avec ce qui précède.

3. Choisissez la version de Node avec .nvmrc

Créez (ou modifiez) un fichier nommé .nvmrc dans le dossier nodeapp. Il ne contient que la version :

v22

Notre serveur dispose de quatre versions installées avec NVM (le gestionnaire de versions de Node) : 16, 18, 20 et 22. Le README du plugin explique que la configuration de PM2 sélectionne la version à partir de ce fichier. Le README du dépôt décrit la version la plus récente du plugin et peut citer d’autres versions de Node ; pour votre compte, c’est la liste de ce paragraphe qui fait foi.

4. Déployez votre propre application

  1. Copiez votre code dans le dossier nodeapp via SSH.
  2. Renommez app.js et app.config.js d’après le nom de votre application, par exemple boutique.js et boutique.config.js. Le README indique de remplacer « app » par le nom de votre application.
  3. Ouvrez votre package.json et changez le champ main pour le nouveau nom ("main": "boutique.js").
  4. Faites en sorte que votre code lise le port comme l’exemple (-p) et écoute sur ce port. S’il écoute sur un autre, nginx ne le trouvera pas.
  5. Installez vos dépendances avec npm install dans ce dossier. Si votre shell ne trouve pas npm, écrivez-nous sur WhatsApp.

5. Démarrez et redémarrez

Le panneau propose, dans l’onglet Web, une liste des processus NodeApp avec les actions démarrer, arrêter, redémarrer et consulter les journaux. Il existe deux autres méthodes, toutes deux en SSH et depuis le dossier nodeapp :

touch .restart/restart      # demande un redémarrage de l'application
pm2 start app.config.js     # démarre avec PM2 (utilisez votre propre nom de fichier)

Chaque fois que vous modifiez votre code, redémarrez l’application pour qu’elle prenne en compte les changements.

6. Lisez les journaux

En cas de problème, commencez par les journaux du processus : dans le panneau, depuis la liste des processus NodeApp, ou en SSH avec pm2 logs, qui, selon la documentation de PM2, affiche les journaux en temps réel.

7. Activez le SSL et vérifiez le domaine

Le SSL Let’s Encrypt est gratuit, se renouvelle tout seul et est inclus dans toutes les offres. Pour délivrer le certificat, Let’s Encrypt vérifie que vous contrôlez le domaine en demandant un fichier en HTTP, sur le port 80 (comme l’explique sa documentation). C’est pourquoi votre domaine doit déjà pointer vers notre serveur : si vous l’avez connecté avec les serveurs de noms, le changement peut mettre du temps à se propager.

  1. Ouvrez http://votre-domaine.com et vérifiez qu’il affiche déjà votre application.
  2. Dans le panneau, ouvrez les options de votre domaine et cochez les cases SSL et Let’s Encrypt (en anglais, Enable SSL for this domain et Use Let’s Encrypt to obtain SSL certificate). Si elles sont déjà cochées, ne changez rien. Enregistrez. C’est ce que décrit la documentation de HestiaCP.
  3. Ouvrez https://votre-domaine.com et vérifiez le cadenas.

Limites à connaître

  • Un seul serveur, à Seattle (États-Unis). Vos visiteurs de Bolivie et d’Amérique latine se connectent à ce serveur. Aucune copie de votre site n’existe dans d’autres régions.
  • Pas d’accès root. Le shell cloisonné ne permet pas d’installer de logiciels système. Si votre application en a besoin, un VPS vous convient davantage : nous comparons les deux dans hébergement mutualisé, cloud ou VPS.
  • Uniquement MySQL/MariaDB comme bases de données incluses.
  • Adresse IPv4 partagée. Tous les comptes utilisent l’IPv4 du serveur.
  • Sauvegarde quotidienne sur le même serveur. La plus récente est conservée.
  • Surveillance toutes les minutes, même si nous ne publions pas de chiffre de disponibilité.

Problèmes fréquents

Ce que vous voyez Cause probable Que faire
Le journal indique « Port number is not specified » L’exemple du plugin affiche ce message quand il démarre sans l’argument -p Démarrez-le depuis le panneau ou avec pm2 start app.config.js, et non en lançant node app.js à la main
Vous avez modifié le code et rien ne change L’application tourne encore avec la version précédente Redémarrez-la
Elle ne démarre pas après le renommage des fichiers Le nom du .config.js ou le main du package.json ne correspond pas à votre fichier Vérifiez que les trois noms coïncident
Le domaine ne se charge pas Les serveurs de noms ne se sont pas encore propagés Vérifiez qu’ils pointent vers ns1.quimeracloud.com et ns2.quimeracloud.com (la vérification avec nslookup est expliquée dans le guide sur les noms de domaine)

Si quelque chose ne correspond pas à ce que vous voyez dans votre panneau, écrivez-nous sur WhatsApp au +591 773 14890 : une personne de l’équipe Quimera vous répond. Et si vous hésitez encore, comparez nos offres.

Questions fréquentes

Puis-je utiliser Node.js si j'ai aujourd'hui l'offre Premium ou Unlimited ?

Les applications Node.js et l'accès SSH sont inclus dans l'offre Cloud Startup. Pour changer d'offre, écrivez-nous sur WhatsApp et nous la changeons sans déplacer votre site : vos fichiers, bases de données et e-mails restent où ils sont.

Quelle base de données puis-je utiliser avec mon application ?

Les offres incluent des bases MySQL/MariaDB (300 avec Cloud Startup). Les autres moteurs de base de données ne sont pas inclus. Si votre application dépend d'un autre moteur, un VPS convient mieux, car vous y installez ce dont vous avez besoin.

Mon application est-elle sauvegardée ?

Oui, une sauvegarde quotidienne automatique est effectuée. La plus récente est conservée, sur le même serveur, et vous la restaurez ou la téléchargez depuis le panneau. Par précaution supplémentaire, téléchargez de temps en temps une copie et gardez votre code dans un dépôt à vous.

Quelles versions de Node.js puis-je utiliser ?

Quatre versions sont installées sur le serveur avec NVM : 16, 18, 20 et 22. Vous en choisissez une avec un fichier .nvmrc placé dans le dossier nodeapp de votre domaine, par exemple avec la ligne v22.

Sources

← Tous les guides

Mettez votre site en ligne cette semaine

Choisissez votre offre, connectez votre nom de domaine et lancez-vous. Si vous avez des questions avant de commander, écrivez-nous.