You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

7.3 KiB

Guide de déploiement sur VPS

Prérequis

  • Un VPS avec Ubuntu 20.04+ (ou Debian)
  • Accès SSH au VPS
  • Nom de domaine (optionnel mais recommandé)

1. Connexion au VPS

ssh votre-utilisateur@votre-vps-ip

2. Installation des dépendances système

# Mise à jour du système
sudo apt update && sudo apt upgrade -y

# Installation de Node.js 20.x
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

# Installation de Git
sudo apt install -y git

# Installation de PM2 (gestionnaire de processus)
sudo npm install -g pm2

# Installation de Nginx (serveur web)
sudo apt install -y nginx

# Vérification
node --version    # Devrait afficher v20.x.x
npm --version
git --version
pm2 --version
nginx -v

3. Configuration du pare-feu

# Autoriser SSH, HTTP et HTTPS
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

4. Clonage du projet

# Créer un dossier pour les applications
mkdir -p ~/apps
cd ~/apps

# Cloner le dépôt
git clone https://github.com/morepudding/bricolociaac.git
cd bricolociaac

5. Configuration de l'application Legacy

# Aller dans le dossier legacy
cd apps/legacy-app

# Installer les dépendances
npm install

# Initialiser la base de données
npm run db:reset

# Créer le dossier uploads si nécessaire
mkdir -p src/uploads

# Créer le dossier logs
mkdir -p logs

6. Configuration des variables d'environnement

Créer un fichier .env dans apps/legacy-app/ :

nano apps/legacy-app/.env

Ajouter :

NODE_ENV=production
PORT=3000
SESSION_SECRET=votre-secret-tres-securise-ici

7. Démarrage avec PM2

# Revenir à la racine du projet
cd ~/apps/bricolociaac

# Démarrer l'application avec PM2
pm2 start ecosystem.config.js

# Vérifier le statut
pm2 status

# Voir les logs
pm2 logs bricoloc-legacy

# Configurer PM2 pour démarrer au boot
pm2 startup
pm2 save

8. Configuration de Nginx (reverse proxy)

# Créer la configuration Nginx
sudo nano /etc/nginx/sites-available/bricoloc

Ajouter cette configuration :

server {
    listen 80;
    server_name defder.fr www.defder.fr;

    # Logs
    access_log /var/log/nginx/bricoloc-access.log;
    error_log /var/log/nginx/bricoloc-error.log;

    # Limite de taille des uploads
    client_max_body_size 10M;

    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_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }

    # Servir les fichiers statiques directement
    location /css/ {
        alias /home/votre-utilisateur/apps/bricolociaac/apps/legacy-app/src/public/css/;
    }

    location /js/ {
        alias /home/votre-utilisateur/apps/bricolociaac/apps/legacy-app/src/public/js/;
    }

    location /uploads/ {
        alias /home/votre-utilisateur/apps/bricolociaac/apps/legacy-app/src/uploads/;
    }
}

Note: Remplacez votre-utilisateur par votre nom d'utilisateur réel.

# Activer la configuration
sudo ln -s /etc/nginx/sites-available/bricoloc /etc/nginx/sites-enabled/

# Tester la configuration
sudo nginx -t

# Redémarrer Nginx
sudo systemctl restart nginx

9. Configuration HTTPS avec Let's Encrypt (optionnel mais recommandé)

# Installer Certbot
sudo apt install -y certbot python3-certbot-nginx

# Obtenir un certificat SSL
sudo certbot --nginx -d defder.fr -d www.defder.fr

# Le renouvellement automatique est déjà configuré
# Vérifier avec:
sudo certbot renew --dry-run

10. Accès à l'application

  • Votre site: https://defder.fr
  • Sans SSL (temporaire): http://defder.fr

Gestion de l'application

Commandes PM2 utiles

# Voir le statut
pm2 status

# Redémarrer l'application
pm2 restart bricoloc-legacy

