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.

3.7 KiB

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
heroku login
  1. Création de l'application
heroku create bricolociaac-legacy
  1. Configuration des variables d'environnement
heroku config:set NODE_ENV=production
heroku config:set PORT=3000
heroku config:set SESSION_SECRET=your-secret-key-here
  1. Déploiement
git push heroku main
  1. Initialisation de la base de données
heroku run npm run db:reset --app bricolociaac-legacy
  1. Ouverture de l'application
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)

{
  "build": {
    "builder": "NIXPACKS"
  },
  "deploy": {
    "startCommand": "cd apps/legacy-app && npm start",
    "restartPolicyType": "ON_FAILURE",
    "restartPolicyMaxRetries": 10
  }
}

Déploiement sur Fly.io

Prérequis

curl -L https://fly.io/install.sh | sh
flyctl auth login

Déploiement

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