ITSkillsCenter
Business Digital

Backups Outline et procédure de restauration : tutoriel 2026

4 min de lecture

📍 Article principal du cluster : Outline 2026 : guide complet.

Outline est la mémoire institutionnelle de votre PME : procédures, runbooks, comptes rendus, documentation produit. Sa perte est un désastre opérationnel. Ce tutoriel détaille la procédure complète de sauvegarde 3-2-1 avec restic chiffré vers Backblaze B2, et le test de restauration mensuel obligatoire.

Prérequis

  • Outline en production avec données réelles.
  • Compte Backblaze B2 ou MinIO secondaire.
  • Niveau attendu : intermédiaire.
  • Temps estimé : 1h setup + 30 min test mensuel.

Étape 1 — Identifier les éléments à sauvegarder

  • PostgreSQL : tous les documents, utilisateurs, permissions, historique versions.
  • MinIO bucket outline : images, fichiers attachés.
  • Redis : sessions, cache (régénérable, optionnel).
  • Variables d’environnement : SECRET_KEY, OIDC config (à conserver).

Étape 2 — Initialiser le repository restic

export RESTIC_REPOSITORY="s3:s3.eu-central-003.backblazeb2.com/outline-backup-prod"
export AWS_ACCESS_KEY_ID="votre-keyID-B2"
export AWS_SECRET_ACCESS_KEY="votre-applicationKey-B2"
export RESTIC_PASSWORD="passphrase-très-très-forte-unique"
restic init

Étape 3 — Script de sauvegarde Postgres

#!/bin/bash
set -euo pipefail
TS=$(date +%Y%m%d-%H%M%S)
TMP=/tmp/outline-pg-$TS

docker exec outline-db pg_dump -U outline -d outline -F c -f /tmp/outline-$TS.dump
docker cp outline-db:/tmp/outline-$TS.dump $TMP.dump
docker exec outline-db rm /tmp/outline-$TS.dump

export RESTIC_REPOSITORY="s3:s3.eu-central-003.backblazeb2.com/outline-backup-prod"
export RESTIC_PASSWORD_FILE="/root/.restic-password"
export AWS_ACCESS_KEY_ID="..."
export AWS_SECRET_ACCESS_KEY="..."

restic backup $TMP.dump --tag outline-db --tag prod
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
rm -f $TMP.dump

curl -s "https://ntfy.sh/votre-topic" -d "Outline DB backup OK $TS"

Étape 4 — Script de sauvegarde MinIO

#!/bin/bash
set -euo pipefail

# Sync MinIO bucket vers staging local
mc mirror minio-prod/outline /tmp/outline-files/

export RESTIC_REPOSITORY="s3:s3.eu-central-003.backblazeb2.com/outline-backup-prod"
export RESTIC_PASSWORD_FILE="/root/.restic-password"
export AWS_ACCESS_KEY_ID="..."
export AWS_SECRET_ACCESS_KEY="..."

restic backup /tmp/outline-files --tag outline-files --tag prod
restic forget --keep-daily 14 --keep-weekly 8 --keep-monthly 24 --prune
rm -rf /tmp/outline-files

curl -s "https://ntfy.sh/votre-topic" -d "Outline files backup OK"

Étape 5 — Cron schedule

chmod +x /srv/scripts/outline-backup-*.sh

crontab -e
0 */6 * * * /srv/scripts/outline-backup-db.sh >> /var/log/outline-backup.log 2>&1
0 4,16 * * * /srv/scripts/outline-backup-files.sh >> /var/log/outline-backup.log 2>&1
0 5 * * 0 restic check --read-data-subset=10% >> /var/log/outline-backup.log 2>&1

Étape 6 — Test de restauration mensuel

# Sur VPS staging
restic snapshots --tag outline-db | tail -5
restic restore latest --tag outline-db --target /tmp/restore

# Restaurer dans Postgres test
docker run -d --name pg-test -e POSTGRES_PASSWORD=test postgres:16
sleep 10
docker cp /tmp/restore/tmp/outline-*.dump pg-test:/tmp/
docker exec pg-test pg_restore -U postgres --create -d postgres /tmp/outline-*.dump

# Vérifier
docker exec pg-test psql -U postgres -d outline -c "SELECT COUNT(*) FROM documents;"
# Doit correspondre à prod ± 1h

Étape 7 — Documentation runbook

Wiki interne (dans Outline lui-même !) avec :

  • URL du repository B2.
  • Référence Vaultwarden vers RESTIC_PASSWORD.
  • Procédure de restauration complète (commandes exactes).
  • Date du dernier test réussi.
  • Contact d’urgence (admin principal + secondaire).

Étape 8 — Restauration en cas de désastre

Procédure si serveur Outline détruit :

  1. Provision nouveau VPS Hetzner CX22.
  2. Install Coolify + Outline (Resources → New).
  3. Configurer mêmes variables d’env (SECRET_KEY, etc.) depuis Vaultwarden.
  4. Restic restore Postgres dump → docker exec outline-db pg_restore.
  5. Restic restore fichiers MinIO → mc mirror back vers minio-prod/outline.
  6. Update DNS si IP change.
  7. Test login admin.

Comptez 1 à 3 heures selon volume.

Erreurs fréquentes

Erreur Cause Solution
Sauvegarde corrompue pg_dump pendant écriture lourde Toujours utiliser -F c format custom (consistent)
Restic password perdu Stockage unique 3 copies indépendantes
Test restauration échoue Version Postgres différente Restaurer sur même version
MinIO sync incomplet Bandwidth limité Mirror nocturne en parallèle DB
Bucket B2 saturé Forget non lancé Vérifier --prune dans cron
Outline pas redémarré post-restore Volume Docker pas remonté Vérifier docker-compose volumes

Adaptation au contexte ouest-africain

Trois précisions. Coût Backblaze : 200 Go = 1,20 USD/mois. Wikis Outline pèsent typiquement 5-30 Go. Coût négligeable. Egress gratuit Cloudflare : restauration sans frais via Cloudflare Bandwidth Alliance. Test sur poste local : test mensuel sur Raspberry Pi à domicile valide la procédure même hors infrastructure principale. Important si admin unique = bus factor 1.

Tutoriels frères

FAQ

Restic vs borgbackup ? Restic supporte S3 natif. Borg meilleur sur SSH local. Pour Backblaze, restic gagne.

Combien de RPO acceptable ? 6 heures pour wiki standard. 1 heure pour wiki business critique. Ajuster fréquence cron.

Backup chiffré quantum-resistant ? AES-256 considéré quantum-resistant à horizon 2030+ par NIST.

Versioning multiple ? Restic conserve toutes les versions par défaut. Forget configure rétention (7j daily, 4 weekly, 12 monthly).

Sauvegarde Redis ? Optionnel. Sessions perdues = utilisateurs reconnectent. Pas critique.

Pour aller plus loin

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité