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-vpsMettez à 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 nodejsVé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 :
Allez sur GitHub.com → Settings → SSH and GPG keys
Cliquez sur New SSH key
Donnez un titre (ex: "VPS YorkHost") et collez la clé
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 :
Allez sur GitHub.com → Settings → Developer settings → Personal access tokens → Tokens (classic)
Cliquez sur Generate new token (classic)
Donnez un nom, sélectionnez une expiration
Cochez au minimum le scope repo
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
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 :
Connectez-vous au dashboard Cloudflare
Sélectionnez votre domaine
Allez dans DNS → Records
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 :
Dans Cloudflare, allez dans SSL/TLS
Sélectionnez le mode Full (ou Full (Strict) avec un certificat origine)
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
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 monsiteAssurez-vous que le port 3000 n'est pas utilisé :
lsof -i :3000
Erreur 502 Bad Gateway :
Vérifiez que PM2 tourne :
pm2 statusVérifiez que le port dans Nginx correspond au port de l'app
Le site n'est pas accessible :
Vérifiez le pare-feu :
ufw statuset autorisez le port 80 :ufw allow 80Vé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 :
Email : [email protected]
Discord : discord.gg/yorkhost
Panel : panel.yorkhost.fr
Documentation YorkHost - Dernière mise à jour : Décembre 2025
Mis à jour