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

# 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