HedgeDoc - Backup / Restore#
Cette page décrit la procédure pour sauvegarder et restaurer le stockage S3 & RDS d'HedgeDoc. Il s'agit d'une procédure manuelle, utile pour créer une sauvegarde avant une opération à risque sur le service ou pour restaurer des données à la suite d'un incident.
Plan de sauvegarde#
La base de données RDS est sauvegardée quotidiennement en HNO. Ces sauvegardes sont accessibles à travers la console Flexible Engine
Homepage > Database > Relational Database Service > Backups
Warning
Le stockage S3 n'est pas sauvegardé automatiquement.
RDS#
La base de données PostgreSQL va permettre de stocker les documents, utilisateurs locaux, sessions, révisions, etc. crées dans HedgeDoc, etc.
Prérequis#
Il faut installer les outils PostgreSQL localement via nix-shell :
nix-env -iA nixpkgs.postgresql_12
Exporter les variables#
Configurer votre environnement (zone, infrastructure, application) :
export ZONE="corp"
export INFRA_ZONE="infra-prd"
export APP="hedgedoc"
Récupérer un token Vault :
# Get Vault token
export VAULT_ADDR="https://vault.${INFRA_ZONE}.caascad.com"
vault token lookup || vault login -method oidc
Récupérer les paramètres de la base RDS :
# Export dump filename
export DUMP_FILE="$(date +%F)_${ZONE}_${APP}.sql"
# Export RDS password
export PGPASSWORD="$(vault read -field=password secret/zones/fe/${ZONE}/rds/${APP}/db)"
# Export RDS IP
export ADDR_TARGET="$(vault read -field=private_ip secret/zones/fe/${ZONE}/rds/${APP}/db)"
Connexion vers l'instance RDS#
Pour créer la connexion vers le RDS, il faut passer par le bastion via un tunnel SSH :
ssh -f -N -L "65432:${ADDR_TARGET}:5432" "cloud@bst.${ZONE}.caascad.com"
Sauvegarder la base de données#
Sauvegarder la base de données avec pg_dump :
pg_dump -h 127.0.0.1 -p 65432 -c -O --if-exists -x -U "${APP}" "${APP}" > "${DUMP_FILE}"
Vérifier que la sauvegarde s'est déroulée avec succès :
head -n 2 "${DUMP_FILE}"; tail -n 3 "${DUMP_FILE}"
On devrait avoir un résultat approchant :
# Should return:
# --
# -- PostgreSQL database dump
# -- PostgreSQL database dump complete
# --
#
Restaurer la base de données#
Restaurer le fichier dump SQL sur la base de données :
psql -h 127.0.0.1 -p 65432 -U "${APP}" "${APP}" -f "${DUMP_FILE}"
Warning
Si l'instance RDS ou la base de données a été détruite, il faut impérativement redéployer HedgeDoc via le processus d'installation car le mot de passe de la base aura changé.
Stockage S3#
Le S3 permet simplement de stocker les images.
Prérequis#
Il faut installer le client awscli :
toolbox install awscli
Exporter les variables#
Configurer votre environnement (zone, application) :
export ZONE="corp"
export APP="hedgedoc"
Récupérer un token Vault :
# Get Vault token
export VAULT_ADDR="https://vault.${ZONE}.caascad.com"
vault token lookup || vault login -method oidc
Récupérer la configuration du bucket (Les variables AWS_SECRET_ACCESS_KEY & AWS_ACCESS_KEY_ID vont permettre de configurer awscli) :
# Export AWS credential
export AWS_SECRET_ACCESS_KEY="$(vault read -field=secret_key secret/bucket/${APP})"
export AWS_ACCESS_KEY_ID="$(vault read -field=access_key secret/bucket/${APP})"
# Export Bucket parameters
export ENDPOINT_URL="$(vault read -field=endpoint_url secret/bucket/${APP})"
export BUCKET_NAME="$(vault read -field=bucket_name secret/bucket/${APP})"
Sauvegarde des données du S3#
Sauvegarder les documents téléversé d'HedgeDoc :
aws s3 --endpoint-url ${ENDPOINT_URL} cp --recursive s3://${BUCKET_NAME}/ backup/${APP}
Restauration des données du S3#
Restaurer les données du stockage S3 :
aws s3 --endpoint-url ${ENDPOINT_URL} cp --recursive backup/${APP} s3://${BUCKET_NAME}/