W07
Hostinger & VPS
SSH, Nginx reverse proxy, PM2, Certbot — déploiement sur serveur Ubuntu.
🔌 2. Connexion SSH & Configuration initiale
# Connexion SSH au VPS
ssh ubuntu@203.0.113.42
# Mise à jour du système
sudo apt update && sudo apt upgrade -y
# Installer NVM pour Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
node --version
# Installer Git
sudo apt install git -y
# Cloner votre dépôt
git clone https://github.com/username/mon-app.git /var/www/mon-app
cd /var/www/mon-app && npm ci && npm run build
⚡ 3. Node.js & PM2
PM2 est le gestionnaire de processus de référence pour Node.js en production.
# Installer PM2 globalement
npm install -g pm2
# Démarrer une app
pm2 start dist/server.js --name mon-api
# Avec des options
pm2 start dist/server.js --name mon-api --watch --max-memory-restart 300M
# Sauvegarder & démarrage automatique au reboot
pm2 save
pm2 startup # Copier-coller la commande générée
# Gestion des processus
pm2 list
pm2 logs mon-api --lines 50
pm2 restart mon-api
pm2 stop mon-api
pm2 delete mon-api
pm2 monit # Interface de monitoring temps réel
🌐 4. Nginx comme reverse proxy
# Installer Nginx
sudo apt install nginx -y
# Créer la config pour votre site
sudo nano /etc/nginx/sites-available/monsite.fr
# /etc/nginx/sites-available/monsite.fr
server {
listen 80;
server_name monsite.fr www.monsite.fr;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name monsite.fr www.monsite.fr;
ssl_certificate /etc/letsencrypt/live/monsite.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monsite.fr/privkey.pem;
# App Node.js (reverse proxy)
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
# Assets statiques
location /static/ {
root /var/www/mon-app/dist;
expires 1y;
add_header Cache-Control "public, immutable";
}
}
# Activer le site
sudo ln -s /etc/nginx/sites-available/monsite.fr /etc/nginx/sites-enabled/
# Tester la configuration
sudo nginx -t
# Recharger Nginx
sudo systemctl reload nginx
🔐 5. SSL avec Certbot
# Installer Certbot
sudo apt install certbot python3-certbot-nginx -y
# Obtenir un certificat + configurer Nginx automatiquement
sudo certbot --nginx -d monsite.fr -d www.monsite.fr
# Vérifier le renouvellement automatique
sudo certbot renew --dry-run
# Le cron de renouvellement est automatiquement créé
cat /etc/cron.d/certbot
🔄 6. Workflow de déploiement VPS
# Script de déploiement (deploy.sh)
cd /var/www/mon-app
git pull origin main
npm ci --production
npm run build
pm2 restart mon-api
Automatisez ce script avec GitHub Actions + SSH. À chaque push sur main, Actions se connecte au VPS et exécute le script de déploiement. Voir module W08.