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
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 :
- Corriger tous les bugs listés dans
apps/legacy-app/docs/BUGS.md - Implémenter une vraie authentification
- Ajouter CSRF protection
- Valider tous les fichiers uploadés
- Utiliser HTTPS obligatoirement
- Configurer un vrai secret de session (pas celui en dur dans le code)
- Limiter les tentatives de connexion
- Mettre en place un système de logs et monitoring
- Configurer fail2ban pour bloquer les tentatives d'intrusion
- 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 :
- Vérifier les logs :
pm2 logs bricoloc-legacy - Consulter la documentation dans
/docs - Vérifier le statut :
pm2 statusetsudo systemctl status nginx