# Arrêter l'application
pm2 stop bricoloc-legacy

# Voir les logs en temps réel
pm2 logs bricoloc-legacy

# Voir les logs avec filtre
pm2 logs bricoloc-legacy --lines 100

# Monitorer les ressources
pm2 monit

Mise à jour de l'application

cd ~/apps/bricolociaac

# Sauvegarder la base de données (optionnel)
cp apps/legacy-app/data/*.db ~/backups/

# Récupérer les dernières modifications
git pull origin main

# Réinstaller les dépendances si nécessaire
cd apps/legacy-app
npm install

# Redémarrer l'application
pm2 restart bricoloc-legacy

Sauvegardes

# Créer un script de sauvegarde
nano ~/backup-bricoloc.sh

Contenu du script :

#!/bin/bash
BACKUP_DIR=~/backups/bricoloc
mkdir -p $BACKUP_DIR
DATE=$(date +%Y%m%d_%H%M%S)

# Sauvegarder la base de données
cp ~/apps/bricolociaac/apps/legacy-app/data/*.db $BACKUP_DIR/db_$DATE.db

# Sauvegarder les uploads
tar -czf $BACKUP_DIR/uploads_$DATE.tar.gz ~/apps/bricolociaac/apps/legacy-app/src/uploads/

# Garder seulement les 7 dernières sauvegardes
cd $BACKUP_DIR
ls -t | tail -n +8 | xargs rm -f

echo "Sauvegarde terminée: $DATE"

Rendre exécutable et configurer dans cron :

chmod +x ~/backup-bricoloc.sh

# Ajouter à crontab (sauvegarde quotidienne à 2h du matin)
crontab -e
# Ajouter: 0 2 * * * /home/votre-utilisateur/backup-bricoloc.sh >> /home/votre-utilisateur/backup.log 2>&1

Monitoring et logs

# Logs Nginx
sudo tail -f /var/log/nginx/bricoloc-access.log
sudo tail -f /var/log/nginx/bricoloc-error.log

# Logs PM2
pm2 logs bricoloc-legacy

# Logs système
sudo journalctl -u nginx -f

Dépannage

L'application ne démarre pas

# Vérifier les logs
pm2 logs bricoloc-legacy --err

# Vérifier les permissions
ls -la ~/apps/bricolociaac/apps/legacy-app/

# Tester manuellement
cd ~/apps/bricolociaac/apps/legacy-app
node src/server.js

Nginx renvoie 502 Bad Gateway

# Vérifier que l'application tourne
pm2 status

# Vérifier les logs Nginx
sudo tail -f /var/log/nginx/bricoloc-error.log

# Vérifier que le port 3000 est en écoute
sudo netstat -tlnp | grep 3000

Base de données corrompue

cd ~/apps/bricolociaac/apps/legacy-app
npm run db:reset
pm2 restart bricoloc-legacy

Sécurité importante

⚠️ Cette application contient des vulnérabilités intentionnelles pour la formation.

Avant de la rendre publique sur Internet :

  1. Corriger tous les bugs listés dans apps/legacy-app/docs/BUGS.md
  2. Implémenter une vraie authentification
  3. Ajouter CSRF protection
  4. Valider tous les fichiers uploadés
  5. Utiliser HTTPS obligatoirement
  6. Configurer un vrai secret de session (pas celui en dur dans le code)
  7. Limiter les tentatives de connexion
  8. Mettre en place un système de logs et monitoring
  9. Configurer fail2ban pour bloquer les tentatives d'intrusion
  10. Garder le système et les dépendances à jour

Ressources système recommandées

  • Minimum: 1 CPU, 1 GB RAM, 10 GB disque
  • Recommandé: 2 CPU, 2 GB RAM, 20 GB disque

Support

Pour toute question ou problème :

  1. Vérifier les logs : pm2 logs bricoloc-legacy
  2. Consulter la documentation dans /docs
  3. Vérifier le statut : pm2 status et sudo systemctl status nginx