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
- Créez le dossier de destination et placez-vous dedans :
sudo mkdir -p /opt/wordly cd /opt/wordly - Lancez le script de restauration à partir de l'archive (le script va extraire le
.env, copier ledocker-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 - Validez l'action en saisissant
RESTORE-ALLlorsque 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.