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 Me gusta

¿Hay alguna forma de crear y descargar este archivo de copia de seguridad mediante programación? Es decir, tengo algunos scripts cron en el servidor que realizan copias de seguridad de muchos otros servicios, ¿puedo ejecutar unos pocos comandos CLI directamente en el servidor para obtener la copia de seguridad allí? ¿Quizás ./launcher app backup new-backup.backup o algo así?

Las copias de seguridad están en /var/discourse/shared/standalone/backups

Puedes iniciar una copia de seguridad con

./launcher run app discourse backup

O

docker exec app bash -c "discourse backup"

Creo.

2 Me gusta

¿Es esto también posible en un entorno de desarrollo de Docker, configurado como se describe en Install Discourse for development using Docker?

Cuando lo intento como se describe en la sección Crear una copia de seguridad anterior, obtengo el error 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".

Registro completo de la copia de seguridad fallida
[2024-09-04 15:03:39] [STARTED]
[2024-09-04 15:03:39] ¡'raphael.dasgupta' ha iniciado la copia de seguridad!
[2024-09-04 15:03:39] Marcando la copia de seguridad como en curso...
[2024-09-04 15:03:39] Asegurándose de que '/src/tmp/backups/default/2024-09-04-150339' existe...
[2024-09-04 15:03:39] Asegurándose de que '/src/public/backups/default' existe...
[2024-09-04 15:03:39] Actualizando metadatos...
[2024-09-04 15:03:39] Volcando el esquema público de la base de datos...
[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] Limpiando cosas...
[2024-09-04 15:03:40] Eliminando restos de '.tar'...
[2024-09-04 15:03:40] Marcando la copia de seguridad como finalizada...
[2024-09-04 15:03:40] Notificando a 'raphael.dasgupta' del fin de la copia de seguridad...
1 me gusta

Tengo problemas para descargar una copia de seguridad. Cuando hice clic en el botón de descarga, recibí un aviso que decía que se había enviado un enlace de descarga a mi dirección de correo electrónico. Sin embargo, han pasado más de dos días y todavía no he recibido el correo electrónico.

Por favor, ayúdenme.

¿Has probado ./discourse-doctor?

Gracias por tu respuesta. El problema principal es que he configurado otro correo electrónico desde el backend como administrador. La conexión al puerto 587 sigue fallando y los correos electrónicos no se envían. ¿Hay alguna forma de evitarlo o hay otro puerto que pueda usar?

1 me gusta

¿Es esta la dirección de correo electrónico de respuesta alternativa que ha confirmado?

el puerto 587 es el que uso para conectarme a smtp.eu.mailgun.org

Esta es la configuración de mi servidor.

Entiendo, ¿así que quieres Office 365 en tu dominio raíz y correo electrónico transaccional de Discourse / receptor de correo por MX en un subdominio?

Sí, porque mi correo electrónico está configurado en 365

Creo que la causa del problema es que estás usando Office 365 para correos electrónicos transaccionales. Quizás quieras usar un servicio de correo transaccional como Mailgun o Brevo, ambos usados con Discourse sin muchos problemas.

1 me gusta

Puedo ayudarte con las configuraciones descritas. En este momento, no podrás enviar ni recibir correos electrónicos de Discourse utilizando tus suscripciones de Office 365.

¿Qué escala de foro estamos considerando? Un plan de correo electrónico gratuito puede ser suficiente.

Configuré la configuración de SMTP usando Brevo y utilicé el puerto 587, y todavía estoy recibiendo el mismo error. Por favor, ayúdenme, no estoy seguro de dónde me estoy equivocando.

Hmm… ¿qué tal si cambiamos el puerto a 2525?

1 me gusta

¿Pudiste hacer que esto funcionara?