Configure automatic backups for Discourse

:bookmark: This guide explains how to configure automatic backups for Discourse, including storage options on local servers and S3-compatible storage.

Learn how to set up automatic backups for your Discourse platform.

This guide covers configuring automatic backups, storing them on local servers or S3-compatible storage, and managing storage retention options like Amazon Glacier.

Configuring automatic backups

  1. Navigate to /admin settings.
  2. Select the Backup section.
  3. Set backup_frequency to the desired interval in days. The default is 7 (weekly). Set to 1 for daily backups, or 0 to disable automatic backups. The maximum is 30.

backup_frequencybackup_frequency100%75%50%

Additional backup settings

  • backup_time_of_day — the time of day (UTC) when backups run. Default: 3:30.
  • backup_with_uploads — include uploads in scheduled backups. Default: enabled. Disabling this will only back up the database.
  • maximum_backups — the maximum number of backups to keep. Older backups are automatically deleted. Default: 5.
  • remove_older_backups — remove backups older than the specified number of days. Leave blank to disable.

Store backups on the local server

By default, backups are stored on your local server. For self-hosted instances, access them at /var/discourse/shared/standalone/backups/default.

Store backups on S3-compatible storage

Using the admin panel

  1. Create an S3 bucket.
  2. Set the s3_backup_bucket in the admin panel.
  1. Configure s3_access_key_id, s3_secret_access_key, and s3_region.
  2. Set backup_location to “S3”.

image

:warning: WARNING

Storing backups and regular uploads in the same bucket and folder is no longer supported and will not work.

The s3_backup_bucket path should only be used for backups. If you need to use a bucket that contains other files please make sure that you provide a prefix when you configure the s3_backup_bucket setting (example: my-awesome-bucket/backups) and make sure that files with that prefix are private.

From now on all backups will be uploaded to S3 and not be stored locally anymore. Local storage will only be used for temporary files during backups and restores.

Go to the Backups tab in the admin dashboard to browse the backups – you can download them any time to do a manual offsite backup.

Using environment variables in app.yml

You can also configure S3 backups using environment variables in app.yml. For more information, see Configure an S3 compatible object storage provider for uploads

Note that the above article covers app.yml covers S3 setup for backups and for file/image uploads. If you only want to use S3 for backups (and not for uploads of files/images), then you can omit the following parameters from your app.yml config:

  • DISCOURSE_USE_S3
  • DISCOURSE_S3_CDN_URL
  • DISCOURSE_S3_BUCKET

You also don’t need to configure the after_assets_precompile step in this case, nor configure a CDN.

Be sure to include all other parameters that are required for your storage provider, as mentioned in the article. Here is one example configuration that only activates S3 for backups (for Scaleway S3):

DISCOURSE_S3_REGION: nl-ams
DISCOURSE_S3_ENDPOINT: https://s3.nl-ams.scw.cloud
DISCOURSE_S3_ACCESS_KEY_ID: my_access_key
DISCOURSE_S3_SECRET_ACCESS_KEY: my_secret_access_key
DISCOURSE_S3_BACKUP_BUCKET: my_bucket/my_folder
DISCOURSE_BACKUP_LOCATION: s3

Archiving to storage with a lower cost

Note that on AWS S3, you can also enable an automatic move to Glacier bucket lifecycle rule to keep your S3 backup costs low. Other storage providers often have a similar offering.

Last edited by @SaraDev 2024-11-07T20:36:45Z

Check documentPerform check on document:
60 лайков

You are able to Archive Backups from your S3 Bucket to Glacier.
It is cheaper, but an Restore attemps more Time.

This Site will Help you to reduce Backup costs.:

11 лайков

Setting this up can be rather confusing. Here’s a simple guide to help you out.

  • Log into your Discourse admin panel
  • Configure daily backups
  • Set maximum backups to 7
  • Log into your Amazon Web Services account
  • Go in the S3 Dashboard
  • Open the bucket containing the backups
  • Click on the properties tab
  • Activate versioning
  • Open the Lifecycle menu
  • Add a rule for the whole bucket
  • Set current version to expire after 15 days
  • Set previous version to
  • Archive to Glacier after 1 days
  • expire after 91 days
  • Save and logout

How it works

