From ba0dea40e1ad3715177c97697e627e71dfab37b6 Mon Sep 17 00:00:00 2001 From: Folzo Date: Sat, 4 Apr 2026 09:09:46 +0200 Subject: [PATCH] =?UTF-8?q?Ajout:=20Syst=C3=A8me=20de=20gestion=20et=20syn?= =?UTF-8?q?chronisation=20production?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Script audit-production.sh pour audit complet - Script sync-from-production.sh pour synchronisation facile - Guide WORKFLOW.md pour processus de modification - README pour le dossier scripts - Documentation complรจte du workflow Git --- PUSH-GITEA.md | 84 ++++++++++ docs/WORKFLOW.md | 261 ++++++++++++++++++++++++++++++++ scripts/README.md | 105 +++++++++++++ scripts/audit-production.sh | 194 ++++++++++++++++++++++++ scripts/sync-from-production.sh | 125 +++++++++++++++ 5 files changed, 769 insertions(+) create mode 100644 PUSH-GITEA.md create mode 100644 docs/WORKFLOW.md create mode 100644 scripts/README.md create mode 100755 scripts/audit-production.sh create mode 100755 scripts/sync-from-production.sh diff --git a/PUSH-GITEA.md b/PUSH-GITEA.md new file mode 100644 index 0000000..cbd2e9b --- /dev/null +++ b/PUSH-GITEA.md @@ -0,0 +1,84 @@ +# ๐Ÿš€ Push sur Gitea - Instructions + +## ร‰tape 1 : Crรฉer le dรฉpรดt sur Gitea + +1. Aller sur https://gitea.folzocorp.fr +2. Se connecter avec ton compte Folzo +3. Cliquer sur **+** โ†’ **Nouveau dรฉpรดt** +4. Remplir : + - **Nom du dรฉpรดt** : `effi` + - **Description** : Assistant IA personnel self-hosted + - **Visibilitรฉ** : Privรฉ (recommandรฉ) + - **Initialiser avec README** : โŒ Dรฉcocher (dรฉjร  fait) +5. Cliquer sur **Crรฉer le dรฉpรดt** + +## ร‰tape 2 : Gรฉnรฉrer un token d'accรจs + +1. En haut ร  droite, cliquer sur ton avatar โ†’ **Paramรจtres** +2. Dans le menu de gauche, cliquer sur **Applications** +3. Dans la section **Gรฉrer les jetons d'accรจs** +4. Cliquer sur **Gรฉnรฉrer un nouveau jeton** +5. Nom : `effi-local` +6. Cocher **repo** (accรจs complet aux dรฉpรดts) +7. Cliquer sur **Gรฉnรฉrer le jeton** +8. **Copier le token** (il ne s'affiche qu'une fois !) + +## ร‰tape 3 : Configurer le remote et pousser + +Ouvrir un terminal dans le dossier Effi et exรฉcuter : + +```bash +# Se placer dans le dossier +cd /home/folzo/Documents/OpenCode/Projets/Effi + +# Ajouter le remote (remplacer TON_TOKEN par le token copiรฉ) +git remote add origin https://Folzo:TON_TOKEN@gitea.folzocorp.fr/Folzo/effi.git + +# Renommer la branche en main (optionnel mais recommandรฉ) +git branch -m main + +# Pousser sur Gitea +git push -u origin main +``` + +## Vรฉrification + +Si tout s'est bien passรฉ, tu devrais voir : +``` +ร‰numรฉration des objets: 35, fait. +Dรฉcompte des objets: 100% (35/35), fait. +Compression par delta en utilisant jusqu'ร  8 fils +Compression des objets: 100% (32/32), fait. +ร‰criture des objets: 100% (35/35), 45.12 KiB | 15.04 MiB/s, fait. +Total 35 (delta 2), rรฉutilisรฉs 0 (delta 0), rรฉutilisรฉs du pack 0 +remote: Resolving deltas: 100% (2/2), done. +To https://gitea.folzocorp.fr/Folzo/effi.git + * [new branch] main -> main +branch 'main' set up to track 'origin/main'. +``` + +Tu peux alors aller sur https://gitea.folzocorp.fr/Folzo/effi pour voir ton dรฉpรดt ! + +--- + +## Commandes Git utiles pour la suite + +```bash +# Voir l'รฉtat +git status + +# Ajouter des modifications +git add . + +# Faire un commit +git commit -m "Description des changements" + +# Pousser sur Gitea +git push + +# Rรฉcupรฉrer les modifications +git pull + +# Voir l'historique +git log --oneline +``` diff --git a/docs/WORKFLOW.md b/docs/WORKFLOW.md new file mode 100644 index 0000000..ca175ed --- /dev/null +++ b/docs/WORKFLOW.md @@ -0,0 +1,261 @@ +# ๐Ÿ”„ Workflow de Gestion - Guide Pratique + +## Objectif + +Ce guide t'aide ร  gรฉrer les modifications de ton infrastructure Effi sans stress, tout en maintenant ton dรฉpรดt Gitea ร  jour. + +--- + +## ๐ŸŽฏ Le Workflow Recommandรฉ (KISS) + +**Principe** : Toujours deux sources de vรฉritรฉ cohรฉrentes +- **Production** (effi-server) : Fait tourner les services +- **Gitea** (dรฉpรดt) : Archive et documente la config + +``` +โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” +โ”‚ effi-server โ”‚ โ†โ”€โ”€โ”€โ”€โ†’ โ”‚ Gitea โ”‚ +โ”‚ (Production) โ”‚ sync โ”‚ (Archive) โ”‚ +โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ”Œโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ” + โ”‚ Test โ”‚ โ† Tu fais tes tests ici + โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ + โ”‚ + โ”Œโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ” + โ”‚ Push โ”‚ โ† Quand รงa marche, tu pousses + โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ +``` + +--- + +## ๐Ÿ“‹ Procรฉdure Standard + +### Quand tu veux faire une modification : + +#### ร‰TAPE 1 : Sauvegarde (30 secondes) + +```bash +cd ~/effi +docker compose down # Optionnel, mais plus sรปr +cd .. +cp -r Effi Effi-BACKUP-$(date +%Y%m%d) +cd Effi +``` + +> ๐Ÿ’ก **Pourquoi ?** Si tu casses quelque chose, tu peux revenir en arriรจre en 10 secondes. + +#### ร‰TAPE 2 : Modification (5-30 minutes) + +Fais tes changements sur effi-server : +```bash +# Exemple: Ajouter un service +nano docker-compose.yml + +# Tester +docker compose up -d + +# Vรฉrifier que รงa marche +docker compose ps +docker logs [nom-du-service] +``` + +#### ร‰TAPE 3 : Audit (1 minute) + +```bash +./scripts/audit-production.sh +``` + +Note les diffรฉrences affichรฉes. + +#### ร‰TAPE 4 : Synchronisation avec Gitea (2 minutes) + +**Sur ton PC (pas sur effi-server) :** + +```bash +cd ~/Documents/OpenCode/Projets/Effi + +# 1. Rรฉcupรฉrer les fichiers depuis effi-server +scp effi@192.168.1.27:~/effi/docker-compose.yml . +scp effi@192.168.1.27:~/effi/.env .env.production # Si nouvelles variables + +# 2. Comparer avec git diff +git diff + +# 3. Si c'est bon, commiter +git add . +git commit -m "Ajout service XXX - [date]" + +# 4. Pousser +git push +``` + +#### ร‰TAPE 5 : Documentation (optionnel, 5 minutes) + +Si tu as ajoutรฉ un service important, mets ร  jour la doc : +```bash +# Modifier docs/02-configuration/... +nano docs/02-configuration/nouveau-service.md + +git add . +git commit -m "Documentation: Ajout service XXX" +git push +``` + +--- + +## ๐Ÿ†˜ En Cas de Problรจme + +### Si tu as cassรฉ quelque chose : + +```bash +# 1. Retour arriรจre rapide +cd ~/effi +docker compose down +cd .. +rm -rf Effi +cp -r Effi-BACKUP-YYYYMMDD Effi # Date de ta derniรจre sauvegarde +cd Effi +docker compose up -d + +# 2. C'est rรฉparรฉ ! +``` + +### Si tu as oubliรฉ de sauvegarder : + +```bash +# Rรฉcupรฉrer la derniรจre version stable depuis Gitea +cd ~/effi +docker compose down +cd .. +rm -rf Effi +git clone https://gitea.folzocorp.fr/Folzo/effi.git +cd effi +cp .env.example .env # Recrรฉer le .env +# ร‰diter .env avec tes vraies valeurs +docker compose up -d +``` + +--- + +## ๐Ÿ“ Checklist Avant Modification + +Avant chaque changement, vรฉrifie : + +- [ ] Sauvegarde crรฉรฉe (`cp -r Effi Effi-BACKUP-...`) +- [ ] Services actuels notรฉs (`docker compose ps`) +- [ ] Espace disque suffisant (`df -h`) +- [ ] Connexion ร  folzo-Corp OK (`ping 192.168.1.11`) + +--- + +## ๐Ÿ”„ Frรฉquence de Synchronisation + +| Situation | Action | +|-----------|--------| +| **Modification mineure** (port, variable) | Sync immรฉdiate | +| **Nouveau service testรฉ** | Sync quand stable (aprรจs 24-48h) | +| **Correction bug** | Sync immรฉdiate avec message explicite | +| **Grosse refonte** | Sync par รฉtapes, avec commits intermรฉdiaires | +| **Rien ne marche plus** | Restore backup, ne pas sync la config cassรฉe | + +--- + +## ๐ŸŽ“ Exemple Concret + +**Scรฉnario** : Tu veux ajouter un service de monitoring (Uptime Kuma) + +```bash +# 1. Backup +cd ~/effi/.. +cp -r Effi Effi-BACKUP-$(date +%Y%m%d) + +# 2. Modification +cd ~/effi +nano docker-compose.yml +# Ajouter le service uptime-kuma... + +# 3. Test +docker compose up -d uptime-kuma +docker compose ps # Vรฉrifier qu'il dรฉmarre +curl http://192.168.1.27:3001 # Vรฉrifier l'interface + +# 4. Attendre 24h pour รชtre sรปr que c'est stable + +# 5. Sync avec Gitea (sur ton PC) +scp effi@192.168.1.27:~/effi/docker-compose.yml ~/Documents/OpenCode/Projets/Effi/ +cd ~/Documents/OpenCode/Projets/Effi +git add . +git commit -m "Ajout Uptime Kuma pour monitoring (port 3001)" +git push +``` + +--- + +## ๐Ÿ’ก Bonnes Pratiques + +### 1. Commits atomiques + +Un commit = une modification logique + +```bash +# โŒ Mauvais +git commit -m "Modifications diverses" + +# โœ… Bon +git commit -m "Ajout service Watchtower (mร j auto containers)" +git commit -m "Fix: Correction port CouchDB 5984->5985" +``` + +### 2. Messages descriptifs + +```bash +git commit -m "Ajout: Service n8n pour automatisation (port 5678)" +git commit -m "Update: Upgrade Qdrant v1.8 -> v1.9" +git commit -m "Fix: Rรฉsolution conflit port 8200" +``` + +### 3. Tester avant de synchroniser + +Jamais de sync direct sans test ! + +### 4. Garder l'historique + +```bash +# Voir ce qui a changรฉ +git log --oneline -10 + +# Comparer avec une version ancienne +git diff HEAD~5 docker-compose.yml +``` + +--- + +## ๐Ÿ”ง Commandes Essentielles (ร  garder sous la main) + +```bash +# Sur effi-server +~/effi/scripts/audit-production.sh # Audit complet +docker compose ps # Voir les services +docker compose logs -f [service] # Voir les logs +docker compose down && docker compose up -d # Redรฉmarrer propre + +# Sur ton PC (synchronisation) +git status # Voir les changements +git diff # Voir les diffรฉrences +git add . && git commit -m "message" # Commiter +git push # Pousser sur Gitea +git pull # Rรฉcupรฉrer depuis Gitea +``` + +--- + +## ๐Ÿ“š Ressources + +- **Dรฉpรดt Gitea** : https://gitea.folzocorp.fr/Folzo/effi +- **Audit** : `~/effi/scripts/audit-production.sh` +- **Documentation** : `~/Documents/OpenCode/Projets/Effi/docs/` + +--- + +*Derniรจre mise ร  jour : Avril 2026* diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 0000000..ed6f2e5 --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,105 @@ +# ๐Ÿ› ๏ธ Scripts Utilitaires + +Ce dossier contient des scripts pour faciliter la gestion d'Effi. + +--- + +## Scripts disponibles + +### ๐Ÿ” `audit-production.sh` + +**Usage** : `./audit-production.sh` + +**Oรน l'exรฉcuter** : Sur effi-server (dans ~/effi) + +**Fait** : +- Liste tous les conteneurs en cours d'exรฉcution +- Affiche les images Docker utilisรฉes +- Montre les variables d'environnement (anonymisรฉes) +- Vรฉrifie l'utilisation des volumes +- Liste les ports en รฉcoute +- Vรฉrifie l'รฉtat Git (si initialisรฉ) +- Teste la connectivitรฉ avec les services externes +- Donne des recommandations + +**Exemple de sortie** : +``` +โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• + ๐Ÿ” AUDIT EFFI - Production Server +โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• + +๐Ÿ“ฆ CONTENEURS DOCKER +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +NAME STATUS PORTS +open-webui Up 3 days 0.0.0.0:3000->8080/tcp +qdrant Up 3 days 0.0.0.0:6333->6333/tcp +... + +๐Ÿ’ก RECOMMANDATIONS +โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ +โœ“ .env.example est ร  jour +โš ๏ธ Le dรฉpรดt local et Gitea sont dรฉsynchronisรฉs +``` + +--- + +### ๐Ÿ”„ `sync-from-production.sh` + +**Usage** : `./sync-from-production.sh` + +**Oรน l'exรฉcuter** : Sur ton PC (dans le dรฉpรดt Git Effi) + +**Fait** : +- Se connecte ร  effi-server via SSH +- Rรฉcupรจre le docker-compose.yml +- Rรฉcupรจre le .env (anonymisรฉ โ†’ .env.production) +- Rรฉcupรจre les scripts +- Affiche les diffรฉrences avec Git +- Guide pour le commit/push + +**Prรฉrequis** : +- Clรฉ SSH configurรฉe vers effi-server +- รŠtre dans le dรฉpรดt Git (~/Documents/OpenCode/Projets/Effi) + +**Workflow** : +```bash +cd ~/Documents/OpenCode/Projets/Effi +./scripts/sync-from-production.sh +# Vรฉrifier les diffรฉrences +git diff +# Commiter si OK +git add . && git commit -m "Sync production" +git push +``` + +--- + +## Installation sur effi-server + +Pour utiliser ces scripts sur effi-server, copie-les depuis le dรฉpรดt : + +```bash +# Sur effi-server +cd ~/effi +mkdir -p scripts + +# Copier depuis le dรฉpรดt (via SCP depuis ton PC) +# OU simplement crรฉer les fichiers manuellement +``` + +--- + +## Futurs scripts ร  crรฉer + +- [ ] `backup.sh` - Sauvegarde automatique des volumes +- [ ] `update.sh` - Mise ร  jour des images Docker +- [ ] `deploy.sh` - Dรฉploiement depuis Gitea (GitOps avancรฉ) +- [ ] `health-check.sh` - Vรฉrification santรฉ complรจte + +--- + +## โš ๏ธ Sรฉcuritรฉ + +- Les scripts ne contiennent pas de mots de passe +- Les scripts ne modifient pas les donnรฉes utilisateur +- Toujours faire une sauvegarde avant d'exรฉcuter un script de modification diff --git a/scripts/audit-production.sh b/scripts/audit-production.sh new file mode 100755 index 0000000..5b6c4eb --- /dev/null +++ b/scripts/audit-production.sh @@ -0,0 +1,194 @@ +#!/bin/bash +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# EFFI - Script d'audit de la production +# Usage: ./audit-production.sh +# Ce script gรฉnรจre un rapport complet de l'รฉtat actuel +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• + +set -e + +# Couleurs pour la lisibilitรฉ +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo " ๐Ÿ” AUDIT EFFI - Production Server" +echo " Date: $(date)" +echo " Host: $(hostname)" +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo "" + +# Vรฉrifier qu'on est dans le bon dossier +if [ ! -f "docker-compose.yml" ]; then + echo -e "${RED}โŒ Erreur: docker-compose.yml non trouvรฉ${NC}" + echo "Lancez ce script depuis le dossier ~/effi" + exit 1 +fi + +echo -e "${GREEN}โœ“ Dossier effi dรฉtectรฉ${NC}" +echo "" + +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# 1. ร‰TAT DES CONTENEURS +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +echo "๐Ÿ“ฆ CONTENEURS DOCKER" +echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" +docker compose ps --format "table {{.Name}}\t{{.Status}}\t{{.Ports}}" 2>/dev/null || echo "Aucun conteneur en cours d'exรฉcution" +echo "" + +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# 2. IMAGES UTILISร‰ES +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +echo "๐Ÿณ IMAGES DOCKER" +echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" +docker compose images 2>/dev/null || echo "Aucune image" +echo "" + +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# 3. STRUCTURE DES FICHIERS +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +echo "๐Ÿ“ STRUCTURE DES FICHIERS" +echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" +ls -la | grep -E "^-|^d" | grep -v "^d.*\.git" | awk '{print $9, "(" $5 " bytes)"}' +echo "" + +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# 4. VARIABLES D'ENVIRONNEMENT (anonymisรฉes) +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +echo "โš™๏ธ VARIABLES D'ENVIRONNEMENT" +echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" +if [ -f ".env" ]; then + echo "Fichier .env prรฉsent" + echo "Variables dรฉfinies:" + grep -E "^[A-Z].*=" .env | cut -d= -f1 | sed 's/^/ - /' + echo "" + echo "โš ๏ธ Pour la sรฉcuritรฉ, les valeurs sont masquรฉes" +else + echo -e "${RED}โŒ Fichier .env manquant!${NC}" +fi +echo "" + +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# 5. VOLUMES ET STOCKAGE +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +echo "๐Ÿ’พ VOLUMES ET STOCKAGE" +echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" +echo "Dossiers de donnรฉes:" +du -sh *-data 2>/dev/null || echo " Aucun dossier *-data trouvรฉ" +du -sh *-storage 2>/dev/null || echo " Aucun dossier *-storage trouvรฉ" +echo "" +echo "Utilisation disque:" +df -h . | tail -1 +echo "" + +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# 6. PORTS EN ร‰COUTE +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +echo "๐ŸŒ PORTS EN ร‰COUTE" +echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" +sudo ss -tlnp | grep -E "3000|3011|3100|5678|5984|6333|8000|8100|8200|9099|11434" || echo "Aucun port Effi dรฉtectรฉ" +echo "" + +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# 7. DIFFร‰RENCES AVEC LE Dร‰Pร”T GIT (si prรฉsent) +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +if [ -d ".git" ]; then + echo "๐Ÿ“ ร‰TAT GIT" + echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" + echo "Branche actuelle: $(git branch --show-current 2>/dev/null || echo 'N/A')" + echo "Dernier commit: $(git log -1 --pretty=format:'%h - %s (%ar)' 2>/dev/null || echo 'N/A')" + + # Vรฉrifier s'il y a des modifications non commitรฉes + if ! git diff --quiet HEAD 2>/dev/null; then + echo "" + echo -e "${YELLOW}โš ๏ธ Modifications non commitรฉes dรฉtectรฉes:${NC}" + git status --short + else + echo -e "${GREEN}โœ“ Pas de modifications locales${NC}" + fi + + # Vรฉrifier si on est synchronisรฉ avec le remote + if git remote get-url origin >/dev/null 2>&1; then + git fetch origin --quiet 2>/dev/null || true + LOCAL=$(git rev-parse @ 2>/dev/null || echo "0") + REMOTE=$(git rev-parse @{u} 2>/dev/null || echo "0") + if [ "$LOCAL" != "$REMOTE" ] && [ "$REMOTE" != "0" ]; then + echo "" + echo -e "${YELLOW}โš ๏ธ Le dรฉpรดt local et Gitea sont dรฉsynchronisรฉs${NC}" + echo "Commits ร  pousser:" + git log --oneline @{u}.. 2>/dev/null || echo " N/A" + fi + fi +else + echo "๐Ÿ“ ร‰TAT GIT" + echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" + echo -e "${YELLOW}โš ๏ธ Pas de dรฉpรดt Git initialisรฉ${NC}" +fi +echo "" + +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# 8. SERVICES EXTERNES (vรฉrification de connectivitรฉ) +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +echo "๐Ÿ”— CONNECTIVITร‰ SERVICES EXTERNES" +echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" + +# Vรฉrifier Ollama +if curl -s http://192.168.1.11:11434/api/tags >/dev/null 2>&1; then + echo -e "${GREEN}โœ“ Ollama (192.168.1.11:11434) accessible${NC}" +else + echo -e "${YELLOW}โš ๏ธ Ollama (192.168.1.11:11434) inaccessible${NC}" +fi + +# Vรฉrifier speaches +if curl -s http://192.168.1.11:8200/v1/models >/dev/null 2>&1; then + echo -e "${GREEN}โœ“ Speaches STT (192.168.1.11:8200) accessible${NC}" +else + echo -e "${YELLOW}โš ๏ธ Speaches STT (192.168.1.11:8200) inaccessible${NC}" +fi + +# Vรฉrifier openedai-speech +if curl -s http://192.168.1.11:8100/v1/models >/dev/null 2>&1; then + echo -e "${GREEN}โœ“ OpenedAI TTS (192.168.1.11:8100) accessible${NC}" +else + echo -e "${YELLOW}โš ๏ธ OpenedAI TTS (192.168.1.11:8100) inaccessible${NC}" +fi + +echo "" + +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# 9. RECOMMANDATIONS +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +echo "๐Ÿ’ก RECOMMANDATIONS" +echo "โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€" + +# Vรฉrifier si le .env.example est ร  jour +if [ -f ".env.example" ]; then + ENV_VARS=$(grep -E "^[A-Z].*=" .env 2>/dev/null | cut -d= -f1 | sort) + EXAMPLE_VARS=$(grep -E "^[A-Z].*=" .env.example 2>/dev/null | cut -d= -f1 | sort) + + if [ "$ENV_VARS" != "$EXAMPLE_VARS" ]; then + echo -e "${YELLOW}โš ๏ธ Le fichier .env.example n'est pas synchronisรฉ avec .env${NC}" + echo " Variables manquantes dans .env.example:" + comm -23 <(echo "$ENV_VARS") <(echo "$EXAMPLE_VARS") | sed 's/^/ - /' + else + echo -e "${GREEN}โœ“ .env.example est ร  jour${NC}" + fi +else + echo -e "${YELLOW}โš ๏ธ Fichier .env.example manquant${NC}" + echo " Crรฉez-le avec: cp .env .env.example && รฉditez pour masquer les valeurs" +fi + +# Vรฉrifier les backups +if [ -d "../Effi-BACKUP*" ]; then + echo -e "${GREEN}โœ“ Des sauvegardes locales existent${NC}" +else + echo -e "${YELLOW}โš ๏ธ Aucune sauvegarde locale dรฉtectรฉe${NC}" + echo " Crรฉez une sauvegarde avec: cd .. && cp -r Effi Effi-BACKUP-$(date +%Y%m%d)" +fi + +echo "" +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo " Audit terminรฉ!" +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" diff --git a/scripts/sync-from-production.sh b/scripts/sync-from-production.sh new file mode 100755 index 0000000..fdc55e6 --- /dev/null +++ b/scripts/sync-from-production.sh @@ -0,0 +1,125 @@ +#!/bin/bash +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• +# EFFI - Script de synchronisation depuis la production +# Usage: ./sync-from-production.sh +# Ce script rรฉcupรจre la config de effi-server et prรฉpare le commit +# โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• + +set -e + +# Configuration +EFFI_SERVER="effi@192.168.1.27" +REMOTE_PATH="~/effi" +LOCAL_PATH="." + +# Couleurs +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo " ๐Ÿ”„ SYNCHRONISATION DEPUIS LA PRODUCTION" +echo " Serveur: $EFFI_SERVER" +echo " Date: $(date)" +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo "" + +# Vรฉrifier qu'on est dans le dรฉpรดt Git +if [ ! -d ".git" ]; then + echo -e "${RED}โŒ Erreur: Ce script doit รชtre exรฉcutรฉ dans le dรฉpรดt Git Effi${NC}" + echo "Exรฉcutez: cd ~/Documents/OpenCode/Projets/Effi" + exit 1 +fi + +# Vรฉrifier la connexion SSH +echo -e "${BLUE}๐Ÿ”Œ Vรฉrification connexion SSH...${NC}" +if ! ssh -q -o BatchMode=yes -o ConnectTimeout=5 $EFFI_SERVER exit 2>/dev/null; then + echo -e "${RED}โŒ Impossible de se connecter ร  $EFFI_SERVER${NC}" + echo "Vรฉrifiez:" + echo " 1. Que le serveur est allumรฉ" + echo " 2. Que votre clรฉ SSH est configurรฉe" + echo " 3. L'adresse IP ($EFFI_SERVER)" + exit 1 +fi +echo -e "${GREEN}โœ“ Connexion SSH OK${NC}" +echo "" + +# Sauvegarder le .env local s'il existe +if [ -f ".env" ]; then + cp .env .env.local.backup + echo -e "${BLUE}๐Ÿ’พ Sauvegarde du .env local crรฉรฉe (.env.local.backup)${NC}" +fi + +# Rรฉcupรฉrer docker-compose.yml +echo -e "${BLUE}๐Ÿ“ฅ Rรฉcupรฉration de docker-compose.yml...${NC}" +scp $EFFI_SERVER:$REMOTE_PATH/docker-compose.yml $LOCAL_PATH/ +echo -e "${GREEN}โœ“ docker-compose.yml rรฉcupรฉrรฉ${NC}" + +# Rรฉcupรฉrer .env (on le renomme pour ne pas รฉcraser accidentellement) +echo -e "${BLUE}๐Ÿ“ฅ Rรฉcupรฉration de .env (anonymisรฉ)...${NC}" +scp $EFFI_SERVER:$REMOTE_PATH/.env $LOCAL_PATH/.env.production 2>/dev/null || echo -e "${YELLOW}โš ๏ธ Pas de .env sur le serveur${NC}" + +# Anonymiser le .env rรฉcupรฉrรฉ +if [ -f ".env.production" ]; then + echo -e "${BLUE}๐Ÿ”’ Anonymisation des valeurs sensibles...${NC}" + # Remplacer les valeurs par des placeholders + sed -i 's/=.*/=[valeur_production]/g' .env.production + echo -e "${GREEN}โœ“ .env.production crรฉรฉ (valeurs masquรฉes)${NC}" +fi + +# Rรฉcupรฉrer les scripts s'ils existent +echo -e "${BLUE}๐Ÿ“ฅ Rรฉcupรฉration des scripts...${NC}" +scp $EFFI_SERVER:$REMOTE_PATH/scripts/*.sh $LOCAL_PATH/scripts/ 2>/dev/null || echo -e "${YELLOW}โš ๏ธ Pas de scripts sur le serveur${NC}" + +# Vรฉrifier les diffรฉrences +echo "" +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo " ๐Ÿ“Š DIFFร‰RENCES Dร‰TECTร‰ES" +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo "" + +if git diff --quiet HEAD; then + echo -e "${GREEN}โœ“ Aucune diffรฉrence avec le dรฉpรดt${NC}" + echo "La production est dรฉjร  synchronisรฉe avec Gitea." + exit 0 +else + echo -e "${YELLOW}โš ๏ธ Diffรฉrences trouvรฉes:${NC}" + git diff --stat + echo "" + echo -e "${BLUE}Dรฉtails des changements:${NC}" + git diff --color-words +fi + +echo "" +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo " ๐Ÿ“ PROCHAINES ร‰TAPES" +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" +echo "" +echo "Les fichiers ont รฉtรฉ rรฉcupรฉrรฉs depuis la production." +echo "" +echo "Pour finaliser la synchronisation:" +echo "" +echo " 1. ${YELLOW}Vรฉrifiez${NC} les changements:" +echo " git diff" +echo "" +echo " 2. ${YELLOW}Mettez ร  jour${NC} .env.example si de nouvelles variables:" +echo " diff .env.example .env.production" +echo "" +echo " 3. ${YELLOW}Commitez${NC} les changements:" +echo " git add docker-compose.yml" +echo " git commit -m \"Sync: Mise ร  jour depuis production - $(date +%Y-%m-%d)\"" +echo "" +echo " 4. ${YELLOW}Poussez${NC} sur Gitea:" +echo " git push" +echo "" +echo "โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•" + +# Restaurer le .env local +if [ -f ".env.local.backup" ]; then + mv .env.local.backup .env + echo -e "${GREEN}โœ“ Votre .env local a รฉtรฉ restaurรฉ${NC}" +fi + +exit 0