Déployer un site Node.js/React sur un VPS YorkHost

Prérequis

Avant de commencer, assurez-vous d'avoir :

  • Un VPS YorkHost avec accès SSH (Ubuntu/Debian)

  • Un nom de domaine (dans cet exemple, nous utilisons Cloudflare comme gestionnaire DNS)

  • Un dépôt GitHub contenant votre projet Node.js/React

  • Accès root ou sudo sur votre VPS


Étape 1 : Connexion et préparation du VPS

Connectez-vous à votre VPS via SSH :

ssh root@votre-ip-vps

Mettez à jour le système :

apt update && apt upgrade -y

Étape 2 : Installation de Node.js

Installez Node.js via NodeSource (version LTS recommandée) :

curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs

Vérifiez l'installation :


Étape 3 : Installation des outils nécessaires

Installez Git, PM2 (gestionnaire de processus) et Nginx (reverse proxy) :


Étape 4 : Cloner votre projet depuis GitHub

Configuration de l'authentification GitHub

GitHub ne permet plus l'authentification par mot de passe. Vous avez deux options :

Option A : Clé SSH (recommandé)

Générez une clé SSH sur votre VPS :

Appuyez sur Entrée pour accepter l'emplacement par défaut, puis définissez une passphrase (optionnel).

Affichez la clé publique :

Copiez cette clé, puis ajoutez-la sur GitHub :

  1. Allez sur GitHub.comSettingsSSH and GPG keys

  2. Cliquez sur New SSH key

  3. Donnez un titre (ex: "VPS YorkHost") et collez la clé

  4. Cliquez sur Add SSH key

Testez la connexion :

Vous devriez voir : "Hi username! You've successfully authenticated..."

Option B : Personal Access Token (PAT)

Si vous préférez HTTPS, créez un token :

  1. Allez sur GitHub.comSettingsDeveloper settingsPersonal access tokensTokens (classic)

  2. Cliquez sur Generate new token (classic)

  3. Donnez un nom, sélectionnez une expiration

  4. Cochez au minimum le scope repo

  5. Cliquez sur Generate token et copiez-le immédiatement

Cloner le projet

Créez un répertoire pour vos applications :

Avec SSH (recommandé) :

Avec Personal Access Token :

Accédez au répertoire du projet :


Étape 5 : Installation des dépendances et build

Installez les dépendances Node.js :

Pour un projet React (Create React App, Vite, Next.js), construisez l'application :


Étape 6 : Lancer l'application avec PM2

Option A : Application React statique (recommandé pour CRA/Vite)

Servez les fichiers statiques avec serve :

Option B : Application Node.js/Next.js avec serveur

Configurez PM2 pour démarrer automatiquement au reboot :

Vérifiez que l'application tourne :


Étape 7 : Configuration de Nginx comme reverse proxy

Créez un fichier de configuration Nginx :

Ajoutez cette configuration :

Activez le site et redémarrez Nginx :


Étape 8 : Configuration DNS

Configurez les enregistrements DNS chez votre registrar ou gestionnaire DNS pour pointer vers votre VPS.

Enregistrements à créer

Type
Nom
Contenu

A

@

votre-ip-vps

A

www

votre-ip-vps

L'enregistrement @ représente le domaine racine (exemple.com), et www le sous-domaine www.exemple.com.

Exemple avec Cloudflare

Si vous utilisez Cloudflare comme gestionnaire DNS :

  1. Connectez-vous au dashboard Cloudflare

  2. Sélectionnez votre domaine

  3. Allez dans DNSRecords

  4. Ajoutez les enregistrements A ci-dessus

Option Proxy Cloudflare : Vous pouvez activer le proxy (nuage orange) pour bénéficier de la protection DDoS et du CDN Cloudflare, ou le désactiver (nuage gris) pour un accès direct au serveur.


Étape 9 : Configuration SSL (HTTPS)

Sécurisez votre site avec un certificat SSL. Voici deux options selon votre configuration.

Option A : Certificat Let's Encrypt (gratuit)

Installez Certbot :

Obtenez et installez le certificat :

Suivez les instructions et choisissez de rediriger HTTP vers HTTPS.

Le certificat se renouvellera automatiquement. Testez le renouvellement :

Option B : SSL via Cloudflare (si proxy activé)

Si vous utilisez le proxy Cloudflare (nuage orange), vous pouvez utiliser leur SSL :

  1. Dans Cloudflare, allez dans SSL/TLS

  2. Sélectionnez le mode Full (ou Full (Strict) avec un certificat origine)

  3. Activez Always Use HTTPS dans Edge Certificates

Modifiez Nginx pour récupérer l'IP réelle des visiteurs :

Rechargez Nginx :


Étape 10 : Mise à jour automatique depuis GitHub

Créez un script de déploiement :

Rendez-le exécutable :

Pour déployer une mise à jour, exécutez simplement :


Commandes utiles

Action
Commande

Voir le statut de l'app

pm2 status

Voir les logs

pm2 logs monsite

Redémarrer l'app

pm2 restart monsite

Arrêter l'app

pm2 stop monsite

Tester config Nginx

nginx -t

Recharger Nginx

systemctl reload nginx


Dépannage

L'application ne démarre pas :

  • Vérifiez les logs : pm2 logs monsite

  • Assurez-vous que le port 3000 n'est pas utilisé : lsof -i :3000

Erreur 502 Bad Gateway :

  • Vérifiez que PM2 tourne : pm2 status

  • Vérifiez que le port dans Nginx correspond au port de l'app

Le site n'est pas accessible :

  • Vérifiez le pare-feu : ufw status et autorisez le port 80 : ufw allow 80

  • Vérifiez que les DNS Cloudflare pointent vers la bonne IP

Erreur SSL :

  • Assurez-vous que le mode SSL Cloudflare est sur "Full" et non "Full (Strict)" si vous n'avez pas de certificat origine


Support

Besoin d'aide ? Contactez le support YorkHost :


Documentation YorkHost - Dernière mise à jour : Décembre 2025

Mis à jour