# 🛠️ Commandes Utilisées pour le Déploiement MayiMavaStore (Hetzner VPS)

Ce fichier liste les commandes exécutées dans cette session pour configurer l'infrastructure de production, déployer les mises à jour et gérer les environnements sécurisés.

---

## 💻 1. Commandes Exécutées Localement (Windows)

### 🔍 Résolution DNS et Vérification
Sert à vérifier si les modifications DNS faites sur Hostinger pointent bien vers la nouvelle adresse IP du VPS Hetzner (`178.105.192.2`).
```powershell
nslookup mayimavastore.com
nslookup www.mayimavastore.com
nslookup api.mayimavastore.com
nslookup admin0712.mayimavastore.com
```

### 📦 Déploiement de l'environnement de Production (.env.prod)
Copie le fichier d'environnement de production sécurisé contenant les secrets configurés pour le serveur de production.
```powershell
scp -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" MayiMavaStoreBackendPro\.env.prod deployer@178.105.192.2:/home/deployer/app/MayiMavaStoreBackendPro/.env.prod
```

### 🔨 Compilation et Déploiement des Builds Frontends
Sert à compiler les codes source des applications React localement avec la configuration de production (WebSockets activés), puis à comprimer les builds (`dist`), les transférer et les décompresser sur le VPS.

```powershell
# Compiler le Frontend Client (avec VITE_NOTIFICATION_STRATEGY=websocket)
cd MayiMavaStoreFrontend
npm run build
cd ..

# Compiler le Frontend Admin (avec VITE_NOTIFICATION_STRATEGY=websocket)
cd MayiMavaStoreAdminFrontend
npm run build
cd ..
```

#### Frontend Public :
```powershell
# 1. Compresser le build
tar -czf frontend-dist.tar.gz -C MayiMavaStoreFrontend/dist .

# 2. Transférer l'archive sur le serveur
scp -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" frontend-dist.tar.gz deployer@178.105.192.2:/home/deployer/app/frontend-dist.tar.gz

# 3. Décompresser dans le dossier final sur le VPS
ssh -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" deployer@178.105.192.2 "cd /home/deployer/app/frontend-dist && rm -rf * && tar -xzf ../frontend-dist.tar.gz && rm ../frontend-dist.tar.gz"

# 4. Transférer la configuration Nginx SPA
scp -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" MayiMavaStoreFrontend\nginx.conf deployer@178.105.192.2:/home/deployer/app/frontend-dist/nginx.conf
```

#### Frontend Admin :
```powershell
# 1. Compresser le build
tar -czf admin-frontend-dist.tar.gz -C MayiMavaStoreAdminFrontend/dist .

# 2. Transférer l'archive
scp -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" admin-frontend-dist.tar.gz deployer@178.105.192.2:/home/deployer/app/admin-frontend-dist.tar.gz

# 3. Décompresser sur le VPS
ssh -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" deployer@178.105.192.2 "cd /home/deployer/app/admin-frontend-dist && rm -rf * && tar -xzf ../admin-frontend-dist.tar.gz && rm ../admin-frontend-dist.tar.gz"

# 4. Transférer la configuration Nginx SPA
scp -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" MayiMavaStoreAdminFrontend\nginx.conf deployer@178.105.192.2:/home/deployer/app/admin-frontend-dist/nginx.conf
```

---

## ☁️ 2. Commandes Exécutées sur le VPS (Hetzner Ubuntu)

### 🔄 Redémarrage des Services Backend
Redémarre les services d'API, de Websockets et de traitement de files d'attente pour prendre en compte les changements apportés dans le fichier `.env.prod`.
```bash
docker compose -f /home/deployer/app/docker-compose.yml restart api reverb queue-worker
```

### 🔄 Redémarrage de Traefik (Edge Router)
Force Traefik à redémarrer afin de renégocier et générer immédiatement les certificats SSL Let's Encrypt après la propagation de la configuration DNS.
```bash
docker compose -f /home/deployer/app/docker-compose.yml restart traefik
```

### 🔄 Redémarrage des Serveurs Frontends Nginx
Redémarre les serveurs Nginx hébergeant les frontends pour charger les nouveaux fichiers de build deployés.
```bash
docker compose -f /home/deployer/app/docker-compose.yml restart frontend admin-frontend
```

### 📊 Surveillance et Diagnostic
Permet de s'assurer que tous les conteneurs sont lancés, de vérifier leur consommation, et d'analyser les journaux de validation SSL Let's Encrypt.
```bash
# Vérifier le statut des 8 conteneurs Docker
docker compose -f /home/deployer/app/docker-compose.yml ps

# Regarder les 50 derniers journaux de Traefik
docker compose -f /home/deployer/app/docker-compose.yml logs --tail=50 traefik
```

---

## 🛠️ 3. Mise à Jour et Correctif : Polling HTTP & Largeur des Toasts (27 Mai 2026)

