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.
157 lines
3.7 KiB
Markdown
157 lines
3.7 KiB
Markdown
|
2 months ago
|
# BricoLoc - Legacy App Deployment Guide
|
||
|
|
|
||
|
|
## Déploiement sur Heroku
|
||
|
|
|
||
|
|
### Prérequis
|
||
|
|
- Compte Heroku
|
||
|
|
- Heroku CLI installé
|
||
|
|
- Git installé
|
||
|
|
|
||
|
|
### Étapes de déploiement
|
||
|
|
|
||
|
|
1. **Connexion à Heroku**
|
||
|
|
```bash
|
||
|
|
heroku login
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **Création de l'application**
|
||
|
|
```bash
|
||
|
|
heroku create bricolociaac-legacy
|
||
|
|
```
|
||
|
|
|
||
|
|
3. **Configuration des variables d'environnement**
|
||
|
|
```bash
|
||
|
|
heroku config:set NODE_ENV=production
|
||
|
|
heroku config:set PORT=3000
|
||
|
|
heroku config:set SESSION_SECRET=your-secret-key-here
|
||
|
|
```
|
||
|
|
|
||
|
|
4. **Déploiement**
|
||
|
|
```bash
|
||
|
|
git push heroku main
|
||
|
|
```
|
||
|
|
|
||
|
|
5. **Initialisation de la base de données**
|
||
|
|
```bash
|
||
|
|
heroku run npm run db:reset --app bricolociaac-legacy
|
||
|
|
```
|
||
|
|
|
||
|
|
6. **Ouverture de l'application**
|
||
|
|
```bash
|
||
|
|
heroku open
|
||
|
|
```
|
||
|
|
|
||
|
|
## Déploiement sur Render.com
|
||
|
|
|
||
|
|
### Prérequis
|
||
|
|
- Compte Render.com
|
||
|
|
- Dépôt Git connecté
|
||
|
|
|
||
|
|
### Configuration
|
||
|
|
|
||
|
|
1. Créer un nouveau Web Service sur Render
|
||
|
|
2. Connecter votre dépôt GitHub
|
||
|
|
3. Configuration:
|
||
|
|
- **Name**: bricolociaac-legacy
|
||
|
|
- **Environment**: Node
|
||
|
|
- **Build Command**: `cd apps/legacy-app && npm install`
|
||
|
|
- **Start Command**: `cd apps/legacy-app && npm start`
|
||
|
|
- **Auto-Deploy**: Yes
|
||
|
|
|
||
|
|
### Variables d'environnement
|
||
|
|
- `NODE_ENV`: production
|
||
|
|
- `SESSION_SECRET`: [générer une clé secrète]
|
||
|
|
|
||
|
|
## Déploiement sur Railway
|
||
|
|
|
||
|
|
### Configuration
|
||
|
|
|
||
|
|
1. Créer un nouveau projet sur Railway
|
||
|
|
2. Connecter votre dépôt GitHub
|
||
|
|
3. Railway détectera automatiquement Node.js
|
||
|
|
4. Ajouter les variables d'environnement:
|
||
|
|
- `NODE_ENV`: production
|
||
|
|
- `SESSION_SECRET`: [générer une clé secrète]
|
||
|
|
|
||
|
|
### Configuration personnalisée (railway.json)
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"build": {
|
||
|
|
"builder": "NIXPACKS"
|
||
|
|
},
|
||
|
|
"deploy": {
|
||
|
|
"startCommand": "cd apps/legacy-app && npm start",
|
||
|
|
"restartPolicyType": "ON_FAILURE",
|
||
|
|
"restartPolicyMaxRetries": 10
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Déploiement sur Fly.io
|
||
|
|
|
||
|
|
### Prérequis
|
||
|
|
```bash
|
||
|
|
curl -L https://fly.io/install.sh | sh
|
||
|
|
flyctl auth login
|
||
|
|
```
|
||
|
|
|
||
|
|
### Déploiement
|
||
|
|
```bash
|
||
|
|
fly launch
|
||
|
|
fly deploy
|
||
|
|
```
|
||
|
|
|
||
|
|
## Notes importantes
|
||
|
|
|
||
|
|
### Base de données
|
||
|
|
L'application utilise SQLite en production. Pour un déploiement en production réel, considérez:
|
||
|
|
- Migrer vers PostgreSQL ou MySQL
|
||
|
|
- Utiliser un service de base de données managé
|
||
|
|
- Implémenter des sauvegardes régulières
|
||
|
|
|
||
|
|
### Sécurité
|
||
|
|
⚠️ **Cette application contient des vulnérabilités intentionnelles pour des fins pédagogiques.**
|
||
|
|
|
||
|
|
Avant un déploiement en production réel:
|
||
|
|
- Corriger toutes les vulnérabilités listées dans `apps/legacy-app/docs/BUGS.md`
|
||
|
|
- Implémenter une authentification robuste
|
||
|
|
- Ajouter CSRF protection
|
||
|
|
- Configurer HTTPS/SSL
|
||
|
|
- Valider tous les fichiers uploadés
|
||
|
|
- Utiliser des secrets sécurisés (variables d'environnement)
|
||
|
|
|
||
|
|
### Stockage de fichiers
|
||
|
|
Les uploads sont stockés localement. Pour la production:
|
||
|
|
- Utiliser un service comme AWS S3, Cloudinary, ou Uploadcare
|
||
|
|
- Implémenter une validation stricte des types de fichiers
|
||
|
|
- Limiter la taille des fichiers
|
||
|
|
|
||
|
|
### Sessions
|
||
|
|
Les sessions sont stockées dans SQLite. Pour la production:
|
||
|
|
- Utiliser Redis ou un store de sessions dédié
|
||
|
|
- Configurer correctement les cookies (secure, sameSite, etc.)
|
||
|
|
|
||
|
|
## Vérification du déploiement
|
||
|
|
|
||
|
|
Après le déploiement, vérifier:
|
||
|
|
1. L'application démarre correctement
|
||
|
|
2. Les routes principales sont accessibles
|
||
|
|
3. La base de données est initialisée
|
||
|
|
4. Les sessions fonctionnent
|
||
|
|
5. Les fichiers statiques sont servis
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### L'application ne démarre pas
|
||
|
|
- Vérifier les logs: `heroku logs --tail` (ou équivalent)
|
||
|
|
- Vérifier que toutes les dépendances sont installées
|
||
|
|
- Vérifier les variables d'environnement
|
||
|
|
|
||
|
|
### Base de données vide
|
||
|
|
- Exécuter `npm run db:reset` sur le serveur
|
||
|
|
- Vérifier que les fichiers de seed sont présents
|
||
|
|
|
||
|
|
### Erreurs de session
|
||
|
|
- Vérifier que `SESSION_SECRET` est configuré
|
||
|
|
- Vérifier les permissions du dossier de la base de données
|