Versioning will keep backups automaticly deleted by Discourse. One day after beeing deleted it will be moved to the Glacier storage. After 91 days it will be delete from the Glacier storage.

Warning

Amazon charge you for item stored in Glacier for 90 days even if you delete them before. Make sure your Glacier Lyfecicle keep your file at least 90 days.

11 лайков

Возможно, я упустил это, но как мне правильно убедиться, что бакет для резервных копий является приватным? На странице Set up file and image uploads to S3 это, похоже, не описано.

1 лайк

Похоже, что такой опции больше нет.

ОБНОВЛЕНИЕ: а, теперь это разделено на два шага этого мастера.

Так что, думаю, это должно выглядеть так:

2 лайка

Работает ли функциональность резервного копирования S3 корректно без ключа доступа IAM и секретного ключа, если используются роли AWS, назначенные экземпляру, и в меню «Настройки» включена опция s3 use iam profile?

Редактирование: Ответ — ДА! Просто убедитесь, что регион настроен соответствующим образом.

1 лайк

У меня была та же проблема, которая была решена добавлением нескольких строк в документ политики:

"Resource": [
        "arn:aws:s3:::your-uploads-bucket",
        "arn:aws:s3:::your-uploads-bucket/*",
        "arn:aws:s3:::your-backups-bucket",
        "arn:aws:s3:::your-backups-bucket/*"
      ]

Стоит ли добавить это в первое сообщение (которое не является вики-страницей)? Или, возможно, в первое сообщение по адресу Set up file and image uploads to S3?

2 лайка

Есть ли веская причина, по которой ежедневные резервные копии не являются настройкой по умолчанию?

Необходимые исправления для автора темы (OP)

Добавить информацию о переносе резервных копий S3 в Glacier?
Удалить раздел про S3 и добавить ссылку на Configure an S3 compatible object storage provider for uploads

Это было бы излишним и дорогостоящим. По той же причине, по которой мы не рекомендуем менять масло в машине каждые 500 миль.

Вы делаете резервные копии своих серверов раз в неделю?

Мне кажется, ваша аналогия с заменой масла каждые 500 миль хорошо отвечает на вопрос «почему не хранить 30 резервных копий?», но в данном контексте она не совсем понятна.

Разве вы не считаете, что если у вас будет 5 резервных копий, большинство людей предпочло бы, чтобы они создавались ежедневно? Тогда в случае необходимости отката к резервной копии потеря данных не превысит одного дня. Единственный раз, когда я помню, что более старая резервная копия оказалась полезной, — это когда изображения выпали из «тумбы» (tombstone).

Если у них так мало места на диске, что они не могут хранить 5 резервных копий, кажется разумнее узнать об этом через 5 дней, когда они ещё помнят, что делали, чем ждать 4–5 недель.

1 лайк

Да, это верно для моих собственных серверов.

Если вы предпочитаете другие настройки, не стесняйтесь изменить их по умолчанию. Что мешает вам это сделать?

1 лайк

Ну и ну!

Я занимаюсь очисткой тем вроде этой. Если бы значения по умолчанию были изменены, это не понадобилось бы!

Я убеждён, что значения по умолчанию не изменят, поэтому я продолжу. :wink

2 лайка

Один раз в неделю — это хорошая отправная точка и надежное значение по умолчанию.

1 лайк

У меня возникла точно такая же проблема!

Предлагаю добавить примечание об этом и в исходный пост!

3 лайка

Было бы здорово, если бы это можно было использовать для загрузки в другой S3-совместимый провайдер, например, для запуска MinIO.

Если вы хотите использовать MinIO, ознакомьтесь с использованием объектного хранилища для загрузки файлов (S3 и аналоги). Если вам нужны разные сервисы для резервного копирования и хранения активов, то, к сожалению, это невозможно (хотя существуют способы настройки триггеров для копирования данных из одного бакета в другой).

Нет, просто для резервных копий, чтобы они автоматически отправлялись на другой компьютер в моей сети.

Тогда руководство, на которое я дал ссылку, — это именно то, что вам нужно.

1 лайк

Возможно ли делать это чаще, чем раз в день? Я бы предпочел не делать предположений и установить частоту резервного копирования как число с плавающей точкой.

1 лайк

Если вам нужны более частые резервные копии, вам придется выполнять их вручную.

3 лайка