### 💻 Commandes Exécutées Localement (Windows)
```powershell
# 1. Compilation des applications frontends avec support WebSocket
cd MayiMavaStoreFrontend
npm run build
cd ../MayiMavaStoreAdminFrontend
npm run build:prod
cd ..

# 2. Compression et archivage des builds dist
tar -czf frontend-dist.tar.gz -C MayiMavaStoreFrontend/dist .
tar -czf admin-frontend-dist.tar.gz -C MayiMavaStoreAdminFrontend/dist .

# 3. Transfert des archives des builds sur le serveur VPS Hetzner
scp -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" -P 22 -o StrictHostKeyChecking=no frontend-dist.tar.gz deployer@178.105.192.2:/home/deployer/app/frontend-dist.tar.gz
scp -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" -P 22 -o StrictHostKeyChecking=no admin-frontend-dist.tar.gz deployer@178.105.192.2:/home/deployer/app/admin-frontend-dist.tar.gz

# 4. Transfert du fichier channels.php contenant le canal App.Models.User.{id}
scp -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" -P 22 -o StrictHostKeyChecking=no MayiMavaStoreBackendPro\routes\channels.php deployer@178.105.192.2:/home/deployer/app/MayiMavaStoreBackendPro/routes/channels.php

# 5. Décompression et nettoyage des dossiers de build dist sur le VPS Hetzner
ssh -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" -o StrictHostKeyChecking=no deployer@178.105.192.2 "cd /home/deployer/app/frontend-dist && rm -rf assets && tar -xzf ../frontend-dist.tar.gz && rm ../frontend-dist.tar.gz"
ssh -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" -o StrictHostKeyChecking=no deployer@178.105.192.2 "cd /home/deployer/app/admin-frontend-dist && rm -rf assets && tar -xzf ../admin-frontend-dist.tar.gz && rm ../admin-frontend-dist.tar.gz"

# 6. Transfert des fichiers de configuration Nginx mis à jour
scp -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" -P 22 -o StrictHostKeyChecking=no MayiMavaStoreFrontend\nginx.conf deployer@178.105.192.2:/home/deployer/app/frontend-dist/nginx.conf
scp -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" -P 22 -o StrictHostKeyChecking=no MayiMavaStoreAdminFrontend\nginx.conf deployer@178.105.192.2:/home/deployer/app/admin-frontend-dist/nginx.conf

# 7. Redémarrage des conteneurs Nginx (front), Reverb, API et api-web sur le VPS pour appliquer les correctifs
# (Note : le redémarrage d'api-web est nécessaire pour que Nginx résolve la nouvelle adresse IP du conteneur API PHP-FPM)
ssh -i "C:\Users\Groupe Technosesns\.ssh\mayimava_vps_key" -o StrictHostKeyChecking=no deployer@178.105.192.2 "cd /home/deployer/app && docker compose restart frontend admin-frontend reverb api api-web"

# 8. Suppression locale des archives de builds temporaires
Remove-Item frontend-dist.tar.gz, admin-frontend-dist.tar.gz
```

---

## 💾 4. Gestion et Suivi des Sauvegardes (Google Drive)

Le système de sauvegarde automatique est entièrement configuré. Voici les commandes pour l'administrer.

### 💻 Commandes Exécutées Localement (Windows)
Pour lancer des actions sur les sauvegardes depuis votre ordinateur de travail, utilisez le script interactif `backup.ps1` situé à la racine du projet :

```powershell
# Exécuter le script interactif de sauvegarde/restauration/logs
./backup.ps1
```
*Ce script vous présentera un menu pour : lancer une sauvegarde manuelle immédiate, voir les logs en direct, lister les fichiers sur Google Drive, vérifier l'espace disponible, lancer la restauration interactive, ou forcer la rotation des archives.*

---

### ☁️ Commandes Exécutées sur le VPS (Hetzner Ubuntu)

#### 🏃 Lancer la sauvegarde manuellement depuis le serveur
```bash
/home/deployer/app/backup-mayimava.sh
```

#### 📊 Voir les logs de sauvegarde en temps réel
```bash
tail -f /var/log/mayimava-backup.log
```

#### 📅 Consulter la planification automatique (Cron)
```bash
crontab -l
```
*La planification actuelle lance le script 4 fois par jour (00:00, 06:00, 12:00, 18:00 UTC) et le nettoyage des anciennes sauvegardes tous les dimanches à 03:00 UTC.*

#### ☁️ Lister les fichiers sur Google Drive depuis le VPS
```bash
# Lister les sauvegardes quotidiennes
rclone lsd gdrive:MayiMavaStore-Backups/daily/

# Lister les sauvegardes hebdomadaires
rclone lsd gdrive:MayiMavaStore-Backups/weekly/

# Lister les sauvegardes mensuelles
rclone lsd gdrive:MayiMavaStore-Backups/monthly/

# Vérifier l'espace utilisé / disponible sur le Drive
rclone about gdrive:
```

#### 🛡️ Restauration Manuelle
```bash
# Lancer le script de restauration interactif sécurisé
/home/deployer/app/restore-mayimava.sh
```