Create, download, and restore a backup of your Discourse database

:bookmark: This guide provides step-by-step instructions for creating, downloading, and restoring a backup of your Discourse database.

:person_raising_hand: Required user level: Administrator

Discourse allows site administrators to create and download a copy of the site’s database. The backup can then be uploaded and restored to any Discourse forum.

Discourse backups include the full site database, which contains everything on the site: topics, posts, users, groups, settings, themes, etc. Depending on how the backup file is created, it may or may not include uploads. See the next section for details.

Though the data created by plugins exist in the database, the plugins themselves are installed in your app.yml file. To restore your site to a new server you will need to make sure that your installation includes the plugins you require.

Read-only mode

You can enable read-only mode on the Backups page to prevent site changes for admin-related tasks. Learn more about read-only mode here.

Create a backup

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

  1. Go to the Admin / Backups section of your site.
  2. Click the Backup button.

  1. A modal window will open asking you whether or not you would like to include the site’s uploads in the backup. Specify whether you want to include site uploads in your backup.

:warning: If your site is hosted by us and you would like to create a backup that includes uploads, contact the Discourse team before creating the backup.

  1. Initiate the backup by selecting your preferred option.

Download a backup

When the backup is complete, Discourse will send you a notification.

  • Click the link in the notification to return to your Backups page. Then click the Download button.

  • An email with a link to download the backup will be sent to you. Click the link to save the backup to your computer.

Upload a backup

  • To upload a backup, go to the Admin / Backups section of your site and click the Upload button.

  • This will open your browser’s file manager. Select the backup from your file system and click the file manager’s Open button. The new backup file will be displayed in the file list.

Restore a backup

Before you are able to restore your backup file you need to enable the allow restore site setting. Then click the Restore button on the Backups page for the backup you want to restore.

:warning: Restoring a backup file will overwrite all data on the site. When the backup is restored, you will be logged out of the site and need to log back in with your credentials from the restored site.

:warning: Make sure the site you are restoring into is running the same version of Discourse as the old site. It is best to update both sites to the latest version before running the backup/restore process.

The restore process automatically sets the disable emails setting to “non-staff”, so emails aren’t sent to your site’s users until you’re ready.

:discourse: If your site is hosted by Discourse, the Restore button in the screenshot below will be disabled. After uploading the backup file, contact the Discourse team and let us know the name of the backup file that you wish to restore. We will restore it for you.

Command line backup and restore

For administrators comfortable with the command line, you can create and manage backups programmatically:

  • Backups are stored in /var/discourse/shared/standalone/backups.
  • Start a backup using:
./launcher run app discourse backup

or

docker exec app bash -c "discourse backup"

For more information about command line backups, see: Backup discourse from the command line.

Last edited by @hugh 2025-10-03T04:56:55Z

Last checked by @hugh 2025-10-03T04:57:04Z

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

Existe-t-il un moyen de créer et de télécharger ce fichier de sauvegarde par programme ? Je veux dire, j’ai des scripts cron sur le serveur qui font des sauvegardes pour de nombreux autres services, puis-je exécuter quelques commandes CLI directement sur le serveur pour y obtenir la sauvegarde ? Peut-être ./launcher app backup new-backup.backup ou quelque chose comme ça ?

Les sauvegardes se trouvent dans /var/discourse/shared/standalone/backups

Vous pouvez démarrer une sauvegarde avec

./launcher run app discourse backup

Ou

docker exec app bash -c "discourse backup" 

Je pense.

2 « J'aime »

Est-ce également possible dans un environnement de développement Docker, configuré comme décrit sur Install Discourse for development using Docker ?

Lorsque j’essaie comme décrit dans la section Créer une sauvegarde ci-dessus, j’obtiens l’erreur pg_dump: error: connection to database \"discourse_development\" failed: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL: Peer authentication failed for user \"postgres\".

Journal complet de la sauvegarde échouée
[2024-09-04 15:03:39] [STARTED]
[2024-09-04 15:03:39] 'raphael.dasgupta' a démarré la sauvegarde !
[2024-09-04 15:03:39] Marquage de la sauvegarde comme en cours...
[2024-09-04 15:03:39] Vérification de l'existence de '/src/tmp/backups/default/2024-09-04-150339'...
[2024-09-04 15:03:39] Vérification de l'existence de '/src/public/backups/default'...
[2024-09-04 15:03:39] Mise à jour des métadonnées...
[2024-09-04 15:03:39] Vidage du schéma public de la base de données...
[2024-09-04 15:03:40] pg_dump: error: connection to database \"discourse_development\" failed: connection to server on socket \"/var/run/postgresql/.s.PGSQL.5432\" failed: FATAL:  Peer authentication failed for user \"postgres\"
[2024-09-04 15:03:40] EXCEPTION: pg_dump failed
[2024-09-04 15:03:40] /src/lib/backup_restore/backuper.rb:173:in `dump_public_schema'
/src/lib/backup_restore/backuper.rb:36:in `run'
/src/script/spawn_backup_restore.rb:9:in `backup'
/src/script/spawn_backup_restore.rb:31:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2024-09-04 15:03:40] Nettoyage...
[2024-09-04 15:03:40] Suppression des restes de '.tar'...
[2024-09-04 15:03:40] Marquage de la sauvegarde comme terminée...
[2024-09-04 15:03:40] Notification à 'raphael.dasgupta' de la fin de la sauvegarde...
1 « J'aime »

J’ai du mal à télécharger une sauvegarde. Lorsque j’ai cliqué sur le bouton de téléchargement, j’ai reçu une invite indiquant qu’un lien de téléchargement avait été envoyé à mon adresse e-mail. Cependant, cela fait plus de deux jours maintenant et je n’ai toujours pas reçu l’e-mail.

Merci de bien vouloir m’aider.

Avez-vous essayé ./discourse-doctor

Merci pour votre réponse. Le problème principal est que j’ai configuré une autre adresse e-mail depuis le backend en tant qu’administrateur. La connexion au port 587 échoue constamment et les e-mails ne sont pas envoyés. Y a-t-il une solution de contournement ou un autre port à utiliser ?

1 « J'aime »

est-ce la réponse alternative par adresse e-mail que vous avez confirmée ?

Le port 587 est celui que j’utilise pour me connecter à smtp.eu.mailgun.org

Voici ce que j’ai dans les paramètres de mon serveur.

Je vois, vous souhaitez donc Office 365 sur votre domaine racine et Discourse transactional email / mail-receiver via MX sur un sous-domaine ?

Oui, car mon e-mail est configuré sur 365

Je pense que la cause du problème est que vous utilisez Office 365 pour les e-mails transactionnels. Vous voudrez peut-être utiliser un service de messagerie transactionnelle comme Mailgun ou Brevo, tous deux utilisés avec Discourse sans beaucoup de problèmes.

1 « J'aime »

Je peux vous aider avec les configurations décrites. Actuellement, vous ne pourrez pas envoyer ou recevoir d’e-mails de discourse en utilisant vos abonnements Office 365.

Quelle est l’échelle du forum que nous envisageons ici ? Un plan de messagerie gratuit pourrait suffire.

J’ai configuré les paramètres SMTP en utilisant Brevo et j’ai utilisé le port 587, et je reçois toujours la même erreur. Veuillez m’aider, je ne suis pas sûr de ce que je fais de mal.

Hmm… que diriez-vous de changer le port en 2525 ?

1 « J'aime »

avez-vous réussi à faire fonctionner cela ?