# 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 : ```ini # ============== 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 : ```bash 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`) : ```bash 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 : ```bash sudo crontab -e ``` Ajoutez cette ligne tout à la fin : ```cron 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 ```bash 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 : ```bash 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) : ```bash # 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`.