# RegisFlow - Guide de DĂ©ploiement Production 2025 ## 🚀 DĂ©ploiement Rapide ### PrĂ©requis - Docker 20.10+ et Docker Compose 2.0+ - Base de donnĂ©es PostgreSQL externe ou utiliser le docker-compose fourni - Au minimum 2GB RAM et 5GB d'espace disque libre ### Installation Express ```bash # 1. Cloner le repository git clone regisflow cd regisflow # 2. CrĂ©er le fichier de configuration cp .env.production.example .env.production # 3. Modifier les variables critiques (OBLIGATOIRE) nano .env.production # Changer POSTGRES_PASSWORD et SESSION_SECRET # 4. DĂ©marrer l'application docker-compose up -d # 5. VĂ©rifier le dĂ©ploiement curl http://localhost:5000/health ``` ## 🔧 Configuration Production ### Variables d'Environnement (.env.production) ```env # DATABASE - OBLIGATOIRE Ă  modifier POSTGRES_PASSWORD=VotreMotDePasseSecure2025! DATABASE_URL=postgresql://regisflow:VotreMotDePasseSecure2025!@regisflow-db:5432/regisflow # SECURITY - OBLIGATOIRE Ă  modifier SESSION_SECRET=VotreCleDeSessionUnique32Caracteres+ # APPLICATION NODE_ENV=production APP_PORT=5000 POSTGRES_PORT=5433 # SÉCURITÉ SECURE_COOKIES=true # DONNÉES DATA_RETENTION_MONTHS=19 ``` ### SĂ©curitĂ© Importante ⚠ **ATTENTION** : Changez toujours ces variables avant le dĂ©ploiement : - `POSTGRES_PASSWORD` : Mot de passe fort (16+ caractĂšres) - `SESSION_SECRET` : ClĂ© unique (32+ caractĂšres) ## 🐳 Docker Compose ### DĂ©marrage ```bash # Premier dĂ©marrage docker-compose up -d # Voir les logs docker-compose logs -f # ArrĂȘt docker-compose down # RedĂ©marrage complet docker-compose down && docker-compose up -d ``` ### Architecture ```yaml services: regisflow-db: # PostgreSQL 16 avec persistence regisflow: # Application RegisFlow optimisĂ©e ``` ## 📊 Monitoring et SantĂ© ### Health Checks ```bash # Status gĂ©nĂ©ral curl http://localhost:5000/health # Informations dĂ©taillĂ©es curl http://localhost:5000/health | jq . # VĂ©rifier la base de donnĂ©es docker exec regisflow-db pg_isready -U regisflow ``` ### Logs ```bash # Application docker-compose logs regisflow # Base de donnĂ©es docker-compose logs regisflow-db # Temps rĂ©el docker-compose logs -f ``` ## 🔍 Troubleshooting ### ProblĂšmes Courants #### 1. Erreur "docker-entrypoint.sh: No such file or directory" ```bash # Solution : Test rapide avec le script fourni ./docker-test-quick.sh # Ou manuellement : docker-compose down docker system prune -f docker-compose build --no-cache docker-compose up -d ``` **RÉSOLU** : Le script d'entrĂ©e est maintenant correctement placĂ© dans `/app/docker-entrypoint.sh` #### 2. Base de donnĂ©es inaccessible ```bash # VĂ©rifier la connexion docker exec regisflow-db pg_isready -U regisflow # RedĂ©marrer la DB docker-compose restart regisflow-db # Logs de la DB docker-compose logs regisflow-db ``` #### 3. Migration Ă©choue ```bash # ExĂ©cuter manuellement docker exec regisflow npm run db:push # VĂ©rifier les tables docker exec regisflow-db psql -U regisflow -c "\dt" ``` #### 4. Permissions d'accĂšs ```bash # Nettoyer les volumes docker-compose down docker volume prune docker-compose up -d ``` ### Tests de Diagnostic ```bash # Status complet docker-compose ps # Utilisation des ressources docker stats regisflow regisflow-db # Espace disque docker system df # RĂ©seau docker network ls | grep regisflow ``` ## 🔒 SĂ©curitĂ© Production ### Configuration SystĂšme - Application s'exĂ©cute avec utilisateur non-root - Conteneurs en lecture seule (tmpfs pour /tmp) - Ressources CPU/RAM limitĂ©es - Health checks automatiques ### Base de DonnĂ©es - Authentication SCRAM-SHA-256 - Isolation rĂ©seau entre conteneurs - Volumes persistants chiffrĂ©s - Sauvegardes automatiques ### Application - Sessions sĂ©curisĂ©es (HttpOnly cookies) - HTTPS enforcement (en production) - Validation stricte des entrĂ©es - Audit trail complet ## 📁 Structure Production ``` regisflow/ ├── docker-compose.yml # Configuration production ├── Dockerfile # Build multi-stage optimisĂ© ├── docker-entrypoint.sh # Script de dĂ©marrage ├── .env.production # Variables de production ├── init.sql # Schema initial PostgreSQL └── dist/ # Application compilĂ©e ├── index.js # Serveur Express └── public/ # Assets client ``` ## 🚀 DĂ©ploiement AvancĂ© ### Avec Reverse Proxy (nginx) ```nginx server { listen 80; server_name votre-domaine.com; location / { proxy_pass http://localhost:5000; 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; } } ``` ### Surveillance Continue ```bash # Monitoring en continu watch -n 30 'curl -s http://localhost:5000/health | jq .' # Alertes Slack/Discord (exemple) curl -X POST -H 'Content-type: application/json' \ --data '{"text":"RegisFlow Health: OK"}' \ YOUR_WEBHOOK_URL ``` ## 📈 Performance ### Ressources RecommandĂ©es - **Development** : 1GB RAM, 2GB disque - **Production** : 2GB RAM, 10GB disque - **Enterprise** : 4GB RAM, 50GB disque ### Optimisations - Node.js 20 avec optimisations V8 - PostgreSQL 16 avec indexation optimisĂ©e - Gzip compression activĂ©e - Cache statique pour assets --- **RegisFlow Production Ready 2025** Support: [Votre email/contact] Documentation: [Lien vers docs complĂštes]