10 KiB
Guide de Déploiement - Gestion des Formations Manager Itinova
Table des matières
- Prérequis
- Installation locale
- Configuration
- Déploiement en production
- Migration de base de données
- Maintenance
- Dépannage
Prérequis
Environnement de développement
- Node.js : version 22.13.0 ou supérieure
- pnpm : gestionnaire de paquets (installé avec Node.js)
- Base de données : MySQL 8.0+ ou TiDB (compatible MySQL)
- Git : pour le contrôle de version
Services externes (optionnels)
- Resend : pour l'envoi d'emails (clé API requise)
- Plateforme Manus : pour l'authentification OAuth (déjà configuré)
Installation locale
1. Cloner le projet
# Si vous avez accès au dépôt Git
git clone <url-du-depot>
cd formation-manager-itinova
# Sinon, extraire l'archive
unzip formation-manager-itinova.zip
cd formation-manager-itinova
2. Installer les dépendances
pnpm install
3. Configurer les variables d'environnement
Créer un fichier .env à la racine du projet :
# Base de données
DATABASE_URL=mysql://user:password@localhost:3306/formation_manager
# JWT Secret (générer une clé aléatoire sécurisée)
JWT_SECRET=votre_cle_secrete_tres_longue_et_aleatoire
# OAuth Manus (déjà configuré sur la plateforme)
OAUTH_SERVER_URL=https://api.manus.im
VITE_OAUTH_PORTAL_URL=https://login.manus.im
VITE_APP_ID=votre_app_id
# Propriétaire
OWNER_OPEN_ID=votre_open_id
OWNER_NAME=Nom du propriétaire
# Application
VITE_APP_TITLE=Gestion des Formations Manager Itinova
VITE_APP_LOGO=/logo.svg
# APIs Manus (optionnel)
BUILT_IN_FORGE_API_URL=https://forge.manus.im
BUILT_IN_FORGE_API_KEY=votre_cle_api
VITE_FRONTEND_FORGE_API_KEY=votre_cle_frontend
VITE_FRONTEND_FORGE_API_URL=https://forge.manus.im
# Analytics (optionnel)
VITE_ANALYTICS_ENDPOINT=https://analytics.manus.im
VITE_ANALYTICS_WEBSITE_ID=votre_website_id
4. Initialiser la base de données
# Créer la base de données
mysql -u root -p -e "CREATE DATABASE formation_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# Appliquer les migrations
pnpm db:push
5. Créer l'utilisateur administrateur
L'utilisateur administrateur est créé automatiquement au premier lancement :
- Identifiant :
adminServFormation - Mot de passe :
Itinova69! - Email :
admin@formation.local(modifiable)
6. Lancer l'application en développement
pnpm dev
L'application sera accessible à l'adresse : http://localhost:3000
Configuration
Configuration SMTP (Resend)
- Créer un compte sur Resend
- Générer une clé API
- Se connecter à l'application avec l'utilisateur admin
- Aller dans Configuration SMTP
- Saisir :
- Clé API Resend : votre clé API
- Email expéditeur : votre email vérifié sur Resend
- Nom de l'expéditeur : Itinova Formation
- Activer le mode Production
- Tester l'envoi
Personnalisation des templates d'emails
- Se connecter en tant qu'administrateur
- Aller dans Templates d'emails
- Modifier les templates selon vos besoins :
- Email de confirmation d'inscription
- Email teaser
- Email de rappel J-7
Gestion des utilisateurs
- Se connecter en tant qu'administrateur
- Aller dans Utilisateurs
- Créer de nouveaux utilisateurs avec identifiant et mot de passe
- Attribuer le rôle admin ou user
Note : L'utilisateur adminServFormation ne peut pas être supprimé et garantit un accès permanent à l'administration.
Déploiement en production
Option 1 : Déploiement sur la plateforme Manus (recommandé)
L'application est déjà configurée pour la plateforme Manus. Pour déployer :
- Se connecter à l'interface de gestion Manus
- Créer un checkpoint via le bouton Save Checkpoint
- Cliquer sur le bouton Publish dans l'en-tête
- Configurer le domaine personnalisé si nécessaire
- Publier l'application
Avantages :
- Déploiement automatique
- SSL/TLS automatique
- Scaling automatique
- Base de données TiDB incluse
- Pas de configuration serveur nécessaire
Option 2 : Déploiement manuel sur serveur VPS
Prérequis serveur
- Ubuntu 22.04 LTS ou supérieur
- 2 CPU, 4 GB RAM minimum
- Node.js 22.13.0+
- MySQL 8.0+ ou MariaDB 10.6+
- Nginx (reverse proxy)
- Certbot (SSL/TLS)
Étapes de déploiement
- Préparer le serveur
# Mettre à jour le système
sudo apt update && sudo apt upgrade -y
# Installer Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# Installer pnpm
npm install -g pnpm
# Installer MySQL
sudo apt install -y mysql-server
# Installer Nginx
sudo apt install -y nginx
# Installer Certbot
sudo apt install -y certbot python3-certbot-nginx
- Déployer l'application
# Créer un utilisateur dédié
sudo useradd -m -s /bin/bash formation
sudo su - formation
# Cloner ou copier le projet
cd /home/formation
# Copier les fichiers du projet ici
# Installer les dépendances
pnpm install
# Configurer les variables d'environnement
cp .env.example .env
nano .env
# Build de production
pnpm build
- Configurer le service systemd
Créer le fichier /etc/systemd/system/formation-manager.service :
[Unit]
Description=Formation Manager Itinova
After=network.target mysql.service
[Service]
Type=simple
User=formation
WorkingDirectory=/home/formation/formation-manager-itinova
ExecStart=/usr/bin/pnpm start
Restart=on-failure
RestartSec=10
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
Activer et démarrer le service :
sudo systemctl daemon-reload
sudo systemctl enable formation-manager
sudo systemctl start formation-manager
sudo systemctl status formation-manager
- Configurer Nginx
Créer le fichier /etc/nginx/sites-available/formation-manager :
server {
listen 80;
server_name votre-domaine.com;
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;
}
client_max_body_size 10M;
}
Activer le site :
sudo ln -s /etc/nginx/sites-available/formation-manager /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
- Configurer SSL/TLS avec Let's Encrypt
sudo certbot --nginx -d votre-domaine.com
Migration de base de données
Appliquer les migrations
# En développement
pnpm db:push
# En production (avec sauvegarde)
# 1. Sauvegarder la base de données
mysqldump -u root -p formation_manager > backup_$(date +%Y%m%d_%H%M%S).sql
# 2. Appliquer les migrations
pnpm db:push
Restaurer une sauvegarde
mysql -u root -p formation_manager < backup_20250123_120000.sql
Maintenance
Logs de l'application
# Logs systemd
sudo journalctl -u formation-manager -f
# Logs Nginx
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
Mise à jour de l'application
# Arrêter le service
sudo systemctl stop formation-manager
# Mettre à jour le code
cd /home/formation/formation-manager-itinova
git pull origin main
# Installer les nouvelles dépendances
pnpm install
# Appliquer les migrations
pnpm db:push
# Rebuild
pnpm build
# Redémarrer le service
sudo systemctl start formation-manager
Sauvegarde automatique
Créer un script de sauvegarde /home/formation/backup.sh :
#!/bin/bash
BACKUP_DIR="/home/formation/backups"
DATE=$(date +%Y%m%d_%H%M%S)
# Créer le répertoire de sauvegarde
mkdir -p $BACKUP_DIR
# Sauvegarder la base de données
mysqldump -u root -p formation_manager > $BACKUP_DIR/db_$DATE.sql
# Compresser
gzip $BACKUP_DIR/db_$DATE.sql
# Supprimer les sauvegardes de plus de 30 jours
find $BACKUP_DIR -name "db_*.sql.gz" -mtime +30 -delete
echo "Sauvegarde terminée : $BACKUP_DIR/db_$DATE.sql.gz"
Ajouter une tâche cron :
crontab -e
# Sauvegarde quotidienne à 2h du matin
0 2 * * * /home/formation/backup.sh
Dépannage
L'application ne démarre pas
-
Vérifier les logs :
sudo journalctl -u formation-manager -n 50 -
Vérifier la connexion à la base de données :
mysql -u root -p -e "SHOW DATABASES;" -
Vérifier les variables d'environnement dans
.env
Erreur de connexion à la base de données
-
Vérifier que MySQL est démarré :
sudo systemctl status mysql -
Tester la connexion :
mysql -u user -p formation_manager -
Vérifier l'URL de connexion dans
.env
Les emails ne sont pas envoyés
- Vérifier la configuration SMTP dans l'interface admin
- Vérifier que la clé API Resend est valide
- Vérifier que l'email expéditeur est vérifié sur Resend
- Consulter les logs de l'application
Problème de permissions
# Corriger les permissions
sudo chown -R formation:formation /home/formation/formation-manager-itinova
sudo chmod -R 755 /home/formation/formation-manager-itinova
L'authentification locale ne fonctionne pas
- Vérifier que
JWT_SECRETest défini dans.env - Vérifier que l'utilisateur
adminServFormationexiste dans la base de données - Réinitialiser le mot de passe si nécessaire via SQL :
-- Le mot de passe hashé pour "Itinova69!"
UPDATE users
SET password = '$2a$10$...'
WHERE username = 'adminServFormation';
Support
Pour toute question ou problème :
- Consulter la documentation complète dans le dossier
/docs - Vérifier les logs de l'application
- Contacter l'équipe de développement
Version : 1.0.0
Dernière mise à jour : 23 novembre 2025