# Procédure de Restauration — Wordly.art

Ce document décrit comment restaurer rapidement et facilement l'application Wordly.art à partir des sauvegardes stockées sur le NAS (`192.168.1.146`), soit en cas de corruption de données sur le serveur principal, soit en cas de sinistre total nécessitant le basculement sur le serveur de secours.

---

## 📋 Table des matières
1. [Restauration sur le serveur principal (192.168.1.151)](#1-restauration-sur-le-serveur-principal-1921681151)
2. [Restauration d'urgence sur le serveur de secours (192.168.1.98)](#2-restauration-durgence-sur-le-serveur-de-secours-192168198)
3. [Vérifications post-restauration](#3-vérifications-post-restauration)

---

## 1. Restauration sur le serveur principal (192.168.1.151)

> 💡 **Cas d'usage :** Corruption de la base de données, erreur humaine (ex: suppression accidentelle), ou besoin de revenir à un état antérieur sur le serveur de production actif.

### Étape 1.1 : Trouver le fichier de sauvegarde à restaurer
Connectez-vous en SSH sur le serveur principal (`192.168.1.151`) et listez les archives disponibles sur le NAS :
```bash
cd /opt/wordly
bash scripts/backup-to-nas.sh --list
```
*Notez le nom de l'archive que vous souhaitez restaurer (ex: `wordly_dr_20260607_120000.tar.gz`).*

### Étape 1.2 : Exécuter la restauration
Lancez la commande suivante en remplaçant `NOM_ARCHIVE.tar.gz` par le nom du fichier choisi :
```bash
sudo bash scripts/disaster-recovery.sh --restore /volume1/backups/wordly/snapshots/NOM_ARCHIVE.tar.gz
```

### Étape 1.3 : Confirmer
Le script vous demandera une confirmation de sécurité. Saisissez textuellement :
```text
RESTORE-ALL
```
Le script arrête automatiquement les conteneurs, restaure la configuration, recrée la base de données PostgreSQL, réinjecte les données, puis relance l'application.

---

## 2. Restauration d'urgence sur le serveur de secours (192.168.1.98)

> ⚠️ **Cas d'usage :** Le serveur principal (`192.168.1.151`) est hors service (panne matérielle, panne réseau majeure, etc.). Vous devez reconstruire l'application sur le serveur `.98` et y rediriger le trafic utilisateur.

### Étape 2.1 : Se connecter au serveur de secours
Connectez-vous en root sur le serveur de secours :
```bash
ssh root@192.168.1.98
```

### Étape 2.2 : Récupérer les outils et les sauvegardes depuis le NAS
Grâce à la clé SSH configurée, téléchargez les scripts de restauration et les archives depuis le NAS :
```bash
# 1. Créer le répertoire pour les scripts
mkdir -p /opt/wordly/scripts

# 2. Télécharger les scripts depuis le NAS
rsync -az -e "ssh -i /root/.ssh/wordly_nas_key" wordly-backup@192.168.1.146:/volume1/backups/wordly/scripts/ /opt/wordly/scripts/

# 3. Télécharger les fichiers de sauvegarde dans le dossier /tmp/
rsync -az -e "ssh -i /root/.ssh/wordly_nas_key" wordly-backup@192.168.1.146:/volume1/backups/wordly/snapshots/ /tmp/
```

### Étape 2.3 : Choisir la sauvegarde et lancer la restauration
Listez les fichiers téléchargés dans `/tmp` pour identifier la dernière sauvegarde :
```bash
ls -lht /tmp/wordly_dr_*.tar.gz
```

Exécutez la restauration complète en remplaçant `NOM_ARCHIVE.tar.gz` :
```bash
bash /opt/wordly/scripts/disaster-recovery.sh --restore /tmp/NOM_ARCHIVE.tar.gz
```

### Étape 2.4 : Confirmer
Saisissez la confirmation de sécurité :
```text
RESTORE-ALL
```

### ⚙️ Automatisation effectuée par le script :
Le script effectue automatiquement les opérations suivantes :
1. Extraction de l'environnement (`.env`), du `docker-compose.yml` et des configurations Docker.
2. Démarrage des conteneurs applicatifs et de la base de données.
3. Restauration de la base de données PostgreSQL.
4. Redémarrage et vérification de la santé de l'application (HTTP Health Check).
5. **Appel de l'API de Nginx Proxy Manager (`192.168.1.184`) pour rediriger automatiquement le domaine `wordly.art` vers l'IP du serveur de secours (`192.168.1.98`)**.
6. Envoi d'une alerte de succès sur votre Telegram.

---

## 3. Vérifications post-restauration

Si le script se termine avec succès, l'application est en ligne. Vous pouvez valider manuellement avec les commandes suivantes :

* **Vérifier l'état des conteneurs :**
  ```bash
  docker compose ps
  ```
* **Tester l'accès HTTP en local :**
  ```bash
  curl http://localhost:8001/health
  ```
* **En cas d'erreur de redirection automatique de NPM (Dernier recours) :**
  Si la redirection automatique échoue, connectez-vous sur l'interface d'administration NPM :
  * URL : `http://192.168.1.184:81`
  * Allez dans **Proxy Hosts** -> `wordly.art` -> **Edit**
  * Modifiez le champ **Forward Hostname/IP** en y mettant l'IP du serveur actif (soit `.151`, soit `.98`).
  * Cliquez sur **Save** (la modification est instantanée).
