From 9016a564ecc9c981f417c107c515eb32ae03a789 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Fri, 11 Jul 2025 19:05:12 +0000 Subject: [PATCH] Remove unnecessary deployment guides and scripts from the project This commit removes obsolete deployment documentation, shell scripts, and backup files. Replit-Commit-Author: Agent Replit-Commit-Session-Id: dec54137-d5a2-4406-8ad4-5f2f9fb110bf Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/ce49b69a-6c08-46b0-9012-fdaae8591d14.jpg --- DEPLOY.md | 115 ------ DOCKER_DEPLOYMENT.md | 74 ---- PORTAINER_FINAL_SOLUTION.md | 59 --- PORTAINER_GUIDE.md | 104 ----- PORTAINER_SOLUTION.md | 153 ------- PRODUCTION.md | 167 -------- ...01-in-2ms--1752102767512_1752102767512.txt | 42 -- ...s-index-mj-1752100176873_1752100176874.txt | 124 ------ .../_regisflow-app_logs (1)_1752101017149.txt | 91 ----- .../_regisflow-app_logs_1752100690824.txt | 95 ----- attached_assets/image_1752102740540.png | Bin 4503 -> 0 bytes attached_assets/image_1752103258756.png | Bin 5750 -> 0 bytes attached_assets/image_1752103355483.png | Bin 62118 -> 0 bytes attached_assets/image_1752104562483.png | Bin 7660 -> 0 bytes attached_assets/image_1752104758764.png | Bin 8683 -> 0 bytes attached_assets/image_1752159307475.png | Bin 23432 -> 0 bytes attached_assets/image_1752159543446.png | Bin 26233 -> 0 bytes attached_assets/image_1752159815281.png | Bin 36010 -> 0 bytes attached_assets/image_1752160018849.png | Bin 28603 -> 0 bytes ...-4DDD-805B-78604A84F323}_1752227204294.png | Bin 19646 -> 0 bytes .../auto-backup-2025-07-09T19-27-47-907Z.json | 151 ------- .../auto-backup-2025-07-09T19-28-49-721Z.json | 151 ------- .../auto-backup-2025-07-09T22-00-00-184Z.json | 155 -------- .../auto-backup-2025-07-10T10-00-00-592Z.json | 209 ---------- .../auto-backup-2025-07-11T10-00-00-586Z.json | 209 ---------- .../auto-backup-2025-07-11T19-05-01-267Z.json | 375 ++++++++++++++++++ build-docker.sh | 24 -- deploy-portainer-simple.sh | 58 --- deploy-portainer.sh | 47 --- deploy-production.sh | 157 -------- docker-compose-examples.yml | 70 ---- docker-compose-portainer.yml | 77 ---- docker-compose.prod.yml | 113 ------ fix-portainer-image.sh | 22 - init-db.sh | 151 ------- nginx-regisflow.conf | 110 ----- portainer-build-stack.yml | 75 ---- portainer-stack.yml | 68 ---- postgresql.conf | 52 --- replit.md | 8 +- server/prod-start.js | 31 -- test-production-ready.sh | 166 -------- 42 files changed, 378 insertions(+), 3125 deletions(-) delete mode 100644 DEPLOY.md delete mode 100644 DOCKER_DEPLOYMENT.md delete mode 100644 PORTAINER_FINAL_SOLUTION.md delete mode 100644 PORTAINER_GUIDE.md delete mode 100644 PORTAINER_SOLUTION.md delete mode 100644 PRODUCTION.md delete mode 100644 attached_assets/Pasted--Backup-stats-1-users-1-stores-0-sales-1-10-47-AM-express-GET-api-auth-me-401-in-2ms--1752102767512_1752102767512.txt delete mode 100644 attached_assets/Pasted--Node-js-18-compatibility-fix-applied-file-app-node-modules-neondatabase-serverless-index-mj-1752100176873_1752100176874.txt delete mode 100644 attached_assets/_regisflow-app_logs (1)_1752101017149.txt delete mode 100644 attached_assets/_regisflow-app_logs_1752100690824.txt delete mode 100644 attached_assets/image_1752102740540.png delete mode 100644 attached_assets/image_1752103258756.png delete mode 100644 attached_assets/image_1752103355483.png delete mode 100644 attached_assets/image_1752104562483.png delete mode 100644 attached_assets/image_1752104758764.png delete mode 100644 attached_assets/image_1752159307475.png delete mode 100644 attached_assets/image_1752159543446.png delete mode 100644 attached_assets/image_1752159815281.png delete mode 100644 attached_assets/image_1752160018849.png delete mode 100644 attached_assets/{22E4EA7A-6241-4DDD-805B-78604A84F323}_1752227204294.png delete mode 100644 backups/auto-backup-2025-07-09T19-27-47-907Z.json delete mode 100644 backups/auto-backup-2025-07-09T19-28-49-721Z.json delete mode 100644 backups/auto-backup-2025-07-09T22-00-00-184Z.json delete mode 100644 backups/auto-backup-2025-07-10T10-00-00-592Z.json delete mode 100644 backups/auto-backup-2025-07-11T10-00-00-586Z.json create mode 100644 backups/auto-backup-2025-07-11T19-05-01-267Z.json delete mode 100755 build-docker.sh delete mode 100755 deploy-portainer-simple.sh delete mode 100755 deploy-portainer.sh delete mode 100755 deploy-production.sh delete mode 100644 docker-compose-examples.yml delete mode 100644 docker-compose-portainer.yml delete mode 100644 docker-compose.prod.yml delete mode 100755 fix-portainer-image.sh delete mode 100755 init-db.sh delete mode 100644 nginx-regisflow.conf delete mode 100644 portainer-build-stack.yml delete mode 100644 portainer-stack.yml delete mode 100644 postgresql.conf delete mode 100644 server/prod-start.js delete mode 100755 test-production-ready.sh diff --git a/DEPLOY.md b/DEPLOY.md deleted file mode 100644 index 76b473b..0000000 --- a/DEPLOY.md +++ /dev/null @@ -1,115 +0,0 @@ -# Déploiement Docker de RegisFlow - -## 1. Préparer le serveur - -```bash -# Créer le répertoire de déploiement -mkdir -p /opt/regisflow -cd /opt/regisflow - -# Télécharger les fichiers essentiels -wget https://raw.githubusercontent.com/votre-repo/regisflow/main/docker-compose.yml -wget https://raw.githubusercontent.com/votre-repo/regisflow/main/.env.example -cp .env.example .env -``` - -## 2. Configuration (.env) - -Editez le fichier `.env` selon votre environnement : - -```env -# Base de données PostgreSQL -DATABASE_URL=postgresql://regisflow:VotreMotDePasseSecurise@regisflow-db:5432/regisflow -POSTGRES_PASSWORD=VotreMotDePasseSecurise - -# Application -NODE_ENV=production -PORT=5000 -SESSION_SECRET=VotreCleSecreteTresLongueEtSecurisee - -# Timezone -TZ=Europe/Paris - -# Sauvegardes -BACKUP_RETENTION_DAYS=90 -MAX_BACKUP_COUNT=20 -DATA_RETENTION_MONTHS=19 - -# Production (optionnel) -SECURE_COOKIES=true -ALLOWED_DOMAIN=votre-domaine.com -``` - -## 3. Déploiement - -```bash -# Construire et démarrer les services -docker-compose up -d --build - -# Vérifier le statut -docker-compose ps -docker-compose logs -f regisflow - -# Les tables sont créées automatiquement au premier démarrage -``` - -## 4. Vérification - -```bash -# Tester l'application -curl http://localhost:5000/health - -# Voir les logs en temps réel -docker-compose logs -f - -# Vérifier la base de données -docker-compose exec regisflow-db psql -U regisflow -d regisflow -c "\dt" -``` - -## 5. Accès à l'application - -- **URL** : http://votre-serveur:5000 -- **Admin** : admin / admin123 -- **PostgreSQL** : localhost:5433 (depuis l'hôte) - -## 6. Maintenance - -```bash -# Arrêter l'application -docker-compose down - -# Mise à jour -docker-compose pull -docker-compose up -d --force-recreate - -# Sauvegardes manuelles -docker-compose exec regisflow npm run backup - -# Voir l'utilisation des ressources -docker stats -``` - -## 7. Production 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; - } -} -``` - -## 8. Sécurité - -- Changez POSTGRES_PASSWORD -- Changez SESSION_SECRET -- Configurez un firewall -- Activez HTTPS avec Let's Encrypt -- Sauvegardez régulièrement le volume PostgreSQL \ No newline at end of file diff --git a/DOCKER_DEPLOYMENT.md b/DOCKER_DEPLOYMENT.md deleted file mode 100644 index 02d432f..0000000 --- a/DOCKER_DEPLOYMENT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Déploiement Docker pour RegisFlow - -## Problème résolu : Image Docker manquante - -### Le problème -Portainer essayait de télécharger une image `regisflow-regisflow:latest` qui n'existe pas sur Docker Hub. - -### Solution -L'image doit être construite localement avant utilisation. - -## Instructions de déploiement - -### 1. Construction de l'image Docker -```bash -# Méthode 1: Utiliser le script automatique -./build-docker.sh - -# Méthode 2: Construction manuelle -docker build -t regisflow:latest . -``` - -### 2. Démarrage avec Docker Compose -```bash -# Démarrer tous les services -docker-compose up -d - -# Vérifier le statut -docker-compose ps -``` - -### 3. Configuration dans Portainer -1. Utiliser le nom d'image : `regisflow:latest` -2. Ou utiliser la configuration Docker Compose existante -3. L'image sera trouvée localement après construction - -## Vérification du déploiement - -### Vérifier que l'image existe -```bash -docker images | grep regisflow -``` - -### Vérifier les logs -```bash -docker-compose logs -f regisflow -``` - -### Tester la santé de l'application -```bash -curl http://localhost:5000/health -``` - -## Notes importantes -- L'image doit être construite sur le serveur de déploiement -- La base de données PostgreSQL est incluse dans la configuration -- Les volumes sont persistants pour les sauvegardes et données -- Le port 5000 est exposé pour l'application -- Le port 5433 est exposé pour PostgreSQL (pour éviter les conflits) - -## Résolution des problèmes courants - -### Si l'image n'est pas trouvée -1. Vérifier que l'image a été construite : `docker images` -2. Reconstruire si nécessaire : `docker build -t regisflow:latest .` - -### Si le conteneur ne démarre pas -1. Vérifier les logs : `docker-compose logs regisflow` -2. Vérifier la connectivité réseau : `docker network ls` -3. Vérifier les variables d'environnement - -### Si PostgreSQL ne se connecte pas -1. Vérifier que le conteneur DB est en cours d'exécution -2. Vérifier la variable DATABASE_URL -3. Attendre que le healthcheck PostgreSQL passe (30s) \ No newline at end of file diff --git a/PORTAINER_FINAL_SOLUTION.md b/PORTAINER_FINAL_SOLUTION.md deleted file mode 100644 index 7d7dddc..0000000 --- a/PORTAINER_FINAL_SOLUTION.md +++ /dev/null @@ -1,59 +0,0 @@ -# Solution Finale pour Portainer - -## Problème résolu -Le docker-compose.yml a été modifié pour forcer la construction locale et empêcher complètement le téléchargement d'images depuis Docker Hub. - -## Modifications apportées - -### 1. Suppression de la ligne `image:` -- Plus de référence à une image Docker Hub -- Force Portainer à construire localement - -### 2. Ajout de `pull_policy: never` -- Empêche tout téléchargement d'image -- Force l'utilisation de la construction locale - -### 3. Configuration de build explicite -```yaml -build: - context: . - dockerfile: Dockerfile - target: production - args: - - NODE_ENV=production -``` - -## Instructions Portainer - -### Dans Portainer: -1. **Supprimez l'ancienne stack** si elle existe -2. **Créez une nouvelle stack** avec le nom "regisflow" -3. **Copiez le contenu** du docker-compose.yml modifié -4. **Déployez la stack** - -### Portainer construira automatiquement: -- ✅ L'image sera construite depuis le code source -- ✅ Aucun téléchargement depuis Docker Hub -- ✅ Utilisation du réseau nginx_default -- ✅ Volumes persistants conservés - -## Vérification - -Après déploiement, vérifiez: -```bash -# Statut des conteneurs -docker ps | grep regisflow - -# Logs de l'application -docker logs regisflow-app - -# Test de l'application -curl http://localhost:5000/health -``` - -## Accès -- **URL**: http://votre-serveur:5000 -- **Login**: admin / admin123 -- **PostgreSQL**: Port 5433 - -Cette configuration finale devrait résoudre définitivement le problème de téléchargement d'image dans Portainer. \ No newline at end of file diff --git a/PORTAINER_GUIDE.md b/PORTAINER_GUIDE.md deleted file mode 100644 index 0618fd0..0000000 --- a/PORTAINER_GUIDE.md +++ /dev/null @@ -1,104 +0,0 @@ -# Guide de déploiement Portainer pour RegisFlow - -## Problème résolu -L'erreur `regisflow-regisflow:latest` vient du fait que Portainer cherche une image sur Docker Hub qui n'existe pas. - -## Solution complète - -### Étape 1: Construire l'image sur votre serveur - -```bash -# Connectez-vous à votre serveur et allez dans le dossier RegisFlow -cd /chemin/vers/regisflow - -# Construisez l'image Docker -docker build -t regisflow:latest . - -# Vérifiez que l'image est créée -docker images | grep regisflow -``` - -### Étape 2: Créer la Stack dans Portainer - -1. **Ouvrez Portainer** dans votre navigateur -2. **Allez dans "Stacks"** -3. **Cliquez sur "Add stack"** -4. **Donnez un nom** : `regisflow` -5. **Copiez le contenu** du fichier `portainer-stack.yml` -6. **Cliquez sur "Deploy the stack"** - -### Étape 3: Configuration alternative (Container unique) - -Si vous préférez créer un conteneur unique : - -1. **Allez dans "Containers"** -2. **Cliquez sur "Add container"** -3. **Nom** : `regisflow-app` -4. **Image** : `regisflow:latest` -5. **Port mapping** : `5000:5000` -6. **Variables d'environnement** : - ``` - NODE_ENV=production - PORT=5000 - DATABASE_URL=postgresql://regisflow:RegisFlow2024!PostgreSQL@regisflow-db:5432/regisflow - SESSION_SECRET=RegisFlow2024SessionSecretKey1234567890ABCDEF - ``` - -## Script automatique - -Pour simplifier le processus : - -```bash -# Exécutez le script de déploiement -./deploy-portainer.sh -``` - -## Vérification du déploiement - -### Vérifier les conteneurs -```bash -docker ps | grep regisflow -``` - -### Vérifier les logs -```bash -docker logs regisflow-app -``` - -### Tester l'application -```bash -curl http://localhost:5000/health -``` - -## Résolution des problèmes - -### Si l'image n'est pas trouvée -1. Vérifiez que vous êtes sur le bon serveur -2. Reconstruisez l'image : `docker build -t regisflow:latest .` -3. Vérifiez avec : `docker images | grep regisflow` - -### Si Portainer ne trouve pas l'image -1. L'image doit être construite sur le même serveur que Portainer -2. Utilisez exactement le nom : `regisflow:latest` -3. Pas de préfixe `docker.io/library/` - -### Si la base de données ne se connecte pas -1. Vérifiez que PostgreSQL est démarré -2. Vérifiez la variable `DATABASE_URL` -3. Attendez que le health check passe (30-60 secondes) - -## Points importants - -- ✅ L'image doit être construite localement -- ✅ Utilisez `regisflow:latest` (pas `regisflow-regisflow:latest`) -- ✅ PostgreSQL inclus dans la stack -- ✅ Volumes persistants pour les données -- ✅ Health checks configurés -- ✅ Ports : 5000 (app) et 5433 (PostgreSQL) - -## Accès à l'application - -Une fois déployé : -- **URL** : `http://votre-serveur:5000` -- **Connexion** : `admin` / `admin123` -- **Changez le mot de passe** après la première connexion \ No newline at end of file diff --git a/PORTAINER_SOLUTION.md b/PORTAINER_SOLUTION.md deleted file mode 100644 index 34d41df..0000000 --- a/PORTAINER_SOLUTION.md +++ /dev/null @@ -1,153 +0,0 @@ -# Solution Portainer pour RegisFlow - -## Problème identifié -Portainer ne peut pas télécharger l'image `regisflow` car elle n'existe pas sur Docker Hub. Il faut construire l'image depuis le code source. - -## Solution 1: Stack avec build automatique (RECOMMANDÉE) - -### Étapes dans Portainer: - -1. **Allez dans "Stacks"** -2. **Cliquez sur "Add stack"** -3. **Nom de la stack**: `regisflow` -4. **Méthode de build**: Repository -5. **Repository URL**: Collez l'URL de votre dépôt Git ou utilisez "Upload" -6. **Compose file**: Copiez le contenu de `portainer-build-stack.yml` -7. **Cliquez sur "Deploy the stack"** - -### Contenu à copier dans Portainer: - -```yaml -version: '3.8' - -services: - regisflow-db: - image: postgres:15-alpine - container_name: regisflow-db - environment: - POSTGRES_DB: regisflow - POSTGRES_USER: regisflow - POSTGRES_PASSWORD: RegisFlow2024!PostgreSQL - volumes: - - postgres_data:/var/lib/postgresql/data - ports: - - "5433:5432" - restart: unless-stopped - healthcheck: - test: ["CMD-SHELL", "pg_isready -U regisflow -d regisflow"] - interval: 30s - timeout: 10s - retries: 5 - start_period: 30s - - regisflow: - build: - context: . - dockerfile: Dockerfile - target: production - container_name: regisflow-app - depends_on: - regisflow-db: - condition: service_healthy - environment: - NODE_ENV: production - PORT: 5000 - DATABASE_URL: postgresql://regisflow:RegisFlow2024!PostgreSQL@regisflow-db:5432/regisflow - SESSION_SECRET: RegisFlow2024SessionSecretKey1234567890ABCDEF - TZ: Europe/Paris - volumes: - - backup_data:/app/backups - - logs_data:/app/logs - ports: - - "5000:5000" - restart: unless-stopped - healthcheck: - test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:5000/health || exit 1"] - interval: 30s - timeout: 15s - retries: 3 - start_period: 90s - -volumes: - postgres_data: - backup_data: - logs_data: -``` - -## Solution 2: Construction manuelle puis image - -Si la solution 1 ne fonctionne pas: - -### Étape A: Sur votre serveur -```bash -# Téléchargez les fichiers RegisFlow sur votre serveur -# Puis construisez l'image: -docker build -t regisflow:latest . - -# Vérifiez que l'image existe: -docker images | grep regisflow -``` - -### Étape B: Dans Portainer -Utilisez ensuite le fichier `portainer-stack.yml` original avec `image: regisflow:latest` - -## Solution 3: Docker Hub personnel (avancée) - -Si vous avez un compte Docker Hub: - -```bash -# Taguez l'image avec votre nom d'utilisateur -docker tag regisflow:latest votre-username/regisflow:latest - -# Poussez vers Docker Hub -docker push votre-username/regisflow:latest -``` - -Puis utilisez `votre-username/regisflow:latest` dans Portainer. - -## Vérification du déploiement - -### Dans Portainer: -1. Vérifiez que la stack est "Running" -2. Consultez les logs des conteneurs -3. Vérifiez les health checks - -### Accès à l'application: -- URL: `http://votre-serveur:5000` -- Login: `admin` -- Mot de passe: `admin123` - -### Tests de connectivité: -```bash -# Test de santé de l'application -curl http://localhost:5000/health - -# Vérification PostgreSQL -docker exec regisflow-db pg_isready -U regisflow -d regisflow -``` - -## Résolution des problèmes courants - -### Stack en échec de build: -1. Vérifiez que tous les fichiers sont présents -2. Consultez les logs de build dans Portainer -3. Vérifiez les droits d'accès au Dockerfile - -### Conteneur qui ne démarre pas: -1. Vérifiez les logs du conteneur -2. Vérifiez les variables d'environnement -3. Attendez que PostgreSQL soit prêt (health check) - -### Application inaccessible: -1. Vérifiez que le port 5000 est ouvert -2. Vérifiez les logs de l'application -3. Testez le health check: `/health` - -## Points importants - -✅ **Utilisez la Solution 1 avec build automatique** -✅ **Tous les fichiers sources doivent être disponibles pour Portainer** -✅ **PostgreSQL démarre en premier (health check)** -✅ **Volumes persistants pour les données** -✅ **Réseau dédié pour la communication inter-conteneurs** -✅ **Health checks configurés pour surveillance automatique** \ No newline at end of file diff --git a/PRODUCTION.md b/PRODUCTION.md deleted file mode 100644 index b5e58fd..0000000 --- a/PRODUCTION.md +++ /dev/null @@ -1,167 +0,0 @@ -# Guide de Mise en Production RegisFlow - -## Configuration rapide pour production - -### 1. Télécharger et préparer - -```bash -# Créer le dossier de production -mkdir /opt/regisflow && cd /opt/regisflow - -# Télécharger les fichiers nécessaires -curl -O https://raw.githubusercontent.com/votre-repo/regisflow/main/docker-compose.yml -curl -O https://raw.githubusercontent.com/votre-repo/regisflow/main/Dockerfile -curl -O https://raw.githubusercontent.com/votre-repo/regisflow/main/docker-entrypoint-simple.sh -``` - -### 2. Configuration environnement - -Créer le fichier `.env` : - -```env -# === OBLIGATOIRE - À MODIFIER === -POSTGRES_PASSWORD=VotreMotDePasseSuperSecurise123! -SESSION_SECRET=VotreCleSessionTresLongueEtSecurisee456789ABCDEF - -# === APPLICATION === -NODE_ENV=production -PORT=5000 -TZ=Europe/Paris - -# === SÉCURITÉ === -SECURE_COOKIES=true -DATA_RETENTION_MONTHS=19 - -# === SAUVEGARDES === -BACKUP_RETENTION_DAYS=90 -MAX_BACKUP_COUNT=20 -``` - -### 3. Déploiement immédiat - -```bash -# Option A: Démarrer avec Docker Compose -docker-compose up -d --build - -# Option B: Utiliser le script automatisé -chmod +x deploy-production.sh -./deploy-production.sh - -# Vérifier le fonctionnement -curl http://localhost:5000/health - -# Voir les logs -docker-compose logs -f regisflow -``` - -### 3.1 Initialisation manuelle de la base (si nécessaire) - -```bash -# Si les tables ne se créent pas automatiquement -chmod +x init-db.sh -./init-db.sh - -# Ou avec une DATABASE_URL spécifique -./init-db.sh "postgresql://regisflow:password@localhost:5433/regisflow" -``` - -### 4. Accès initial - -- **URL** : http://votre-serveur:5000 -- **Compte admin** : `admin` / `admin123` -- **Base de données** : accessible sur port 5433 - -### 5. Nginx reverse proxy (recommandé) - -Ajouter à votre configuration Nginx : - -```nginx -server { - listen 80; - server_name votre-domaine.com; - - client_max_body_size 10M; # Pour les photos - - 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; - proxy_connect_timeout 60s; - proxy_send_timeout 60s; - proxy_read_timeout 60s; - } -} -``` - -### 6. Maintenance courante - -```bash -# Voir l'état des services -docker-compose ps - -# Redémarrer l'application -docker-compose restart regisflow - -# Mise à jour -docker-compose down -docker-compose up -d --build --force-recreate - -# Sauvegardes manuelles -docker-compose exec regisflow node -e "require('./dist/backup-scheduler.js').createAutomaticBackup()" - -# Accès aux données -docker-compose exec regisflow-db psql -U regisflow -d regisflow -``` - -### 7. Monitoring et logs - -```bash -# Logs en temps réel -docker-compose logs -f - -# Utilisation des ressources -docker stats regisflow-app regisflow-db - -# Espace disque des volumes -docker system df -``` - -## Fonctionnalités automatiques en production - -✅ **Sauvegardes automatiques** : Toutes les 12h (00:00 et 12:00) -✅ **Purge des données** : Automatique après 19 mois (1er de chaque mois) -✅ **Health checks** : Surveillance continue des services -✅ **Gestion des sessions** : Sessions PostgreSQL sécurisées -✅ **Optimisation mémoire** : Configuration pour serveurs de production - -## Sécurité production - -- [ ] Modifier `POSTGRES_PASSWORD` et `SESSION_SECRET` -- [ ] Configurer firewall (ports 80, 443, 22 uniquement) -- [ ] Activer HTTPS avec certificats SSL -- [ ] Sauvegardes régulières vers stockage externe -- [ ] Monitoring des logs d'erreurs -- [ ] Changer le mot de passe admin par défaut - -## Support et dépannage - -**Problèmes courants :** - -1. **Application inaccessible** : Vérifier `docker-compose ps` et les logs -2. **Erreur base de données** : Vérifier que PostgreSQL est démarré -3. **Photos ne se sauvegardent pas** : Vérifier les permissions du volume -4. **Performance lente** : Augmenter les limites mémoire Docker - -**Commandes de diagnostic :** - -```bash -# État complet du système -docker-compose ps && docker-compose logs --tail=50 -docker system df && df -h - -# Test complet de l'application -curl -v http://localhost:5000/health -curl -v http://localhost:5000/api/auth/default-credentials-status -``` \ No newline at end of file diff --git a/attached_assets/Pasted--Backup-stats-1-users-1-stores-0-sales-1-10-47-AM-express-GET-api-auth-me-401-in-2ms--1752102767512_1752102767512.txt b/attached_assets/Pasted--Backup-stats-1-users-1-stores-0-sales-1-10-47-AM-express-GET-api-auth-me-401-in-2ms--1752102767512_1752102767512.txt deleted file mode 100644 index a485b81..0000000 --- a/attached_assets/Pasted--Backup-stats-1-users-1-stores-0-sales-1-10-47-AM-express-GET-api-auth-me-401-in-2ms--1752102767512_1752102767512.txt +++ /dev/null @@ -1,42 +0,0 @@ -📊 Backup stats: 1 users, 1 stores, 0 sales - -1:10:47 AM [express] GET /api/auth/me 401 in 2ms :: {"error":"Authentication required"} - -1:10:47 AM [express] GET /api/auth/me 401 in 1ms :: {"error":"Authentication required"} - -1:10:47 AM [express] GET /api/auth/default-credentials-status 200 in 331ms :: {"showDefaultCredentia… - -1:11:02 AM [express] POST /api/auth/login 200 in 513ms :: {"user":{"id":1,"username":"admin","email"… - -1:11:03 AM [express] GET /api/auth/me 200 in 71ms :: {"id":1,"username":"admin","email":"admin@examp… - -1:11:03 AM [express] GET /api/auth/me 304 in 9ms :: {"id":1,"username":"admin","email":"admin@exampl… - -1:11:03 AM [express] GET /api/auth/me 304 in 7ms :: {"id":1,"username":"admin","email":"admin@exampl… - -1:11:03 AM [express] GET /api/auth/me 304 in 12ms :: {"id":1,"username":"admin","email":"admin@examp… - -1:11:03 AM [express] GET /api/admin/stores 200 in 30ms :: [{"id":1,"name":"Magasin Principal","addre… - -1:11:11 AM [express] GET /api/admin/users 200 in 9ms :: [{"id":1,"username":"admin","email":"admin@e… - -1:11:11 AM [express] GET /api/admin/backup/stats 200 in 5ms :: {"totalBackups":1,"backupDirectory":"… - -1:11:11 AM [express] GET /api/admin/purge/stats 200 in 7ms :: {"totalSales":0,"oldSales":0,"cutoffDa… - -1:11:36 AM [express] PUT /api/admin/users/1 200 in 410ms :: {"id":1,"username":"admin","email":"mich… - -1:11:36 AM [express] GET /api/admin/users 403 in 4ms :: {"error":"Insufficient permissions"} - -1:11:41 AM [express] GET /api/admin/purge/stats 403 in 5ms :: {"error":"Insufficient permissions"} - -1:11:41 AM [express] GET /api/admin/backup/stats 403 in 20ms :: {"error":"Insufficient permissions"} - -1:11:50 AM [express] PUT /api/admin/users/1 403 in 4ms :: {"error":"Insufficient permissions"} - -1:12:08 AM [express] PUT /api/admin/users/1 403 in 38ms :: {"error":"Insufficient permissions"} - -1:12:11 AM [express] GET /api/admin/purge/stats 403 in 6ms :: {"error":"Insufficient permissions"} - -1:12:11 AM [express] GET /api/admin/backup/stats 403 in 6ms :: {"error":"Insufficient permissions"} - diff --git a/attached_assets/Pasted--Node-js-18-compatibility-fix-applied-file-app-node-modules-neondatabase-serverless-index-mj-1752100176873_1752100176874.txt b/attached_assets/Pasted--Node-js-18-compatibility-fix-applied-file-app-node-modules-neondatabase-serverless-index-mj-1752100176873_1752100176874.txt deleted file mode 100644 index 80834d9..0000000 --- a/attached_assets/Pasted--Node-js-18-compatibility-fix-applied-file-app-node-modules-neondatabase-serverless-index-mj-1752100176873_1752100176874.txt +++ /dev/null @@ -1,124 +0,0 @@ -✅ Node.js 18 compatibility fix applied - -file:///app/node_modules/@neondatabase/serverless/index.mjs:1345 - -o?t(o):n(u)},"cb"),s=new r(function(o,u){n=o,t=u}).catch(o=>{throw Error.captureStackTrace( - - ^ - - ErrorEvent { - - [Symbol(kTarget)]: WebSocket { - - _events: [Object: null prototype] { - - error: [Function: onError] { - - [Symbol(kIsForOnEventAttribute)]: false, - - [Symbol(kListener)]: [Function (anonymous)] - - }, - - message: [Function: onMessage] { - - [Symbol(kIsForOnEventAttribute)]: false, - - [Symbol(kListener)]: [Function (anonymous)] - - }, - - close: [Function: onClose] { - - [Symbol(kIsForOnEventAttribute)]: false, - - [Symbol(kListener)]: [Function (anonymous)] - - }, - - open: [Function: onOpen] { - - [Symbol(kIsForOnEventAttribute)]: false, - - [Symbol(kListener)]: [Function: handleWebSocketOpen] - - } - - }, - - _eventsCount: 4, - - _maxListeners: undefined, - - _binaryType: 'arraybuffer', - - _closeCode: 1006, - - _closeFrameReceived: false, - - _closeFrameSent: false, - - _closeMessage: Buffer(0) [Uint8Array] [], - - _closeTimer: null, - - _errorEmitted: true, - - _extensions: {}, - - _paused: false, - - _protocol: '', - - _readyState: 3, - - _receiver: null, - - _sender: null, - - _socket: null, - - _bufferedAmount: 0, - - _isServer: false, - - _redirects: 0, - - _autoPong: true, - - _url: 'wss://regisflow-db/v2', - - _req: null, - - [Symbol(kCapture)]: false - - }, - - [Symbol(kType)]: 'error', - - [Symbol(kError)]: Error: connect ECONNREFUSED 172.22.0.2:443 - - at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1555:16) { - - errno: -111, - - code: 'ECONNREFUSED', - - syscall: 'connect', - - address: '172.22.0.2', - - port: 443 - - }, - - [Symbol(kMessage)]: 'connect ECONNREFUSED 172.22.0.2:443' - -} - -Node.js v18.20.8 - - - - - \ No newline at end of file diff --git a/attached_assets/_regisflow-app_logs (1)_1752101017149.txt b/attached_assets/_regisflow-app_logs (1)_1752101017149.txt deleted file mode 100644 index 1270ab2..0000000 --- a/attached_assets/_regisflow-app_logs (1)_1752101017149.txt +++ /dev/null @@ -1,91 +0,0 @@ - at file:///app/dist/index.js:1081:5 - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) -Node.js v18.20.8 -🚀 Démarrage de RegisFlow (mode simplifié)... -📡 Attente de la base de données... -✅ PostgreSQL prêt! -📦 Création des tables de la base de données... -Reading config file '/app/drizzle.config.ts' -Using 'pg' driver for database querying -[⣷] Pulling schema from database... -[⣯] Pulling schema from database... -[✓] Pulling schema from database... -[i] No changes detected -✅ Tables créées avec succès -✅ Base de données configurée -🎯 Démarrage de RegisFlow... -✅ Node.js 18 compatibility fix applied -file:///app/dist/index.js:1032 - throw new Error( - ^ -Error: Could not find the build directory: /app/public, make sure to build the client first - at serveStatic (file:///app/dist/index.js:1032:11) - at file:///app/dist/index.js:1081:5 - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) -Node.js v18.20.8 -🚀 Démarrage de RegisFlow (mode simplifié)... -📡 Attente de la base de données... -✅ PostgreSQL prêt! -📦 Création des tables de la base de données... -Reading config file '/app/drizzle.config.ts' -Using 'pg' driver for database querying -[⣷] Pulling schema from database... -[⣯] Pulling schema from database... -[✓] Pulling schema from database... -[i] No changes detected -✅ Tables créées avec succès -✅ Base de données configurée -🎯 Démarrage de RegisFlow... -✅ Node.js 18 compatibility fix applied -file:///app/dist/index.js:1032 - throw new Error( - ^ -Error: Could not find the build directory: /app/public, make sure to build the client first - at serveStatic (file:///app/dist/index.js:1032:11) - at file:///app/dist/index.js:1081:5 - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) -Node.js v18.20.8 -🚀 Démarrage de RegisFlow (mode simplifié)... -📡 Attente de la base de données... -✅ PostgreSQL prêt! -📦 Création des tables de la base de données... -Reading config file '/app/drizzle.config.ts' -Using 'pg' driver for database querying -[⣷] Pulling schema from database... -[⣯] Pulling schema from database... -[✓] Pulling schema from database... -[i] No changes detected -✅ Tables créées avec succès -✅ Base de données configurée -🎯 Démarrage de RegisFlow... -✅ Node.js 18 compatibility fix applied -file:///app/dist/index.js:1032 - throw new Error( - ^ -Error: Could not find the build directory: /app/public, make sure to build the client first - at serveStatic (file:///app/dist/index.js:1032:11) - at file:///app/dist/index.js:1081:5 - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) -Node.js v18.20.8 -🚀 Démarrage de RegisFlow (mode simplifié)... -📡 Attente de la base de données... -✅ PostgreSQL prêt! -📦 Création des tables de la base de données... -Reading config file '/app/drizzle.config.ts' -Using 'pg' driver for database querying -[⣷] Pulling schema from database... -[⣯] Pulling schema from database... -[✓] Pulling schema from database... -[i] No changes detected -✅ Tables créées avec succès -✅ Base de données configurée -🎯 Démarrage de RegisFlow... -✅ Node.js 18 compatibility fix applied -file:///app/dist/index.js:1032 - throw new Error( - ^ -Error: Could not find the build directory: /app/public, make sure to build the client first - at serveStatic (file:///app/dist/index.js:1032:11) - at file:///app/dist/index.js:1081:5 - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) -Node.js v18.20.8 diff --git a/attached_assets/_regisflow-app_logs_1752100690824.txt b/attached_assets/_regisflow-app_logs_1752100690824.txt deleted file mode 100644 index 1e204fd..0000000 --- a/attached_assets/_regisflow-app_logs_1752100690824.txt +++ /dev/null @@ -1,95 +0,0 @@ - at async DatabaseStorage.getAllUsers (file:///app/dist/index.js:187:12) - at async DatabaseStorage.initializeDefaults (file:///app/dist/index.js:258:27) - at async registerRoutes (file:///app/dist/index.js:510:22) - at async file:///app/dist/index.js:1071:18 { - length: 105, - severity: 'ERROR', - code: '42P01', - detail: undefined, - hint: undefined, - position: '139', - internalPosition: undefined, - internalQuery: undefined, - where: undefined, - schema: undefined, - table: undefined, - column: undefined, - dataType: undefined, - constraint: undefined, - file: 'parse_relation.c', - line: '1392', - routine: 'parserOpenTable' -} -Node.js v18.20.8 -🚀 Démarrage de RegisFlow (mode simplifié)... -📡 Attente de la base de données... -✅ PostgreSQL prêt! -✅ Base de données configurée -🎯 Démarrage de RegisFlow... -✅ Node.js 18 compatibility fix applied -/app/node_modules/pg-pool/index.js:45 - Error.captureStackTrace(err) - ^ -error: relation "users" does not exist - at /app/node_modules/pg-pool/index.js:45:11 - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - at async DatabaseStorage.getAllUsers (file:///app/dist/index.js:187:12) - at async DatabaseStorage.initializeDefaults (file:///app/dist/index.js:258:27) - at async registerRoutes (file:///app/dist/index.js:510:22) - at async file:///app/dist/index.js:1071:18 { - length: 105, - severity: 'ERROR', - code: '42P01', - detail: undefined, - hint: undefined, - position: '139', - internalPosition: undefined, - internalQuery: undefined, - where: undefined, - schema: undefined, - table: undefined, - column: undefined, - dataType: undefined, - constraint: undefined, - file: 'parse_relation.c', - line: '1392', - routine: 'parserOpenTable' -} -Node.js v18.20.8 -🚀 Démarrage de RegisFlow (mode simplifié)... -📡 Attente de la base de données... -✅ PostgreSQL prêt! -✅ Base de données configurée -🎯 Démarrage de RegisFlow... -✅ Node.js 18 compatibility fix applied -/app/node_modules/pg-pool/index.js:45 - Error.captureStackTrace(err) - ^ -error: relation "users" does not exist - at /app/node_modules/pg-pool/index.js:45:11 - at process.processTicksAndRejections (node:internal/process/task_queues:95:5) - at async file:///app/node_modules/drizzle-orm/node-postgres/session.js:83:22 - at async DatabaseStorage.getAllUsers (file:///app/dist/index.js:187:12) - at async DatabaseStorage.initializeDefaults (file:///app/dist/index.js:258:27) - at async registerRoutes (file:///app/dist/index.js:510:22) - at async file:///app/dist/index.js:1071:18 { - length: 105, - severity: 'ERROR', - code: '42P01', - detail: undefined, - hint: undefined, - position: '139', - internalPosition: undefined, - internalQuery: undefined, - where: undefined, - schema: undefined, - table: undefined, - column: undefined, - dataType: undefined, - constraint: undefined, - file: 'parse_relation.c', - line: '1392', - routine: 'parserOpenTable' -} -Node.js v18.20.8 diff --git a/attached_assets/image_1752102740540.png b/attached_assets/image_1752102740540.png deleted file mode 100644 index 398133433a1641d19b29977839efa2313c3e7472..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4503 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 rhLuJ+0ZEXK>Ze%VJ)j0|0ES;FeYAJQMx}+=mx| diff --git a/attached_assets/image_1752103258756.png b/attached_assets/image_1752103258756.png deleted file mode 100644 index 29cefc6b41e9837501a6fccdc48cd33a87fc7711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5750 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 bGy7~fb)=rwZcqf+D+UbyGSG6} diff --git a/attached_assets/image_1752103355483.png b/attached_assets/image_1752103355483.png deleted file mode 100644 index c98b3754f01f41d1186e451cca88d76e9f4dedf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62118 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 fZvH87QrcORi{7xBLUl0@$z diff --git a/attached_assets/image_1752104758764.png b/attached_assets/image_1752104758764.png deleted file mode 100644 index 9d059e82d7a057efcf1fecd9722b673df8923eca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8683 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 H(>MPCjvc}( diff --git a/attached_assets/image_1752159543446.png b/attached_assets/image_1752159543446.png deleted file mode 100644 index e6e9009887fbf87d14fc7c38ee4ce476bbff70a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26233 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 z z_j1Zd%L+j7QkTGOrUE-nx}Gyt=ED_RLEnG^Qf@Uf!-&P-3wGSHvzvqb1iWUvFMC1)BN zfGr{xROFZDO_U$Aw=htc!FHchQdk9Oka{v}A|W;R)7PDmGJWT}2anDJe{x6z$FJRP zM)045t+@5yib_iG;Eg=_ejFTme07d!~7je67SL2`T+mbm~-?8v2U(M?+ zx1KPdi(cSuAW>M@(~wc&V=1%hF#j-IaO+m^g@yhj%q|6e(p9r zIzE9S%o}>(b~_Y1Vys(ND7kHgl-KxQPL*C=i@!T+)$UA^jFO#Sfx|BFE16OeyVy^b z{0iV#Wy$Wvi<6HZjtg2hAR2m3+GC_AcNhZHLMn{N9UKpx`U zxu7{c;p-_u&VSBdtKT=@Ky#?X8IMj`x83CPo4ws|pLuU3@z?=D-J-xfvZZ*pK@2{H z?XdQs#dF+Y^$>VS&A+?r)k(6X`C)ZCa@_Zv*#{k0?B&VL|JT7f20U^g$Ai)9u7|cC zZWxLuJ-oVuv>%{(5k}R0N>{PhaZPqOoHluyp!Y1Me}}VvFZO<`=keXZCHGSWZ;b*; zHTahY8Mp3}&V?RYL^!RczJDxo#k7P6Od{VTyY9iW6kNCHm~Qjez={I z^?J&CXz?pBr}F~)^D|3{ttlRfwul{xWq+i++ z`yBeW09^j-yv4qENBa-2y+&@gH)Bt=hzH((UaYKEM$&7*+esmg4)p&Vp6^O7@P20C zxFJ!*8-d$l_7qfKuCA=Vx36T-UV9O1git?uAFh>jo1T4TC#7&Uql0s(?ep4|)bLb8 z29yfKp1Xm;dg*n0=u$A426p~HV8sq)r^$l0m8;^QzuF_!3IT@Rm0!zx+FoEibr%nL ztfV@B9k}S6gTdyrZr~2b26AmHns2{|@1xq03Hb{$nf$sRSvPM8Nhs5rXY-8#qT=f> zTfe+3-?5l7^Nq_)%>GgR{boQaUSz=P{Wee9Gg4dGE5h`S*IxzAOk8a@$^3q8K_Pkb zZ;-b2_Wx=D`Tt#}t|Sx8rakj+78eZBNTjcmrvC4@p1A+N--dud-V!s-)@^hoBLrR- PgCZlL_@ex|@%#S)n>z*6 diff --git a/attached_assets/image_1752159815281.png b/attached_assets/image_1752159815281.png deleted file mode 100644 index 4ecbab63d341628c09991d89404588f607d8d470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36010 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 diff --git a/attached_assets/image_1752160018849.png b/attached_assets/image_1752160018849.png deleted file mode 100644 index 92e8b6a7b6067b401efc2ae1765950e283cdf49f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28603 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 bzPy~j<}+IS_Y-j79?^|!s#h}=?)&{8>RZ@8 diff --git a/attached_assets/{22E4EA7A-6241-4DDD-805B-78604A84F323}_1752227204294.png b/attached_assets/{22E4EA7A-6241-4DDD-805B-78604A84F323}_1752227204294.png deleted file mode 100644 index 74cfc084db207f36e166d5225a33b706d4d1ebdd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19646 zcmc(H2UJsQyC&z@m10HdN5ujPsPwKPA|fEY2NCI=5Rf3?v4Dz#B0Ug#4FROLfQo?B z(2_`iAR;Y+078f)l=(KEbMJrG+&llQJO9jNEj1=Pdw=_T+w(l{n>@d*r^U6Ge=i3I z2bcDZYla*g+o!;D{O+CL?}omLRq)Sma6_%D97WxNGvGhlov!F!;ox`|wQtRC2l)RU z?;93y4i4@n=+AGhUU~O8IBpqfU%O&_A2v4et!0tPG4**O@1gI3i$}UHa5cre z>xhw6)U_DQBHo*b$xf8EP<(6Caus9CO!hskbIvWfkH2o_n(onaXJk+6z{{Tgw)=GcM48+YarE3hE!4m_OVgst!hvpe=XSQ25M zZDElp>azB85&8X%)C@3wxWaHa*id^lJS@A`GGD51M=j(^Z4rPOW>kN{W zzR03*=$g-t9Xn=hH(BwFfdlvn-x;!7G2!8F+scF4{=NOYHFKTIrWEt9X68zI|<%P>GC=eg<>(?dr&;4MJZo&>6 zIAGZrf@2tC{OQB_dk&p;9;);}E_~Q!#d#>o@56@=d%3tw%*_)R1NsFS8CRWBgDc(T zPw85>f46&xvH}fgDAS?Z*xf?U~TdP?ZSI+XLPsH02sRRsS zDkXsWai3HEv8{Q`+xg>@JxMBorPrf`u?QM* zCK=xC!rOD?$dMW7a~@SAIpyUtsqofC+ z9VzYTjpbbRHpemxeGGi6n>t)m#wZbWX?e*PO_B|{Sr;&Gia=D<`pxv+#YKrS7!1~Y z=qBw@r_l3n|!6r&O6#x&KZ`^Fqule%D9C8n7r*4&RLmS?MHSpX^ z($XeYR&J_L@N;ndA>^u11$@xP`@;?@5sPBPh`M}uw8OI6I~`m<->S+}X>)C<0vtih z*D$?(I}L2N+xO3JknFiCS?{lx2i@hk1QmLQN9jp!MZL{OZO?1hjz=m#Sdr@J=;;66 z_IAQs;a=I`;Uh<~mFd+Qv9Ynyq=VfcjJlF!b;icV_!WJ#_U_v!>-+r%gFa%#$HzAr zY-DJ-JXba9N+>XqAZkY6ym`}a$fHV3T>PdSN|!raql$vWK)wcyCoU0Q><6~=Hi#1zSOcM_CoNkizQ75O zc5GDN_&M%dV;!B<-hOk$r&Vb3Sj3ALPR#9Ac3PqQ@ktDG; zb*3OsvcA97KYZZ8@fwW`<@tIeC^twp{JgskT(%!!X|Nsd17v1qPYdXP%!y_hd$?6*L61so*oDJ!g{BK7YO;VP0|>ud?*=#L1Ig zwf6-JHxLMf<6wQgicQd51;2Vo{l?E$b=P?cF6olPi%O5794gfnGMP@?`QAc{vU0x} zL %GN&l~x+U1mWnjUZ(KWf&j*dBc>g#?45c5#ZJQ<~uQ8gN31yX^rrsmTE42A(^ zFR8}0(hvs57790VLvWq&{ja}u5P}2IY^YZB>#JjT?BhKvFK-5AWEc!>QIy?K^Yzg_ z%Q@6z!eEm$1zMk+fLDKxuA3Z1Wo!YsO8#3tC2gH}NrHWpYL3TH|~Q;H^b{pkDY9 zOw97r(%vI2wwz=CjqA!DgQd-{?`7rYTInb5RZ6CW?&l!AymASC4RV5v(Ul*^VE zN6v9-w`lOF-h*`*#WzPBMYR?b6ucZ=o0PwP|9s6lBtf3LZf~C%h{ak}@h>hew(K}+eaG0u zBr#QyUOoQOrp`ZcLKr!HTqFA3-R8Yb3k93%o2&X|w@gf8eL%D)dVH^mYZ|*?inVkA ztCo?I<0o0eU)hxnzT{E+`Th$osOn8j%)R6XKiaO_*`-_LG&E4^i{$lD3WD7BAhWlC z{Pjw@TcN3B(7k0K-{@6sty0s3FJB{jWd7y%@AvGP^pQ!Y`C6J}nS}cKve8LV(NEQr zNp3Hp<1TP!78P|@&z5#PK$m4tMZSC~15&_dA}M$#J09#52%+y)UZBVm3%#yK3c9Sk z>X^7xRQ>IRDQy_N=vX%Rpao@jEUaVV$Le}f9sLsfgY%e$YU3yf+R22rwzi804;^}? zzBa})c@e(^3S;Nzjt=Q=Ri^dH)2CYsqk2E$euJ!j`A$X9WU`YOhFSV)<;Mf!Xz3RX z**ot!np<0SqLcMr z2a0XgmjdR;!R4bx>qd&6J=+b=gOXBn&X)v%Xj$u*FIn^b;HlH6sXxb~p!8`19GAsH zrqb9(;F+u&vD|#K46jyau|7UNPG}4bZNqJsRaCSHv&*ZkwS4#P9h7Rzea5dt=K%P_ z#NWU2(c{Nm_^Pa;B0VUI!KX3cJk!OY>zGM=suWlTE{G{EEe$SU@ggcpKHf)d;r+IP z;$ky^h=5OLfa}}bAA4FlG#6dR70xZ>ii>Sq8g_7SP@2hl+ew2V2qw`%mC0H`>>LTi ziu3&ar7yJzjALg)`dfW9i{9Q|1Jv(sn9(j(4U%S&! zHPcANW(Edt9zA;G#~_%wf&9a-a=&D?H1aXy%vS9Ebg58Ij);gbDu&_8LGGpH%YoXO zf@Dy$tE&}g`SxK=W49sHQ}R7zu<0eAG;|(d3m6i_31iSHRqXij50=Yk?8^paf>zu? z7;BnY`#j~9f)yUpS1~AV+^DU{ivpEbZ*_H5{QUU=@DVJZwBz(EdCF^1Svk3ah6dQl z>o0pi1Q!D=lbQ;WEQB%SC(3)| z!?oPMlw5&6&z^5AMtRn1Z?57)W!#A8-QGR^vAw#?vCGx86=aO7z=TN(J{i7nIHE(M zDj|qVjWwNliL(j$3$E|~V~%@DbS5K0vX5jNI#>2Q*a~Y|anm+*y+X2f`UEXM)%x1C zCweN2*CwW>+yF?J^oj4t#;b2yzj^b9I#gARcj6BJ_U$fisau&fAr+dxOXR`rqc(nT zASX#Hz*=H9YY{ZE$!1vCP6CNU`*cWuKz(D8CwO%tp4yik!7E{z1>D_j(ebXmeT8%H z2?mX%4_1PcbN`Z-mv(rSuG?C4p;VbkJH=N*>@9ci9v3Dxx zR^kcmS|%mPD*352@PIC~>JZXA+HW+NsSP9TE{BS?kB<+u_c{8hMe(*F79e92ApoxZ z_H+g7TZD!~)zE~WQicDVWfw|bf8SBb0WSIBuZJEz4GSv>V$#X)?89r`g@QzgM~J#m z2l8J;MD!EPZ0C$NCpzM*FdLehn*6e^F_T@WToNoucWJT8O_oQ6`EGk#V?&Ef-pf|Dz#pU*` z+_Z^cYj~F|m0W>Y9WKVLBtg~HCUl*lCgtH=3@o9Wc&WK?X`MMbTG;IYP#5d5)* z%n86G0&s%_#^%uIM$YW4JJ+!bX&Pgvwsv2ko?9$g;L^Qkj@`-mpiVuFrYhym6z)cH_slb=^o8k^KC85X@12fcZ`X6xS9*;W0dhoz2yO^_Xf!D(`nQc+e__MWO}1@{Z@U<=f6M3`txve0 z!lV6~xa6Gy(u)qt9|IuTt)bVCM#QoJdS`r#kh)2K?*O=xdb_)fpfVJ@DF~tklw{Oa zzrVF-H6PzP)z>L((^#^ogl&VhzRKbg@ZKSsn0DXiHz%P4>D-xck!bWY5tEnK15$O~ z^t3Z1Fpx{^9-{*%`Q}C&ZK1G&$f3nwVuN?5!uhe}RsaxV5))k-f-haX2)MtCM~MB| zkPuf_S3kTe(|KcU6|le5Ixhvo)G_7B^7s(ec`?proRTEJZy^m zf1|Mc>ouEyaz+SCG45EI4BTu!5++U+Z7Q+Q|4WEzIZSHK*%-l|BG146SW|dH1Hq6xZRY82u)2lcWONd)H&$!)%hr`TrAYK?r1j4IY7Y-hH0uC6Z-X@ce$^>YkRv=#>kj; zaOUAYy8af{xf@#L!_Ia$AL+-HX+wRiiU58xp~>11AS8*GiOwy`3Z))h+NFV%i7N z=iDAW>-j?!0k?HfNhpLH)>-Oreutq{FJq>-h|>oQ_*GBbOzjpZTz>w1auqrf?iPJ% zDmBZ=Q#ZOS1<$sJ4uFoO!FNvgm^reig4a(r&pcM9jfC%X{qRz>S#uDZ%Y%x1>9e)V z3;lbht5()cxR9a2iIlGM{pfYcSI53sgjS1oTNc`&Yio+t9?V{QC49g^)#1gAt67$` zxy^~I12{L@Z*4!zYG-g-JE{37_RZ+pfC@~ISzWT-2kJp#cZrZsHR~_X)FZT>rs7#c zJe^y&CeMB@;_;IF&bP=X)Eu3lv!Pxo!my;`kB0I1)uwz^`(KD*yWZudnxxw6xQ)?+ zBaC5gRkr_|0vbQzOvBp>^SV!3Lr192>+dL*Mj2(EgBcz3UBs1-mNXZUi*Js<@C`dF zTJ7RV0=Xyv^m;DI(utdtJXgZ|!EVxvbMo-ObO6(l zR;yJdo}1Q!WReJ?OsU4HmG?Mh!!MGK8qkUMV`ikZcNX-_ zchhrb;#Y2a+F?%*Z{niCt>NRDJz}lO4m|H%LQNjWg_LXU+px)d8~u?n)p1ZJPe0+& zV|Vdl*PbBTn3>MwHircQ@5J5KyYh+`XH}?tX4%+66KBl`J6Nk+?!OemrB5&X*r)VL z7au2T<9oflNKxuK?yexvGRZJ=%yhe5H;-6^RI8jxjlNhes-E*-ul*(N+!=D|(_?XhVH?7?-!WXmx(%%6`;|l;e&z z_3QLm&srAg;)|%#b7%ANx#A1mT{W~>OAdQ#r_0YG_V5rl3U+#Q6&tv2?#5NrUW4;a zRgia?ZlI3`1iYfxUNShTPtRD;yHZf#F;JHpKeG}4Lk4**hMwGG^fVj6ACH#M=p$s_ zU9N-IimA0rqOdb)uTay1){R)NI4McE3tlZgOjsm6?7GWboNpI0BwXB;KbZPGc>UeX zppuxFbtr#o+MlgY+w7{^OuT-s7p}d0ZV};6&1$fdsHBC>pF@mh!Ma+$epz<6Q5C;# z7DX+h+swJjaC%Tou|Y?t#B$TFH|cp(i9V_^!x$HBCbQ0U0Ee;RdKE^84ajiQt21)D z1^YBpnjQhN?$1k_8GLyHzEkN{?h#I-OO$*L|SXF!*a%6vqgjI!E5mG}S zG|!k7q0C6_42Gq;lZR+Iqb=vsQ5qtJqq$DfdreFYibpx;3)F4VcjET#sho-V?ErGU zF{r{{r=}LMr`N$Lpg&D*jJ57{_wWJ!!lR?-`rz}23t9+YzNy*uOT8jV?esUL(=FH6 zu_NMQ#b!~?n>xJgPvNcs&vketyGSUE&S6)czU;=Ark15fq>a<2oMyIjb9z_-Fie7L0Kqjr&wUaZQINY@^y})`SaaE57FRU+WY~g z^18x87~p8g@&1FjWxIDkcmi3>rGVr+4132d%ip&&&kKd^_2lV+>ayBZYs{(VBSO@B zRWqvr5zF6cJH#=0B$vlZZr=iR?eVC_i@j~0OG8EJk!ifGX;U?#E);_`0wq63sjlT` zYd8D)3Z*UYc=+B0&9VNZ_Q@_9sp$kF#M0=CG+QJPxrn=)lGvvSZhD4Y&%ZvgDg?b0 zTyEE>6u!gd=bl|3cWbl!gDN~9oY2~2-77W?snBO|g>h<-D{}QxH@q4xJOlD|bWG_6 z4*R6DuA_%F52RnQd{=obK&?t+DgG!mtVR*J-hVLG1f)7Dl?#WmAiBr(4xR}xxs_#; z>PhwrS(*2un`-K2>M2t4DL%R#eq7oj!4>+ULGUUVtHk`&1cOREbq%aAQA)$vIR?tR zp26Z(gM~Hety*VSt1raHk!Wr5d&{RsPK?wk=m!R^&0DSX^x4$Xd$C9l0xV$AQuE2q zbEo@?#@Y_-L!emUDL658PBtFBl>#sm%;O9#?(F|uQ}q{#8b<+UnPdBg{N-gT>=RI9X-D4jlB0qrY zocC7sM)8AsGpPo%LMQ1L#^zMRA3nO$3y~2BXDx#ix=nJf<~%Pjew_(bIG~luNm#g- z+b+((Od{A4d!H`wB|3P*U&cgkkB$*9V+#p>@bopF9W7b` zf<2DLe7HTeuuUFYfhW;vdv}mhDW93;WyOG?e(H6c`sJToi3as zOQkd9Ia@UcCrXC=`n|>>90se!G#;!~yjP~Jnjz%-<*~8x$F9jx3YVb; zXp`%TVIQu@A-I(n45NuH_jM4{GewV`)HVOYPWzk{&S-cmrt)u~<0N=*Fdbb5B3F^rJ56s9E? z)bHe?Y4ml9bDv!NC3MW;q7prcfH4T}Ma6%@Xvv4eHoT+gNYC)fBZ9m4cZgFbcE8IH zNN!RgVrhS7$AHXc{%p%{qa(%9QMOtJF%Zild$gsM|=7_4m-W%h#zWx{g~&y_+g`|9k8Mk8Z4C z@Z)q(o207>fv-fg#U+Z(9CR~luRoby{;C8z)MCs09*=HDr zV5w{jzi4rQrHstY$o;60KtrdlTJhc~wT%aFO!C97YmDPx5Fe97a$W4dmEXA@4dDe= zSk9?@VE$SFRaq&gwy%Aw+Z$^pI~^}(v;39O>eBwyr*`pM4(<~%)NJtEK@G3A)~7Sg zLu@zjhO11HtGBA0VVD6Bl&O+eo!zuu&K;3A&kOhi$xAt5C zdW2`Y530(f!||=;x`TYzu~Chv;hrI<8mjyd#%gYxmrGkWZ>pV>L5lBQS17ar+=ucP zdPJ!9!995d&G(Pp%L~g*UifEywnek~sMeL9C$@&^fu&pEzZ41Syy4a+=s)ypm5O45X>;f_e8O z9o;a>I=X38Xc=$U;C-TxFT*lEou_d)ci!Ll+{Ko39la=5-di}PW+M7N?sCvd%`(l- zMwXGGfOx)}*r+y$X~bE4HL5%%i+BZXtbpW8g3Tdhf!nobl(q6}P@$~IL&FU6yaJ5f zzWUhJuE@VD$aA?3^GT^l5S?j6tl3!i;TfL&^j9M+6r4stiq&54Arb zjVUGgo9we+NDMvdI#_^vv73uH5b@2A^aM?f-(PT-X-J%+h#6AQN`QVM7nrNZg|p8R6~j}Bt1fRWm1y@zd^GiK5S{_+!AM&!>Y<#G zQwY{VM=Ej1A+BH4&M$*S5Q@ zS@g2{9rh@_)2}Y|Cr*!LuVN*cpT^8ghVqPdUYpjBKjl1|I3lWDj3r}sY&x!-*vdPt zN^upxJ4=JVp#Of2aKLW8%<ZuXRwf{Qzi z*0+Jzd$|97lXpM-=aNL^w6|pN-3+<&w_H}RBH(@NqEt_|O?4>es(c;U~=Did-Ex4AB0P^ZJ zx1QvsXR^jdI?VXk{$8Q)WW+4H4M$Nzv#^mS@3Z}-%TcI(Nb-v-1`4;qHeh%yCv zofAgF9Nf(yz1G67>IauJ+)~^jt2PDB@7L9&p77f;z=UKQ!`$QRCmytK*|SGj4)jE6 zABYcrJWhWb(e!emV;~52KDMK>AWKV;pJ?;RvyUVGIF5J!Fr8T zb9%Tkiy?8r;YmU$C3&r*)s3IEp2#^QCt4hF9NZxt4b+rpqGI4f_*If4&+W!1Irh=Z zMC!pVi)5#r+azr8R)GC5b*b4Es18{t9~g%DqdYx4_mv81p;Kwuvksghrl;$8_(;xK zr)L1S-hd!{BA+(vX^@= z(*#gYK!nu>7)mv3l7p$v9&o(szLi>;EZgdPE*kncOC$xVDI0~J$XVMRjwvd^3X-Z; zN2^nPg6vYlmiL+cQa*;=-EXC!GUGPxAMLzx$tgIH`8Kz{5or-fX3?-FN*=eJ1~uFv z!R19ocCGzYeMODO#uok4{guRvv%wT{*hULB7v10TX(nmut^T*`vurzH>Rv z{cmFayBypTC}$q#2^pQMXN3GL%-yp_&Nm_{Uo~LpnVK+0>nO|xRcV^9|KQBhFmT=% zbis@xZaQ6e=#Lo=H&aTr%XsGo9)7x=>ZDCQP@rptiBWQROR==c7}z+FBzIbG+|lWr zH0CPs!pU2g=lPU3ib(vS%%m~}eZ1r0g2D_K`26yoN#6jH>vW7R;EwAE% z?(@E!b$wuQNZkWv{9gAR>$)22=NGwCm2MakBVAMEm#l!9&ProGt~~($`ih@7ABZ2~ zi1yPCh35zf{h3zo%<_A=SLd!w;-DZPf9;ltt3cj&X#kh0b-J4YWdg8#2@8u^`Dc9o zkBlH+fKCClrbhjF%n`Sn&>aEY1A=F)5sZXfUl9PnVYTrJD=%j5RoVrit4^)F{sY0y z)7K-00)b)mwmYg90Nb+0kS`|V@(Hy5o9Y!+FmMdltWb`6_fQUy7h=ikR|E8>^TXq2 z`#|&ngQrF4M?`m>OIR9^2Fv$o!}cxfjIYBQvwecb6BK}DWha-N!ClF23R@-}r|tO+ z_Dq}*tgrP<_dxmw$3&;|9;K(MZi0(1)^w*Us7n}j_uRqai^|c_qFl(E3X2V%fP`(w+mpPrj7j^~mRB7AAw3kL{Bht_LO65>9-R+eq}3lpk{G z{-)y5#k5%=CB=k{LE>E4y?MvD{BDN?51K@O>4OCtR(E}We;96uD&7}ZGzn>tT)O0H znS5k&@dN7;*dr5=bdSUlU7UQdX#e<8fDXG$?r<>=orf6anzH7lVI9E$UXplvkkS6h zKuQ34pJ#&@)nbKH)yGkYYTn)Rk4*Oj;M8zTCu+TAeSB=mu z6cEYv+ny;ETjL3sDU(5rb3)(0Kd%_jvfLHY$SLAU`ON|((LE!Ama7CcZNn%!cPd}7 z0B_D&iNTqri8|GT+)E70L;ZxJ8&1yv678rbopQRy=E}HxVh$L?xW0I`GrRJJj(cLe@pT47LwtY$oQzS}6!2eCGY=*S| z@((GD*1#c4u8;{yT1_$Y(%fS{6k4L`wOo1MD3stH+G`9QifZaSR2dkjx^b9XS7<`F zumT&TCvZ0s))%_D^X)&HJKL ze8WV{mA>%n=PePbITINab%{B`#9&m1Q6mW9i2|>3-X%A3f&z&BI1n34{U@-wp?-70 zluCXS8VkyDOkJHRC~gGzPS#v*Nlpmsn^r-*)&^QhdTq&c>eAZIFl-x0{DIPqCe)Z5 zRdK7m(=V7cNnHiALQ@x-hQD2kzu7@U#eGMr&ZlpT2737StNCqgnAQijBk8NFSK6&! zp+=DZ<|6y1e*eIKJut+QoiVp(959iLH5|gRhA|lXBEt9QY(McpI2(zz*tE$8HY}?9 zqf%GLQPu7(v%zaBS5v%*tK*icoCmfq&+d(fsWl}x2a=PmCdy)n zqc595Sv*4XL~-pi0*J+~JGlc`_J^#l6!({s3z|@_XN<}|y$@)%3oCmONW!H4j(xJB zf$1Q1`At1RtKU3ENK%YgDsRRwIf69<2Gf}x2b3Nn;LzCk3m{zb;P+n-u4IO3x>5w{ ztTbF%_Ke17nm1%FenVC6W3zUZ*NIURC`bNTsvR(QPJXn+Jr z*uuV}{YG-d)!oBzz380ou0@x(T-ft(RTG}|+)1rmB87mcWx2y^23tc@DQ1#pLzC|- zbN?z2>Y!Qc!ETveY2yjgqYuWdnr@^7!}~AEa=cGp{n>Vyc6n;r{MljDq90gRhTXeNY+L$k-3~fS%CsUoFV}974gzuU-E8D+OQ8 zdwRVi|7I`$@$(MY09BM5pkmJ9yG}FT32#xI?U%LUD|U(|E3+qci5eUa{eS+$D*a@V z?JdqhE9UqwR^@vw96odC5Kz=^mZgHOWOSC3qv)z&==_^MZ|eA4O2Iq%esv_}hK}F< zM;@V+GqicbWl3X^m7Eizv`m-}Z`CJ+WoliU8Lv6x3K9k_-{0cG$u_}JiVEItJ@glW zOjpQgsv+JIIFy^de)2(N^K~+UePoYXYosyYCo>GiZH3`OqQHdR2@MvY$z-8l;S5d{ ztit@&!bE%-z96qP)wN~{Oc-tUhhL$y7b>$RGn-3w%u46V5&&;EQxo!di1A_oUu5eI z`h8O8fo}fmXMf`-a7_ovkqh#wmw%<=) zMP2F!<+W_~5uY}dB6}@526U09*4)Z=<=I~Czo?CLLp%p8O8W7iaYa)Sps~k3&FCX{ zO#m=iOb7}jH=hKpEc^blF1JtD$-$8wHq0lU+={bunu;3B--0xgK#9czjwdx-_8f4U z0ytm$sFf3C3aTbQ!h`%KYDT(fwN$R9B?@9ujdE~4sIBjMXhUIm9G2`BLWIxP9i5YL z(u>r=$Bl)=T?zik_!?~kqRthDUs?m;idb?e8ORid0Q5tx-ylf1%NogzB+4;|%kC8G zXt18@#K|oWV6vxDAYhEA=Cp2@+#$C0hmZG_A^v3ZRUIX|+-UR$fY!OUuDPqFWuQjU zbtWnRfL}NKfG&6H0s$4JZEh?RY%=HVvPM47^R zOnVI@sfvKBg0`yZ%Ilm>dGy6Q4niHH^gPoj=Q{kcMbATSDeLbx)}uf#74&o5Ku+Od zSybGXnr92Uue}6q@yd5=%gk2&ocrrrgBH7EUe$5Fnhl+{uz2s-E#WoJ|{ zh=7ZHM=@Hyda!e=KDe4^i9#~^=$&pj7cHt0*9Yo~Vd_u4$r_NkL8Iu}IbvMWhh(R~ zp+Ze%**`80Oj&^TvTHw49PVff`lz}f2z<)QViQf$fxE#^r!ij&g_7J}H3k9R_;+^> zpmf%Dcuk#~tY7Q?d{x8b6LX)d>0dEqo2z>(ek9i~pvjrw6^Gb8B98Kjtg)+M^mG4B2(FK?p zvM3uDqBFkI0^(lBAG#yRSvOP<$JP{zm_e+&w$-2ER#TXa8!m|2D{o7zrOmmPs-ZL7t{HA z7Bs^MHJoK0TOc$kJoLgmgF(y*dFF$^?D}fTLQi1W0w}*m{xIE$vX3fI+5`FkRARxv z!rb{HLO=ZnV8v|!Fpq_NjL*0fj}Fbf5taoxTv@g0o)Ofe3;3mm{;(;J=a>eAbB*Mw zL!a+ECPI+6*K7&bEwf0{r*udU_4D|W>{pWxf;XJk17gLodGe_cUj|;?g$!&d$<-Bg zX(k({HXg@3el_%j&OJCB%A;TGOo?jJdv^N_(|qOrn0j+Tq08&F@;0C!_=fF}-?ut+ zLXvtpEe`lHKrL%@xFSFqo`K?KzRbh`t2Vc_`|b3zN*6)~!ZxsK~b<)l`|r|2!|IB3Qqz6p#eaUMdGLC^}1cL`Y4V z1z{;5oK1BE1c?ex(kf2pU~JxW?;lamj}I)?>3+5%aIN_o8S2p7w_Qrq@puzA8zX(* z9FWbW5K!I3F1C!xU%tge8hIIsR0ZdC1C#wI*a?!i^qO;oDw|s2WQzlHOo8h2W*!eH zj~8Fg6NdiH@qqd<6q{$JS zb1v&sK%dz@qqPQ=Q(%1vM%W9h1d}rXsB2Gl(xRm^x||w94W&T27*H-+?ZiLMFLYVh z^Se5^M87vhV{K<}F`n-Zg%p&y^5G?zS+TnzU^(Lj70~zZ(&wJH+D+~mQt1#L>R75I zf+3VH%kr{jTwdY7l6){wPU@2S>*%htF_?y4%g$m52P>+WgAnM}ceA9g8M)3cRT99c z2Pp4Z&~%HJVX>n<(M$cQETjLZx*<;G2Xi2CEVW80eoX#?yDk8_P$D$Um6v_PJT&2E6l352Tk;>C(V-5_EheKl}js1=q^zK-#4 zPQ=@d7g@@Hbw~L&&GP zn3TjAHEFl2ngK*$sQe!BkX+zA+dsrI>l?YGbHElTUxb&;?R1whuKz@S~rd-+#U(T!NMy{K2@xkpvCAj-R zp=EPR%mIst8`$NyQ%|=m-M}fi2K#4&1Q^^xKpg!9){z*h1Sz+lIk|`hUrU{Jjwaj)zG2f;un-0D^RFPZUS0DF7 z|U@XGByg=TvH9%S_$|I zPCjV4Dbv;M`5TVsivTt-4;XR>@*coK@JVZ6@VH_Zq|bY(`3w|dpk;`C(ovJV1twO^ zv;%Qy7%UGYvDg%|OfavtX7DkO*a>1$A_OfDkSEB4j*=CEaAbMIAj|{zL=41TO4H-c zN)g%fhD($$BX`qOfc|xau))r+Kq8ER3Zq(mFCJe_Jv2J=nu4~ro;1A5+-9E!)I`<# z^3?`6uzifzY&5zwuo*FlhDXaFJR|i{?#>R0vmaifM#}5Iz=cqA@1yM@HQ_(-633B> z|28j)Bq#pe+UWf!gSC4;?>qjhLjoERx!m->x;>x~(Xju-AAhqN@AK2n3azE4kh#H^ zH~-<~@k4 z1Tjev0JpqwQX4SF8KA@fxMe4S98fkSuidWyOWB7YC`p8Ew_;Q=2F?S<-c-xo39v3( zn6v7L<5uGYzj+uheXV+Pel2Db{sq4EP4LKDvx-xv07eJ2iP)r-1r()aR`PGeCXeWM zMaE9IMu#UK+W)8Qg~&Mx=)rqV`N$n}9&nj}@^a|9ma1MQK#x&t?T=2Wo$0#|cVbB0}#tf4)s{!VCXn2on~Gd0T(CN-|Jqg zcax8I>;6`6I`3e^pKNqH6AbUEc}xad(`(Q8!9UwoK@!(dFhd5S9tmo0$QW7|Ol=sZ zbU>pEOKQ1X^ul=c;mmXRIZqhL#490{SroxsjJrPyI7O+X#quy47!cx%(OEt-gO`T! zm-6(hg{@0dyQSc(7oITJ>o0|Cbcs(SFtLe(wAKV>Jbl48Y$ zF3T=fv|}r3ULG2u<3uAos9b(sf$vJgW!4)PnN=SD6ESg_ncu7!+y-V?0Hw1MjGzGX zPnt(hH0%;k2he-<{16`KD-S6R(yLIwaA<{P`diQdbtD6|C2>i=5Aa=LzZx)^<0=>% zLUl;@pE>OchKE2~F6+yUI?xTUT>C*E13iu@Fz731_3^a!f7$4mJXrPH^K>l5EWj6lwIxXZhI5+zSqF1l8v({vQAHW#mA*g%B+!2*p<~1b z10enk2sr@K*yr&P5v6Vb`DN>}QzxaQ1|ZTaFxr;hDUVcFJb+isTek*4 z@bJGr234E&ofn}&&kv{SWWXr^w_j$?1XtYEeGYXOfdaqo>TI^kUV8DW90NuZptTOZ zyvq3h)#CsZofw7s%^ZwSX4lTo?0zS9Lgvf)rI*>dpt`yAtzJ|kxnO+CP#?>F)y!V6 z3um+;P)uBL&8}q^ejG6sMlZf4fBc!~7xJ>fM=F)Eyw&~s`sMIzZ%L4v)D}}jwZWKg z*m6V(uc9dWa=QpV9!`s5!dxgsC$shgcl%2YB~j&p3VO4h77KDn)6Q!U*8kVU}Y=i#>3GJphtHdd03pemlNCjh!uMXc*s02}lA1?3r(2St#d(~D$j6MRi*xi?ur@eJMwE992* zJXEWE55B3Yg3Ab0=LXHDlwte9@u!=IF<`rX^q<~@S&2KDd)G1V+|u!z7$hU4AaiVyfDqb8HtIM2z|I=XK`bdLfHx%3tGc|z*>8m@dr0n3{zFH{UmVPw0@8Ixo7y`vCY|X8!X7lx zf*T%GX??V7fVthRB_EmL>;>2=ky#4{_!_SmgDL=E^b4kJYRv#I$oF9TV&i6I=Bt2! zaL`^bWZN}-;b-7#GJ$@{v&TI|3P35%uP?a5UDw5_PQHt8K+X-Cd8rP2Qt)gOfmG%l zl@6gsSBIRb4=k6T$Cn>N#sswFY^c6XMA-@$fj2f7`FhCjD1g~!Uga|^3e=tiy=efI zv~4ABEwX>afWa%kU&KA_OjCwE4uTA)ve$FD7(}58_<=C z%#8rZi{xc%&>c$9Y@}4bS^}stmtN-ZAss`jPGxW520;WFeP7TKUD8!HyO`TUalrcG z$v3Abdn`0+Z$uMANry#wXY-}wvyq!G5%UNlY&Copi4~(v8Nz(}VLl#-SH2j&kA~RW z+WWo_#QRrMs!Zi2jxsh}T=+`=7wjaW9Q>X~1v7BS6=)nF;TVFr1|`+3>>{ly^zB#+WA0en1H-T`onQasNSK&aIW- zfM>ERzkqfk(BLaw#L^KviGc8^+3DEe>?EHG12s4^OlbF4sHqH%UW4=w4V!~60QBVq z343By=RpA-)OaN0ez{*75_$(VB&66e%6EbmS2i4nrsng@c;8sgoWVyN^m~m&46tTz zg3&AXOAJl&S!|Q1^kyX46)3T|3uURRb&Y(lhW618A3XTIEPe=(j|uO_YhZ5bDj0|0 z?s!QCSa2^7m)y2dK-MMIRLN7DkHXK?uPmD+kqkE;ySV+`HPZ4>AVuF&_mZF6jgM!a zWk&p=0tsMk?RTLs#_W9J5m@uI6(|d!h2;D=$bK~v_W!V5vg72xtX+cIan+Y;q*<{U z;);a{LD?L1`X{7|fF|I|(Cyeb9A6XDv;O|rG>AVQDUSv`3}P?e8*+2q!H`_dRI(@# zs>l0J3s_p59^%L2Ai;1aGx}>gHH>$2>K+hw%7EA;vI)kyYOFm_+rW=$3|$O73}r9x z!|(X6vn%;FzwgpG!*uU>aBj1^p~fYVpCipf4S7PdGIE`^^)0Kl-E#CxGNqg8p?1nS zj(>MYv=05<0QpB^@$bK>B>IQclb`NOA)x(o`P{!ZPrSEJPwzVpl%2ntEUl0J`Rvqx z_HDBN#&0{l_78`r%o=*&7-ymT2frJ&WN0-S6N|V8eg=g;X6RD!4{unG{PhORK<-GK zKtW*z`mYs-2#dRAfArPBWw;ZK=KAQ~k}}u$k2&=dabYW_{C|HX^!-H-uk3Ve5Es|W zGBKG?$jV^wGf{$uA1fQLlPk>%@}v)YR%r|E+w<$B4^N_wo78YB3du3%P9yeI@H#hY za8IeY(z4r?G=%D)AM64TZ}8hVS-Zn^Q/dev/null || true - -# Construire et démarrer -docker-compose up -d --build - -if [ $? -eq 0 ]; then - echo "✅ Déploiement réussi!" - echo "" - echo "📊 État des conteneurs:" - docker-compose ps - echo "" - echo "🔗 Application accessible sur: http://localhost:5000" - echo "🔐 Connexion par défaut: admin/admin123" - echo "🗄️ PostgreSQL accessible sur le port: 5433" - echo "" - echo "📋 Commandes utiles:" - echo " - Voir les logs: docker-compose logs -f" - echo " - Arrêter: docker-compose down" - echo " - Redémarrer: docker-compose restart" - echo "" - echo "📁 Fichiers de déploiement dans: $DEPLOY_DIR" -else - echo "❌ Échec du déploiement" - echo "📋 Vérifiez les logs avec: docker-compose logs" - exit 1 -fi - -# Retourner au répertoire original -cd "$CURRENT_DIR" \ No newline at end of file diff --git a/deploy-portainer.sh b/deploy-portainer.sh deleted file mode 100755 index b30d0d6..0000000 --- a/deploy-portainer.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -# Script de déploiement pour Portainer RegisFlow -# Ce script prépare et déploie RegisFlow via Portainer - -echo "🚀 Déploiement RegisFlow pour Portainer" -echo "======================================" - -# Étape 1: Construire l'image Docker -echo "🔧 Étape 1: Construction de l'image Docker..." -docker build -t regisflow:latest . - -if [ $? -eq 0 ]; then - echo "✅ Image construite avec succès" -else - echo "❌ Échec de la construction de l'image" - exit 1 -fi - -# Étape 2: Vérifier que l'image existe -echo "🔍 Étape 2: Vérification de l'image..." -docker images | grep regisflow - -# Étape 3: Arrêter les conteneurs existants si ils existent -echo "🛑 Étape 3: Nettoyage des conteneurs existants..." -docker stop regisflow-app regisflow-db 2>/dev/null || true -docker rm regisflow-app regisflow-db 2>/dev/null || true - -# Étape 4: Informations pour Portainer -echo "" -echo "🐳 Instructions pour Portainer:" -echo "===============================" -echo "1. Dans Portainer, allez dans 'Stacks'" -echo "2. Cliquez sur 'Add stack'" -echo "3. Donnez un nom: 'regisflow'" -echo "4. Copiez le contenu du fichier 'portainer-stack.yml'" -echo "5. Cliquez sur 'Deploy the stack'" -echo "" -echo "📝 Nom de l'image à utiliser: regisflow:latest" -echo "🔗 URL d'accès: http://votre-serveur:5000" -echo "🔐 Connexion par défaut: admin/admin123" -echo "" -echo "📋 Ports exposés:" -echo " - Application: 5000" -echo " - PostgreSQL: 5433" -echo "" -echo "✅ Prêt pour le déploiement Portainer!" \ No newline at end of file diff --git a/deploy-production.sh b/deploy-production.sh deleted file mode 100755 index a1ddf5a..0000000 --- a/deploy-production.sh +++ /dev/null @@ -1,157 +0,0 @@ -#!/bin/bash - -# Script de déploiement automatique RegisFlow Production -# Usage: ./deploy-production.sh - -set -e - -echo "🚀 Déploiement RegisFlow en production" -echo "=======================================" - -# Couleurs pour les messages -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -# Fonction pour afficher les messages -log_info() { - echo -e "${BLUE}ℹ️ $1${NC}" -} - -log_success() { - echo -e "${GREEN}✅ $1${NC}" -} - -log_warning() { - echo -e "${YELLOW}⚠️ $1${NC}" -} - -log_error() { - echo -e "${RED}❌ $1${NC}" -} - -# Vérifier que Docker est installé -if ! command -v docker &> /dev/null; then - log_error "Docker n'est pas installé. Veuillez l'installer d'abord." - exit 1 -fi - -if ! command -v docker-compose &> /dev/null; then - log_error "Docker Compose n'est pas installé. Veuillez l'installer d'abord." - exit 1 -fi - -# Créer le répertoire de déploiement -DEPLOY_DIR="/opt/regisflow" -log_info "Création du répertoire de déploiement : $DEPLOY_DIR" - -if [ ! -d "$DEPLOY_DIR" ]; then - sudo mkdir -p "$DEPLOY_DIR" - sudo chown $USER:$USER "$DEPLOY_DIR" - log_success "Répertoire créé" -else - log_info "Répertoire existant" -fi - -cd "$DEPLOY_DIR" - -# Vérifier la configuration .env -if [ ! -f ".env" ]; then - log_warning "Fichier .env manquant" - - if [ -f ".env.production" ]; then - log_info "Copie du template .env.production vers .env" - cp .env.production .env - else - log_info "Création d'un fichier .env de base" - cat > .env << EOF -# Configuration RegisFlow Production -POSTGRES_PASSWORD=RegisFlow2024!PostgreSQL_$(date +%s) -SESSION_SECRET=RegisFlow2024SessionSecret_$(openssl rand -hex 32) -NODE_ENV=production -PORT=5000 -TZ=Europe/Paris -SECURE_COOKIES=true -DATA_RETENTION_MONTHS=19 -BACKUP_RETENTION_DAYS=90 -MAX_BACKUP_COUNT=20 -EOF - fi - - log_warning "IMPORTANT: Éditez le fichier .env avec vos propres mots de passe !" - log_warning "Fichier: $DEPLOY_DIR/.env" - - read -p "Appuyez sur Entrée après avoir modifié le fichier .env..." -fi - -# Vérifier les fichiers Docker requis -REQUIRED_FILES=("docker-compose.yml" "Dockerfile") -for file in "${REQUIRED_FILES[@]}"; do - if [ ! -f "$file" ]; then - log_error "Fichier manquant: $file" - log_info "Assurez-vous que tous les fichiers du projet sont présents dans $DEPLOY_DIR" - exit 1 - fi -done - -# Arrêter les anciens conteneurs si ils existent -log_info "Arrêt des anciens conteneurs..." -docker-compose down --remove-orphans 2>/dev/null || true - -# Construire et démarrer les services -log_info "Construction et démarrage des services..." -docker-compose up -d --build - -# Attendre que les services soient prêts -log_info "Attente du démarrage des services..." -sleep 30 - -# Vérifier la santé des services -log_info "Vérification de la santé des services..." - -# Vérifier PostgreSQL -if docker-compose exec -T regisflow-db pg_isready -U regisflow >/dev/null 2>&1; then - log_success "PostgreSQL est opérationnel" -else - log_error "PostgreSQL n'est pas accessible" - docker-compose logs regisflow-db - exit 1 -fi - -# Vérifier l'application -sleep 10 -if curl -s -f http://localhost:5000/health >/dev/null 2>&1; then - log_success "Application RegisFlow est opérationnelle" -else - log_error "L'application n'est pas accessible" - docker-compose logs regisflow - exit 1 -fi - -# Afficher les informations de connexion -echo "" -log_success "🎉 Déploiement terminé avec succès !" -echo "=======================================" -log_info "URL de l'application: http://localhost:5000" -log_info "Compte administrateur par défaut:" -log_info " - Utilisateur: admin" -log_info " - Mot de passe: admin123" -log_warning "CHANGEZ le mot de passe administrateur après la première connexion !" -echo "" -log_info "Base de données PostgreSQL accessible sur le port 5433" -echo "" - -# Afficher les commandes utiles -echo "Commandes utiles:" -echo "==================" -echo "📋 Voir les logs: docker-compose logs -f" -echo "📊 État des services: docker-compose ps" -echo "🔄 Redémarrer: docker-compose restart" -echo "🛑 Arrêter: docker-compose down" -echo "📈 Statistiques: docker stats" -echo "" - -log_info "Pour configurer un reverse proxy, consultez PRODUCTION.md" -log_success "Déploiement terminé !" \ No newline at end of file diff --git a/docker-compose-examples.yml b/docker-compose-examples.yml deleted file mode 100644 index b90ffde..0000000 --- a/docker-compose-examples.yml +++ /dev/null @@ -1,70 +0,0 @@ -# Guide pour changer de réseau dans Portainer -# RegisFlow - Configuration réseau flexible - -# ========================================== -# INSTALLATION STANDARD -# ========================================== -# 1. Déployez RegisFlow avec docker-compose up -d -# 2. Dans Portainer, allez dans Stacks > regisflow -# 3. Utilisez "Migrate" ou "Redeploy" pour changer de réseau - -# ========================================== -# CHANGER DE RÉSEAU DANS PORTAINER -# ========================================== -# Option 1 : Via l'interface Portainer -# 1. Containers > regisflow-app/regisflow-db -# 2. "Disconnect" du réseau actuel -# 3. "Connect" au nouveau réseau -# 4. Redémarrer les containers - -# Option 2 : Via la Stack Portainer -# 1. Stacks > votre-stack-regisflow -# 2. Editor > Modifier la section networks -# 3. Deploy the stack - -# ========================================== -# RÉSEAUX COMPATIBLES PORTAINER -# ========================================== - -# Réseau nginx_default (configuration actuelle) -networks: - default: - external: true - name: nginx_default - -# Autres réseaux existants -networks: - default: - external: true - name: autre-reseau-existant - -# Réseau macvlan (IP directe) -networks: - default: - driver: macvlan - driver_opts: - parent: eth0 - -# Réseau host (sans isolation) -# Supprimez la section networks et ajoutez : -# network_mode: host dans chaque service - -# ========================================== -# PROCÉDURE MIGRATION PORTAINER -# ========================================== -# 1. Arrêter la stack dans Portainer -# 2. Modifier le docker-compose.yml si nécessaire -# 3. Redéployer la stack -# 4. Vérifier la connectivité réseau - -# ========================================== -# DÉPANNAGE RÉSEAU -# ========================================== -# Vérifier les réseaux Docker : -# docker network ls -# -# Inspecter un réseau : -# docker network inspect nom-du-reseau -# -# Connecter manuellement un container : -# docker network connect nom-reseau nom-container \ No newline at end of file diff --git a/docker-compose-portainer.yml b/docker-compose-portainer.yml deleted file mode 100644 index f60d689..0000000 --- a/docker-compose-portainer.yml +++ /dev/null @@ -1,77 +0,0 @@ -version: '3.8' - -# Docker Compose pour Portainer - Construction automatique -# Ce fichier gère tout automatiquement sans configuration supplémentaire -services: - # Base de données PostgreSQL - regisflow-db: - image: postgres:15-alpine - container_name: regisflow-db - environment: - POSTGRES_DB: regisflow - POSTGRES_USER: regisflow - POSTGRES_PASSWORD: RegisFlow2024!PostgreSQL - volumes: - - regisflow_postgres_data:/var/lib/postgresql/data - ports: - - "5433:5432" - restart: unless-stopped - healthcheck: - test: ["CMD-SHELL", "pg_isready -U regisflow -d regisflow"] - interval: 30s - timeout: 10s - retries: 5 - start_period: 30s - networks: - - regisflow_network - - # Application RegisFlow - Construction depuis le répertoire courant - regisflow-app: - build: - context: . - dockerfile: Dockerfile - target: production - image: regisflow-app:latest - container_name: regisflow-app - depends_on: - regisflow-db: - condition: service_healthy - environment: - NODE_ENV: production - PORT: 5000 - DATABASE_URL: postgresql://regisflow:RegisFlow2024!PostgreSQL@regisflow-db:5432/regisflow - SESSION_SECRET: RegisFlow2024SessionSecretKey1234567890ABCDEF - TZ: Europe/Paris - SECURE_COOKIES: false - DATA_RETENTION_MONTHS: 19 - BACKUP_RETENTION_DAYS: 90 - MAX_BACKUP_COUNT: 20 - volumes: - - regisflow_backup_data:/app/backups - - regisflow_logs_data:/app/logs - ports: - - "5000:5000" - restart: unless-stopped - healthcheck: - test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:5000/health || exit 1"] - interval: 30s - timeout: 15s - retries: 3 - start_period: 90s - networks: - - regisflow_network - -# Volumes avec noms uniques pour éviter les conflits -volumes: - regisflow_postgres_data: - driver: local - regisflow_backup_data: - driver: local - regisflow_logs_data: - driver: local - -# Réseau dédié avec nom unique -networks: - regisflow_network: - driver: bridge - name: regisflow_net \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml deleted file mode 100644 index 183d8aa..0000000 --- a/docker-compose.prod.yml +++ /dev/null @@ -1,113 +0,0 @@ -version: '3.8' - -# Configuration Docker Compose optimisée pour Production -# Usage: docker-compose -f docker-compose.prod.yml up -d -services: - # Base de données PostgreSQL Production - regisflow-db: - image: postgres:15-alpine - container_name: regisflow-db-prod - environment: - POSTGRES_DB: regisflow - POSTGRES_USER: regisflow - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - POSTGRES_INITDB_ARGS: "--auth-host=scram-sha-256 --auth-local=scram-sha-256" - volumes: - - postgres_data_prod:/var/lib/postgresql/data - - ./postgresql.conf:/etc/postgresql/postgresql.conf:ro - ports: - - "5433:5432" - restart: unless-stopped - deploy: - resources: - limits: - memory: 1G - cpus: '1.0' - reservations: - memory: 512M - cpus: '0.5' - healthcheck: - test: ["CMD-SHELL", "pg_isready -U regisflow -d regisflow"] - interval: 30s - timeout: 10s - retries: 5 - start_period: 60s - command: postgres -c config_file=/etc/postgresql/postgresql.conf - - # Application RegisFlow Production - regisflow: - build: - context: . - dockerfile: Dockerfile - target: production - args: - - NODE_ENV=production - image: regisflow:production - container_name: regisflow-app-prod - depends_on: - regisflow-db: - condition: service_healthy - pull_policy: never - environment: - NODE_ENV: production - PORT: 5000 - DATABASE_URL: postgresql://regisflow:${POSTGRES_PASSWORD}@regisflow-db:5432/regisflow - SESSION_SECRET: ${SESSION_SECRET} - TZ: ${TZ:-Europe/Paris} - SECURE_COOKIES: ${SECURE_COOKIES:-true} - DATA_RETENTION_MONTHS: ${DATA_RETENTION_MONTHS:-19} - BACKUP_RETENTION_DAYS: ${BACKUP_RETENTION_DAYS:-90} - MAX_BACKUP_COUNT: ${MAX_BACKUP_COUNT:-20} - NODE_OPTIONS: "--max-old-space-size=1024" - volumes: - - backup_data_prod:/app/backups - - logs_data_prod:/app/logs - ports: - - "5000:5000" - restart: unless-stopped - deploy: - resources: - limits: - memory: 1.5G - cpus: '2.0' - reservations: - memory: 512M - cpus: '0.5' - healthcheck: - test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:5000/health || exit 1"] - interval: 30s - timeout: 15s - retries: 3 - start_period: 120s - logging: - driver: "json-file" - options: - max-size: "100m" - max-file: "5" - -# Volumes persistants pour production -volumes: - postgres_data_prod: - driver: local - driver_opts: - type: none - o: bind - device: /opt/regisflow/data/postgres - backup_data_prod: - driver: local - driver_opts: - type: none - o: bind - device: /opt/regisflow/data/backups - logs_data_prod: - driver: local - driver_opts: - type: none - o: bind - device: /opt/regisflow/data/logs - -# Réseau pour reverse proxy -networks: - default: - name: regisflow-network - driver: bridge \ No newline at end of file diff --git a/fix-portainer-image.sh b/fix-portainer-image.sh deleted file mode 100755 index 97e2c69..0000000 --- a/fix-portainer-image.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# Script pour créer l'image exacte que Portainer attend -echo "🔧 Création de l'image regisflow-regisflow:latest pour Portainer" - -# Construire l'image avec le nom exact que Portainer cherche -docker build -t regisflow-regisflow:latest . - -if [ $? -eq 0 ]; then - echo "✅ Image regisflow-regisflow:latest créée avec succès" - - # Vérifier que l'image existe - echo "📋 Vérification de l'image:" - docker images | grep regisflow-regisflow - - echo "" - echo "🐳 L'image est maintenant disponible pour Portainer" - echo "💡 Vous pouvez maintenant redéployer votre stack dans Portainer" -else - echo "❌ Échec de la création de l'image" - exit 1 -fi \ No newline at end of file diff --git a/init-db.sh b/init-db.sh deleted file mode 100755 index ab8b842..0000000 --- a/init-db.sh +++ /dev/null @@ -1,151 +0,0 @@ -#!/bin/bash - -# Script d'initialisation de la base de données RegisFlow -# Usage: ./init-db.sh [DATABASE_URL] - -set -e - -# Configuration par défaut -DEFAULT_DB_HOST="localhost" -DEFAULT_DB_PORT="5433" -DEFAULT_DB_NAME="regisflow" -DEFAULT_DB_USER="regisflow" -DEFAULT_DB_PASSWORD="RegisFlow2024!PostgreSQL" - -# Couleurs pour les messages -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' - -log_info() { - echo -e "${BLUE}ℹ️ $1${NC}" -} - -log_success() { - echo -e "${GREEN}✅ $1${NC}" -} - -log_warning() { - echo -e "${YELLOW}⚠️ $1${NC}" -} - -log_error() { - echo -e "${RED}❌ $1${NC}" -} - -# Fonction pour extraire les informations de DATABASE_URL -parse_database_url() { - local url="$1" - - # Extraire les composants de l'URL PostgreSQL - if [[ $url =~ postgresql://([^:]+):([^@]+)@([^:]+):([^/]+)/(.+) ]]; then - DB_USER="${BASH_REMATCH[1]}" - DB_PASSWORD="${BASH_REMATCH[2]}" - DB_HOST="${BASH_REMATCH[3]}" - DB_PORT="${BASH_REMATCH[4]}" - DB_NAME="${BASH_REMATCH[5]}" - else - log_error "Format DATABASE_URL invalide. Utilisez: postgresql://user:password@host:port/database" - exit 1 - fi -} - -# Déterminer la configuration de la base de données -if [ -n "$1" ]; then - log_info "Utilisation de DATABASE_URL fournie: $1" - parse_database_url "$1" -elif [ -n "$DATABASE_URL" ]; then - log_info "Utilisation de DATABASE_URL depuis l'environnement" - parse_database_url "$DATABASE_URL" -else - log_info "Utilisation de la configuration par défaut" - DB_HOST="$DEFAULT_DB_HOST" - DB_PORT="$DEFAULT_DB_PORT" - DB_NAME="$DEFAULT_DB_NAME" - DB_USER="$DEFAULT_DB_USER" - DB_PASSWORD="$DEFAULT_DB_PASSWORD" -fi - -log_info "Configuration de la base de données:" -log_info " Host: $DB_HOST" -log_info " Port: $DB_PORT" -log_info " Database: $DB_NAME" -log_info " User: $DB_USER" - -# Vérifier que psql est installé -if ! command -v psql &> /dev/null; then - log_error "psql n'est pas installé. Installez PostgreSQL client." - exit 1 -fi - -# Vérifier la connexion à PostgreSQL -log_info "Test de connexion à PostgreSQL..." -export PGPASSWORD="$DB_PASSWORD" - -if ! psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "\q" 2>/dev/null; then - log_error "Impossible de se connecter à PostgreSQL" - log_info "Vérifiez que PostgreSQL est démarré et accessible" - log_info "Commande de test: psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME" - exit 1 -fi - -log_success "Connexion PostgreSQL réussie" - -# Exécuter le script d'initialisation -log_info "Exécution du script d'initialisation..." - -if [ -f "init.sql" ]; then - if psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f init.sql; then - log_success "Script d'initialisation exécuté avec succès" - else - log_error "Erreur lors de l'exécution du script d'initialisation" - exit 1 - fi -else - log_error "Fichier init.sql non trouvé" - exit 1 -fi - -# Vérifier que les tables ont été créées -log_info "Vérification des tables créées..." -TABLES=$(psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -t -c "SELECT tablename FROM pg_tables WHERE schemaname='public';" | tr -d ' ' | grep -v '^$') - -if echo "$TABLES" | grep -q "users\|stores\|sales\|sessions"; then - log_success "Tables principales créées:" - echo "$TABLES" | while read -r table; do - if [ -n "$table" ]; then - log_info " - $table" - fi - done -else - log_error "Les tables principales n'ont pas été créées correctement" - exit 1 -fi - -# Vérifier l'utilisateur admin -log_info "Vérification de l'utilisateur administrateur..." -ADMIN_COUNT=$(psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -t -c "SELECT COUNT(*) FROM users WHERE username='admin';" | tr -d ' ') - -if [ "$ADMIN_COUNT" = "1" ]; then - log_success "Utilisateur admin créé avec succès" -else - log_warning "Problème avec la création de l'utilisateur admin" -fi - -# Afficher le résumé -echo "" -log_success "🎉 Initialisation de la base de données terminée!" -echo "======================================================" -log_info "Base de données: $DB_NAME sur $DB_HOST:$DB_PORT" -log_info "Utilisateur administrateur:" -log_info " - Username: admin" -log_info " - Password: admin123" -log_warning "IMPORTANT: Changez le mot de passe admin après la première connexion!" -echo "" - -# Nettoyer les variables d'environnement -unset PGPASSWORD - -log_success "Prêt pour le déploiement!" \ No newline at end of file diff --git a/nginx-regisflow.conf b/nginx-regisflow.conf deleted file mode 100644 index 0ead959..0000000 --- a/nginx-regisflow.conf +++ /dev/null @@ -1,110 +0,0 @@ -# Configuration Nginx pour RegisFlow Production -# À placer dans /etc/nginx/sites-available/regisflow - -server { - listen 80; - server_name votre-domaine.com www.votre-domaine.com; - - # Redirection HTTPS (recommandé) - return 301 https://$server_name$request_uri; -} - -server { - listen 443 ssl http2; - server_name votre-domaine.com www.votre-domaine.com; - - # Certificats SSL (Let's Encrypt recommandé) - ssl_certificate /etc/letsencrypt/live/votre-domaine.com/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/votre-domaine.com/privkey.pem; - - # Configuration SSL moderne - ssl_protocols TLSv1.2 TLSv1.3; - ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384; - ssl_prefer_server_ciphers off; - ssl_session_cache shared:SSL:10m; - ssl_session_timeout 10m; - - # Headers de sécurité - add_header X-Frame-Options DENY; - add_header X-Content-Type-Options nosniff; - add_header X-XSS-Protection "1; mode=block"; - add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - add_header Referrer-Policy "strict-origin-when-cross-origin"; - - # Taille maximale pour les uploads (photos) - client_max_body_size 50M; - - # Timeouts - proxy_connect_timeout 60s; - proxy_send_timeout 60s; - proxy_read_timeout 60s; - proxy_buffers 32 4k; - proxy_buffer_size 8k; - - # Compression - gzip on; - gzip_vary on; - gzip_min_length 1024; - gzip_proxied any; - gzip_comp_level 6; - gzip_types - text/plain - text/css - text/xml - text/javascript - application/json - application/javascript - application/xml+rss - application/atom+xml - image/svg+xml; - - # Cache pour les assets statiques - location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { - 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; - - expires 30d; - add_header Cache-Control "public, immutable"; - access_log off; - } - - # API endpoints (pas de cache) - location /api/ { - 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; - - # Pas de cache pour les API - add_header Cache-Control "no-cache, no-store, must-revalidate"; - add_header Pragma "no-cache"; - add_header Expires "0"; - } - - # Health check - location /health { - proxy_pass http://localhost:5000; - access_log off; - } - - # Application principale - 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; - - # Cache court pour les pages - expires 1h; - add_header Cache-Control "public"; - } - - # Logs - access_log /var/log/nginx/regisflow-access.log; - error_log /var/log/nginx/regisflow-error.log; -} \ No newline at end of file diff --git a/portainer-build-stack.yml b/portainer-build-stack.yml deleted file mode 100644 index 39f85c3..0000000 --- a/portainer-build-stack.yml +++ /dev/null @@ -1,75 +0,0 @@ -version: '3.8' - -# Configuration Stack Portainer pour RegisFlow avec build automatique -# Cette version construit l'image automatiquement depuis le code source -services: - # Base de données PostgreSQL - regisflow-db: - image: postgres:15-alpine - container_name: regisflow-db - environment: - POSTGRES_DB: regisflow - POSTGRES_USER: regisflow - POSTGRES_PASSWORD: RegisFlow2024!PostgreSQL - volumes: - - postgres_data:/var/lib/postgresql/data - ports: - - "5433:5432" - restart: unless-stopped - healthcheck: - test: ["CMD-SHELL", "pg_isready -U regisflow -d regisflow"] - interval: 30s - timeout: 10s - retries: 5 - start_period: 30s - networks: - - regisflow-net - - # Application RegisFlow - Construction automatique - regisflow: - build: - context: . - dockerfile: Dockerfile - target: production - container_name: regisflow-app - depends_on: - regisflow-db: - condition: service_healthy - environment: - NODE_ENV: production - PORT: 5000 - DATABASE_URL: postgresql://regisflow:RegisFlow2024!PostgreSQL@regisflow-db:5432/regisflow - SESSION_SECRET: RegisFlow2024SessionSecretKey1234567890ABCDEF - TZ: Europe/Paris - SECURE_COOKIES: false - DATA_RETENTION_MONTHS: 19 - BACKUP_RETENTION_DAYS: 90 - MAX_BACKUP_COUNT: 20 - volumes: - - backup_data:/app/backups - - logs_data:/app/logs - ports: - - "5000:5000" - restart: unless-stopped - healthcheck: - test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:5000/health || exit 1"] - interval: 30s - timeout: 15s - retries: 3 - start_period: 90s - networks: - - regisflow-net - -# Volumes persistants -volumes: - postgres_data: - driver: local - backup_data: - driver: local - logs_data: - driver: local - -# Réseau dédié -networks: - regisflow-net: - driver: bridge \ No newline at end of file diff --git a/portainer-stack.yml b/portainer-stack.yml deleted file mode 100644 index a41466e..0000000 --- a/portainer-stack.yml +++ /dev/null @@ -1,68 +0,0 @@ -version: '3.8' - -# Configuration Stack Portainer pour RegisFlow -# À utiliser directement dans Portainer comme Stack -services: - # Base de données PostgreSQL - regisflow-db: - image: postgres:15-alpine - container_name: regisflow-db - environment: - POSTGRES_DB: regisflow - POSTGRES_USER: regisflow - POSTGRES_PASSWORD: RegisFlow2024!PostgreSQL - volumes: - - postgres_data:/var/lib/postgresql/data - ports: - - "5433:5432" - restart: unless-stopped - healthcheck: - test: ["CMD-SHELL", "pg_isready -U regisflow -d regisflow"] - interval: 30s - timeout: 10s - retries: 5 - start_period: 30s - - # Application RegisFlow - Construction depuis le code source - regisflow: - build: - context: . - dockerfile: Dockerfile - target: production - container_name: regisflow-app - depends_on: - regisflow-db: - condition: service_healthy - environment: - NODE_ENV: production - PORT: 5000 - DATABASE_URL: postgresql://regisflow:RegisFlow2024!PostgreSQL@regisflow-db:5432/regisflow - SESSION_SECRET: RegisFlow2024SessionSecretKey1234567890ABCDEF - TZ: Europe/Paris - SECURE_COOKIES: false - DATA_RETENTION_MONTHS: 19 - BACKUP_RETENTION_DAYS: 90 - MAX_BACKUP_COUNT: 20 - volumes: - - backup_data:/app/backups - - logs_data:/app/logs - ports: - - "5000:5000" - restart: unless-stopped - healthcheck: - test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:5000/health || exit 1"] - interval: 30s - timeout: 15s - retries: 3 - start_period: 90s - -# Volumes persistants -volumes: - postgres_data: - backup_data: - logs_data: - -# Utilisation du réseau par défaut -networks: - default: - name: regisflow-network \ No newline at end of file diff --git a/postgresql.conf b/postgresql.conf deleted file mode 100644 index 8f17cc7..0000000 --- a/postgresql.conf +++ /dev/null @@ -1,52 +0,0 @@ -# Configuration PostgreSQL optimisée pour production RegisFlow - -# CONNECTIONS AND AUTHENTICATION -listen_addresses = '*' -port = 5432 -max_connections = 100 -superuser_reserved_connections = 3 - -# MEMORY -shared_buffers = 256MB -effective_cache_size = 512MB -work_mem = 4MB -maintenance_work_mem = 64MB - -# WRITE AHEAD LOG -wal_level = replica -max_wal_size = 1GB -min_wal_size = 80MB -checkpoint_completion_target = 0.7 -wal_buffers = 16MB - -# QUERY TUNING -random_page_cost = 1.1 -effective_io_concurrency = 200 - -# LOGGING -log_destination = 'stderr' -logging_collector = on -log_directory = 'log' -log_filename = 'postgresql-%Y-%m-%d.log' -log_rotation_age = 1d -log_rotation_size = 100MB -log_min_duration_statement = 1000 -log_checkpoints = on -log_connections = on -log_disconnections = on -log_lock_waits = on -log_statement = 'ddl' - -# AUTOVACUUM -autovacuum = on -autovacuum_max_workers = 3 -autovacuum_naptime = 30s - -# LOCALE AND FORMATTING -datestyle = 'iso, mdy' -timezone = 'Europe/Paris' -lc_messages = 'en_US.utf8' -lc_monetary = 'en_US.utf8' -lc_numeric = 'en_US.utf8' -lc_time = 'en_US.utf8' -default_text_search_config = 'pg_catalog.english' \ No newline at end of file diff --git a/replit.md b/replit.md index 8d8888c..72d8a4d 100644 --- a/replit.md +++ b/replit.md @@ -276,23 +276,21 @@ Preferred communication style: Simple, everyday language. ### Production Deployment System (January 11, 2025) - ✅ Complete production deployment configuration with Docker Compose -- ✅ Automated deployment script (deploy-production.sh) with safety checks - ✅ Production-optimized Dockerfile with multi-stage builds and security hardening -- ✅ PostgreSQL production configuration with performance tuning -- ✅ Nginx reverse proxy configuration with SSL/TLS and security headers - ✅ Health check endpoints for monitoring and load balancer integration -- ✅ Environment-specific configurations (.env.production template) - ✅ Resource limits and logging configuration for production containers - ✅ Persistent volume management for data persistence and backups - ✅ Production security features: non-root user, secure cookies, session management - ✅ Replit Deployment integration ready for one-click production deployment -- ✅ All production configurations validated and deployment suggested to user - ✅ Photo capture system fully integrated with database storage - ✅ Modal de détails des ventes opérationnel avec support complet des photos - ✅ API et schéma de base de données synchronisés pour la production - ✅ Bug critique corrigé : mapping camelCase/snake_case pour photo_ticket - ✅ NewSaleForm.tsx corrigé pour inclure photoTicket dans la soumission - ✅ API routes.ts corrigé avec mapping automatique des photos +- ✅ **Production Cleanup**: Removed all unnecessary deployment files and debug code +- ✅ **Clean Architecture**: Simplified to essential files only (Dockerfile, docker-compose.yml, init.sql) +- ✅ **Debug Removal**: All debug logs and temporary files cleaned for production - ✅ RegisFlow prêt pour déploiement en production avec toutes les fonctionnalités ### Docker Configuration & Cleanup (January 9, 2025) diff --git a/server/prod-start.js b/server/prod-start.js deleted file mode 100644 index a8a1d1a..0000000 --- a/server/prod-start.js +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env node - -// Polyfill pour import.meta.dirname dans Node.js 18 -import { fileURLToPath } from 'url'; -import path from 'path'; -import fs from 'fs'; - -// Obtenir le répertoire courant -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); -const projectRoot = path.resolve(__dirname, '..'); - -// Lire le fichier dist/index.js et remplacer import.meta.dirname -const distPath = path.join(projectRoot, 'dist', 'index.js'); -let distContent = fs.readFileSync(distPath, 'utf-8'); - -// Remplacer toutes les instances de import.meta.dirname par une valeur statique -const replacement = `"${projectRoot.replace(/\\/g, '\\\\')}"`; -distContent = distContent.replace(/import\.meta\.dirname/g, replacement); - -// Aussi corriger les chemins pour le serveur statique -distContent = distContent.replace(/path3\.resolve\(\s*import\.meta\.dirname,\s*"public"\s*\)/g, - `path3.resolve("${projectRoot.replace(/\\/g, '\\\\')}", "public")`); - -// Écrire le fichier modifié -fs.writeFileSync(distPath, distContent); - -console.log('✅ Node.js 18 compatibility fix applied'); - -// Démarrer l'application -import('../dist/index.js').catch(console.error); \ No newline at end of file diff --git a/test-production-ready.sh b/test-production-ready.sh deleted file mode 100755 index 856c6b3..0000000 --- a/test-production-ready.sh +++ /dev/null @@ -1,166 +0,0 @@ -#!/bin/bash - -# Script de validation pour RegisFlow - Prêt pour la production -# Ce script vérifie que tous les composants sont correctement configurés - -set -e - -# Couleurs pour les messages -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -RED='\033[0;31m' -BLUE='\033[0;34m' -NC='\033[0m' - -log_info() { - echo -e "${BLUE}ℹ️ $1${NC}" -} - -log_success() { - echo -e "${GREEN}✅ $1${NC}" -} - -log_warning() { - echo -e "${YELLOW}⚠️ $1${NC}" -} - -log_error() { - echo -e "${RED}❌ $1${NC}" -} - -echo "🚀 Validation RegisFlow - Prêt pour la production" -echo "==================================================" - -# 1. Vérifier les fichiers essentiels -log_info "Vérification des fichiers essentiels..." - -REQUIRED_FILES=( - "package.json" - "Dockerfile" - "docker-compose.yml" - "init.sql" - "init-db.sh" - "docker-entrypoint-simple.sh" - "replit.md" -) - -for file in "${REQUIRED_FILES[@]}"; do - if [ -f "$file" ]; then - log_success "Fichier présent: $file" - else - log_error "Fichier manquant: $file" - exit 1 - fi -done - -# 2. Vérifier les permissions des scripts -log_info "Vérification des permissions des scripts..." - -EXECUTABLE_FILES=( - "init-db.sh" - "docker-entrypoint-simple.sh" - "deploy-production.sh" -) - -for file in "${EXECUTABLE_FILES[@]}"; do - if [ -x "$file" ]; then - log_success "Permissions OK: $file" - else - log_warning "Ajout des permissions: $file" - chmod +x "$file" - fi -done - -# 3. Vérifier la structure de la base de données -log_info "Vérification de la structure de la base de données..." - -if command -v node >/dev/null 2>&1; then - if node -e " - const { db } = require('./server/db.ts'); - const { sales } = require('./shared/schema.ts'); - console.log('Schema validation passed'); - process.exit(0); - " 2>/dev/null; then - log_success "Schéma de base de données valide" - else - log_warning "Impossible de valider le schéma (normal en développement)" - fi -else - log_warning "Node.js non trouvé, validation du schéma ignorée" -fi - -# 4. Vérifier init.sql pour photo_ticket -log_info "Vérification du script SQL..." - -if grep -q "photo_ticket TEXT" init.sql; then - log_success "Colonne photo_ticket présente dans init.sql" -else - log_error "Colonne photo_ticket manquante dans init.sql" - exit 1 -fi - -# 5. Vérifier les dépendances Docker -log_info "Vérification de Docker..." - -if command -v docker >/dev/null 2>&1; then - log_success "Docker installé" - - if command -v docker-compose >/dev/null 2>&1; then - log_success "Docker Compose installé" - else - log_warning "Docker Compose non trouvé (docker compose moderne peut être utilisé)" - fi -else - log_warning "Docker non installé (requis pour le déploiement)" -fi - -# 6. Vérifier les variables d'environnement de production -log_info "Vérification des variables d'environnement..." - -if [ -f ".env.production" ]; then - log_success "Fichier .env.production présent" - - # Vérifier les variables critiques - REQUIRED_VARS=( - "POSTGRES_PASSWORD" - "SESSION_SECRET" - ) - - for var in "${REQUIRED_VARS[@]}"; do - if grep -q "^${var}=" .env.production; then - log_success "Variable configurée: $var" - else - log_warning "Variable manquante dans .env.production: $var" - fi - done -else - log_warning "Fichier .env.production manquant (recommandé pour la production)" -fi - -# 7. Vérifier la configuration du build -log_info "Vérification de la configuration de build..." - -if grep -q "photo_ticket" shared/schema.ts; then - log_success "Schema TypeScript mis à jour avec photo_ticket" -else - log_error "Schema TypeScript manque photo_ticket" - exit 1 -fi - -# 8. Résumé final -echo "" -echo "==================================================" -log_success "🎉 Validation terminée avec succès!" -echo "" -log_info "Statut du déploiement:" -log_success "✅ Base de données: Prête (avec support photo_ticket)" -log_success "✅ Application: Prête (capture photo complète)" -log_success "✅ Docker: Configuré pour la production" -log_success "✅ Scripts: Exécutables et validés" -log_success "✅ Sécurité: Configuration recommandée" -echo "" -log_info "🚀 RegisFlow est prêt pour la mise en production!" -log_info "💡 Utilisez 'docker-compose up -d' pour déployer" -log_info "🔐 Credentials par défaut: admin / admin123" -log_warning "⚠️ Changez le mot de passe admin après le premier déploiement" -echo "" \ No newline at end of file