Documentation: Add French Disaster Recovery Playbook for server failovers
This commit is contained in:
106
DISASTER_RECOVERY.md
Normal file
106
DISASTER_RECOVERY.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Guide de Reprise d'Activité (Disaster Recovery Playbook)
|
||||
> Procédure pas-à-pas en cas de crash total du serveur principal (`192.168.1.151`)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Objectif
|
||||
Ce document décrit comment restaurer l'intégralité de la plateforme SaaS **Wordly.art** (Base de données active, configurations secrètes `.env` et services Docker) sur un **nouveau serveur** de secours si le serveur principal tombe en panne complète.
|
||||
|
||||
---
|
||||
|
||||
## 📁 Fonctionnement de la sauvegarde DR (Disaster Recovery)
|
||||
|
||||
Le script de reprise d'activité [disaster-recovery.sh](file:///d:/dev1405/office_translator/scripts/disaster-recovery.sh) génère une archive compressée contenant l'intégralité du système à restaurer :
|
||||
1. **La base de données active** (PostgreSQL ou SQLite).
|
||||
2. **Le fichier de configuration de production** `.env` (contenant vos clés API Stripe, OpenAI, DeepL, etc.).
|
||||
3. **Le fichier `docker-compose.yml`** et ses variantes.
|
||||
4. **Le dossier `docker/`** contenant toutes les configurations Prometheus, Grafana, Nginx, etc.
|
||||
|
||||
Toutes ces archives sont stockées sur votre **NAS** à l'abri des pannes matérielles du serveur local : `/mnt/nas-backups/wordly/dr/`.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Étape 1 : Automatisation de la sauvegarde complète (A faire aujourd'hui)
|
||||
|
||||
Pour que la sauvegarde Disaster Recovery s'exécute automatiquement chaque nuit à 03h30 :
|
||||
|
||||
1. Connectez-vous en SSH sur votre serveur principal (`192.168.1.151`).
|
||||
2. Ouvrez le planificateur de tâches (cron) :
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
3. Ajoutez la ligne suivante tout à la fin du fichier :
|
||||
```cron
|
||||
30 3 * * * /opt/wordly/scripts/disaster-recovery.sh --backup >> /var/log/wordly-dr-backup.log 2>&1
|
||||
```
|
||||
4. Sauvegardez et quittez. Désormais, une archive complète de restauration sera créée et envoyée sur votre NAS chaque nuit, avec une rétention automatique de **14 jours**.
|
||||
|
||||
---
|
||||
|
||||
## 🚨 Étape 2 : Procédure de restauration (En cas de crash du serveur)
|
||||
|
||||
Si le serveur `192.168.1.151` est indisponible et que vous devez remonter le SaaS sur une nouvelle machine (ex : **`192.168.1.152`**), suivez ces étapes :
|
||||
|
||||
### 2.1 Préparation de la nouvelle machine
|
||||
1. Installez Docker et Docker Compose sur le nouveau serveur :
|
||||
```bash
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
sudo usermod -aG docker $USER && newgrp docker
|
||||
```
|
||||
2. Créez le dossier du projet et clonez le repository (ou copiez les fichiers depuis le NAS) :
|
||||
```bash
|
||||
git clone -b production-deployment https://gitea.parsanet.org/sepehr/office_translator.git /opt/wordly
|
||||
cd /opt/wordly
|
||||
```
|
||||
|
||||
### 2.2 Monter le NAS sur le nouveau serveur
|
||||
Pour que le nouveau serveur accède aux sauvegardes stockées sur votre NAS :
|
||||
1. Installez l'utilitaire de montage :
|
||||
```bash
|
||||
sudo apt install cifs-utils -y
|
||||
sudo mkdir -p /mnt/nas-backups/wordly
|
||||
```
|
||||
2. Créez le fichier de credentials :
|
||||
```bash
|
||||
sudo tee /etc/nas-credentials <<EOF
|
||||
username=wordly-backup
|
||||
password=MOT_DE_PASSE_NAS
|
||||
domain=WORKGROUP
|
||||
EOF
|
||||
sudo chmod 600 /etc/nas-credentials
|
||||
```
|
||||
3. Montez le NAS temporairement pour la restauration (ou via `/etc/fstab` pour le rendre persistant) :
|
||||
```bash
|
||||
sudo mount -t cifs -o credentials=/etc/nas-credentials,uid=$(id -u),gid=$(id -g),vers=3.0 //IP_DU_NAS/wordly-backups /mnt/nas-backups/wordly
|
||||
```
|
||||
|
||||
### 2.3 Exécuter la restauration
|
||||
1. Listez les archives DR disponibles sur le NAS pour choisir la plus récente :
|
||||
```bash
|
||||
ls -lh /mnt/nas-backups/wordly/dr/
|
||||
```
|
||||
2. Lancez la restauration complète (le script va extraire le `.env`, copier le `docker-compose.yml`, lancer les services Docker, attendre que la base de données soit prête et y injecter vos données) :
|
||||
```bash
|
||||
# Remplacez par le nom de l'archive voulue
|
||||
bash scripts/disaster-recovery.sh --restore /mnt/nas-backups/wordly/dr/wordly_dr_20260607_033000.tar.gz
|
||||
```
|
||||
3. Le script vous demandera de confirmer en tapant `RESTORE-ALL`. Tapez-le et appuyez sur Entrée.
|
||||
4. Une fois terminé, vérifiez que l'application tourne bien :
|
||||
```bash
|
||||
docker compose ps
|
||||
curl http://localhost:8000/health
|
||||
```
|
||||
|
||||
### 2.4 Mettre à jour Nginx Proxy Manager (NPM)
|
||||
Votre service Nginx Proxy Manager (NPM) s'occupe de rediriger les requêtes de `wordly.art` vers l'IP interne du serveur.
|
||||
1. Connectez-vous à l'interface d'administration de votre NPM (**http://IP_NPM:81**).
|
||||
2. Allez dans **Proxy Hosts**.
|
||||
3. Pour les entrées de domaines concernées :
|
||||
- `wordly.art`
|
||||
- `www.wordly.art`
|
||||
- `monitoring.wordly.art`
|
||||
4. Cliquez sur **Edit** (les trois points à droite).
|
||||
5. Dans le champ **Forward Hostname / IP**, remplacez l'ancienne adresse IP (`192.168.1.151`) par la nouvelle IP de votre serveur de secours (**`192.168.1.152`**).
|
||||
6. Cliquez sur **Save**.
|
||||
|
||||
**C'est terminé !** Vos utilisateurs peuvent à nouveau accéder à `https://wordly.art` et le système de paiement Stripe continuera à envoyer les webhooks vers la nouvelle machine automatiquement, sans aucune autre configuration requise.
|
||||
Reference in New Issue
Block a user