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 个赞

是否有办法以编程方式创建和下载此备份文件?我的意思是,我在服务器上有一些 cron 脚本,它们可以为许多其他服务执行备份,我能否直接在服务器上发出一些 CLI 命令来在那里获取备份?也许是 ./launcher app backup new-backup.backup 之类的命令?

备份位于 /var/discourse/shared/standalone/backups

您可以使用以下命令开始备份:

./launcher run app discourse backup

或者

docker exec app bash -c "discourse backup"

我想是这样。

2 个赞

Install Discourse for development using Docker 中概述的 Docker 开发环境中,这是否也可能?

当我尝试按照上面“创建备份”部分 Create, download, and restore a backup of your Discourse database 中的描述进行操作时,我收到错误 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:39] [STARTED]
[2024-09-04 15:03:39] 'raphael.dasgupta' has started the backup!
[2024-09-04 15:03:39] Marking backup as running...
[2024-09-04 15:03:39] Making sure '/src/tmp/backups/default/2024-09-04-150339' exists...
[2024-09-04 15:03:39] Making sure '/src/public/backups/default' exists...
[2024-09-04 15:03:39] Updating metadata...
[2024-09-04 15:03:39] Dumping the public schema of the database...
[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] Cleaning stuff up...
[2024-09-04 15:03:40] Removing '.tar' leftovers...
[2024-09-04 15:03:40] Marking backup as finished...
[2024-09-04 15:03:40] Notifying 'raphael.dasgupta' of the end of the backup...
1 个赞

我下载备份时遇到了困难。当我点击下载按钮时,我收到一个提示,说下载链接已发送到我的电子邮件地址。但是,现在已经过去两天了,我仍然没有收到邮件。

请帮忙。

您尝试过 ./discourse-doctor

感谢您的回复。主要问题是我已将另一个电子邮件从后端配置为管理员。端口号 587 的连接一直失败,电子邮件也无法发送。有什么解决办法吗?或者有其他端口可以使用?

1 个赞

这是您确认过的备用电子邮件地址的回复吗?

我使用端口 587 连接到 smtp.eu.mailgun.org

这是我在服务器设置上看到的内容。

好的,所以您希望在根域上使用 Office 365,并在子域上使用 Discourse 的事务性电子邮件/邮件接收器(通过 MX 记录)?

是的,因为我的电子邮件设置在 365 上

我认为问题的原因在于您将 Office 365 用于事务性电子邮件。您可能需要使用像 Mailgun 或 Brevo 这样的事务性邮件服务,它们都与 Discourse 一起使用,没有遇到太多问题。

1 个赞

我可以帮助您进行设置。目前,您将无法使用您的 Office 365 订阅收发 discourse 电子邮件。

我们这里讨论的论坛规模有多大?免费电子邮件计划可能就足够了。

我使用 Brevo 配置了 SMTP 设置并使用了端口 587,但仍然收到相同的错误。请帮忙,我不知道哪里出错了。

嗯……端口改为 2525 怎么样?

1 个赞

你成功了吗?