Ajout: Système de gestion et synchronisation production
- 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
This commit is contained in:
@@ -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
|
||||||
|
```
|
||||||
@@ -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*
|
||||||
@@ -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
|
||||||
Executable
+194
@@ -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 "═════════════════════════════════════════════════════════════"
|
||||||
Executable
+125
@@ -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
|
||||||
Reference in New Issue
Block a user