diff --git a/PROCEDURE_RESTAURATION.md b/PROCEDURE_RESTAURATION.md new file mode 100644 index 0000000..75d62fc --- /dev/null +++ b/PROCEDURE_RESTAURATION.md @@ -0,0 +1,109 @@ +# 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).