Sauvegarde de Discourse depuis la ligne de commande

:bookmark: This guide covers how to back up and restore your Discourse site using command line tools, specifically designed for self-hosted environments.

:person_raising_hand: Required user level: Administrator

:information_source: You can use the below placeholders to automatically fill out the command line prompts in this guide:

Backing up

To create a backup of your Discourse site, follow these steps:

  1. Enter the container:
./launcher enter app
  1. Run the backup:
discourse backup
exit

This will print out the final filename of your backup. Download the backup and container configuration (if needed) to your local machine:

scp =USER=@=HOST=:/var/discourse/shared/standalone/backups/default/=FILENAME= .
scp =USER=@=HOST=:/var/discourse/containers/app.yml .

Restoring

To restore a Discourse backup, follow these steps:

  1. Install a Discourse site on the server you are restoring to.

If you’re testing this procedure multiple times, you can wipe the data on your test server.

Wipe Discourse data (optional)
./launcher stop app
./launcher destroy app
rm -r /var/discourse/shared/standalone/
mkdir -p /var/discourse/shared/standalone/backups/default/

  1. Upload the backup file:
scp =FILENAME= =USER=@=HOST=:/var/discourse/shared/standalone/backups/default/
  1. Enter the container and start the restore:
./launcher enter app
discourse enable_restore
discourse restore =FILENAME=

If you happen to forget what the filename was, run the “discourse restore” command by itself to get a list of available backup files.

:information_source: For a two-container setup, use ./launcher enter web_only and replace standalone with web-only in the path to backups.

For additional information about restoring Discourse backups, see Restore a backup from the command line.

Last edited by @SaraDev 2024-08-23T20:50:17Z

Check documentPerform check on document:
38 « J'aime »

où dois-je exécuter cette commande ? sur le terminal de mon serveur cloud ou sur ma machine locale ?
bien que l’un ou l’autre me donne une erreur de permission refusée

Sur votre machine locale.

Utilisez-vous une clé SSH pour vous connecter ? L’erreur y est liée.

La commande devrait alors être :

scp -i /chemin_vers_votre_clé/votre_clé.pem root@147.43.15.199:/var/discourse/shared/standalone/backups/default/discourse-2024-12-25-033740-v20241211222608.tar.gz .

J’ai un scénario où je veux migrer l’installation de Discourse vers un tout nouveau serveur.
Mon plan était :

  1. créer une nouvelle installation vierge de Discourse
  2. sauvegarder l’ancien Discourse, scp la sauvegarde vers le nouveau serveur et restaurer
  3. Copier tout le S3 (images, etc.) vers le nouveau S3 sur un compte différent

Le processus de restauration se déroule bien jusqu’à ce qu’il commence à chercher le S3 et échoue ensuite par manque d’accès. Je pense qu’il essaie d’accéder au même nom de bucket S3 que l’ancien Discourse, mais celui-ci n’existe pas sur le nouveau et je ne peux pas le créer.

Existe-t-il une solution recommandée ?

J’ai pensé que je pourrais essayer de changer le nom du bucket S3 sur l’ancien Discourse (avant d’effectuer la sauvegarde), puis lors de la restauration, il s’attendrait à avoir le nouveau bucket S3. Mais j’ai peur de ce qui arrivera à l’ancien Discourse si je le bascule simplement vers un bucket inexistant.

Il existe un paramètre caché qui téléchargera les fichiers s3 et les placera dans la sauvegarde.

Vous devez configurer s3 dans le fichier yml comme indiqué dans Configurer un fournisseur de stockage d’objets compatible S3 pour les téléchargements

Ensuite, lorsque vous restaurerez la sauvegarde, elle enverra les téléchargements dans le nouveau bucket.

1 « J'aime »

Avez-vous finalement trouvé une solution ?

Vous devez configurer s3 dans les variables d’environnement comme décrit dans Configurer un fournisseur de stockage d’objets compatible S3 pour les téléchargements

C’est particulièrement vrai si les paramètres s3 sont différents sur le nouveau serveur. Placer les valeurs s3 dans la base de données peut causer beaucoup de problèmes.

Mais il existe un commutateur pour la commande de restauration qui la fait s’arrêter entre les différentes parties. Cela peut aider.