Files
office_translator/DISASTER_RECOVERY.md

4.5 KiB

Playbook de Sauvegarde Complète & Reprise d'Activité (Disaster Recovery)

Gestion des pannes matérielles, sauvegarde de Nginx Proxy Manager (NPM) et transfert distant (sans NAS).


🎯 Objectif

Ce document explique comment automatiser la sauvegarde et restaurer l'intégralité de la plateforme SaaS Wordly.art (Base de données, fichier de configuration .env contenant vos secrets, et configurations de routage SSL/Proxy de Nginx Proxy Manager) sur un nouveau serveur en cas de crash du serveur principal.


⚙️ 1. Variables de configuration dans le .env

Pour activer les options de reprise d'activité, ajoutez ces variables dans votre fichier .env de production :

# ============== Configuration Disaster Recovery (DR) ==============
# Choix de la destination : LOCAL, NAS, ou SCP
BACKUP_DEST_TYPE=LOCAL
# Chemin local ou point de montage (ex: /mnt/nas-backups/wordly)
BACKUP_DEST_PATH=/var/backups/wordly

# Configuration SSH/SCP (requis uniquement si BACKUP_DEST_TYPE=SCP)
SCP_HOST=192.168.1.200
SCP_USER=backup_user
SCP_KEY_PATH=/root/.ssh/id_rsa
SCP_PORT=22
SCP_DEST_PATH=/var/backups/wordly_saas

# Configurations des dossiers de Nginx Proxy Manager (NPM)
# Laissez vide si NPM tourne sur une autre machine et n'est pas géré ici.
NPM_DATA_DIR=/opt/npm/data
NPM_LETSENCRYPT_DIR=/opt/npm/letsencrypt

🛠️ 2. Comment configurer la sauvegarde à distance (Mode SCP)

Si vous n'avez pas de NAS, le mode SCP permet d'envoyer chaque nuit l'archive complète vers une autre machine ou ordinateur de votre réseau local (ex: 192.168.1.200).

Étape A : Générer une clé SSH sur le serveur principal

Sur le serveur applicatif (192.168.1.151), si vous n'avez pas de clé SSH :

sudo ssh-keygen -t rsa -b 4096 -N "" -f /root/.ssh/id_rsa

Étape B : Autoriser la connexion sur la machine de backup

Copiez la clé publique sur votre machine de sauvegarde (192.168.1.200) :

sudo ssh-copy-id -i /root/.ssh/id_rsa.pub backup_user@192.168.1.200

Vérification : Exécutez sudo ssh -i /root/.ssh/id_rsa backup_user@192.168.1.200 depuis le serveur principal. Vous devez vous connecter sans saisir de mot de passe.


📅 3. Automatisation quotidienne

Ajoutez le script à votre crontab pour qu'il s'exécute automatiquement chaque nuit à 03h30 :

sudo crontab -e

Ajoutez cette ligne tout à la fin :

30 3 * * * /opt/wordly/scripts/disaster-recovery.sh --backup >> /var/log/wordly-dr-backup.log 2>&1

🚨 4. Procédure de restauration sur un nouveau serveur (Failover)

Si le serveur principal crashe complètement et que vous devez remonter l'infrastructure sur un serveur de secours (ex: 192.168.1.152) :

Étape 4.1 : Récupérer l'archive de sauvegarde

Récupérez le dernier fichier wordly_dr_TIMESTAMP.tar.gz depuis votre stockage de backup (NAS, machine de backup distante via SCP, ou clé USB).

Étape 4.2 : Installer Docker sur le nouveau serveur

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER && newgrp docker

Étape 4.3 : Lancer la restauration automatique

  1. Créez le dossier de destination et placez-vous dedans :
    sudo mkdir -p /opt/wordly
    cd /opt/wordly
    
  2. Lancez le script de restauration à partir de l'archive (le script va extraire le .env, copier le docker-compose.yml, restaurer les configurations et certificats SSL de NPM, démarrer Docker et réinjecter les données de la base de données) :
    # Remplacez par le nom ou le chemin exact de votre archive
    bash /chemin/vers/votre/archive/scripts/disaster-recovery.sh --restore /chemin/vers/votre/archive/wordly_dr_20260607_033000.tar.gz
    
  3. Validez l'action en saisissant RESTORE-ALL lorsque le script vous le demande.

Étape 4.4 : Redirection du trafic réseau

Puisque le serveur a changé d'adresse IP (de 192.168.1.151 à 192.168.1.152) :

Cas A : Si NPM tournait sur le serveur qui a crashé

Le script a restauré NPM sur la nouvelle machine. Vous devez simplement aller sur le routeur de votre box internet et modifier la redirection des ports 80 et 443 (Port Forwarding) pour qu'ils pointent vers la nouvelle IP 192.168.1.152 au lieu de 192.168.1.151.

Cas B : Si NPM tourne sur une machine externe dédiée

Connectez-vous à l'interface web de votre NPM (http://IP_NPM:81), modifiez les Proxy Hosts de wordly.art et changez le champ Forward Hostname/IP pour remplacer 192.168.1.151 par la nouvelle IP 192.168.1.152.