ЗАПРОС: Поддержка резервного копирования S3 в сервис типа Backblaze

Я бы хотел получить поддержку резервного копирования в хранилище Backblaze.

В данный момент я не могу настроить конечную точку, например: s3.eu-central-003.backblazeb2.com

На всякий случай, если вы этого еще не видели: Configure an S3 compatible object storage provider for uploads

Нет, у меня не было… Теперь есть :slight_smile:

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

У Discourse много продвинутых функций, но они также слишком сложны для использования средним пользователем (это я ::slight_smile: )

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

Загружать что-то вроде изображений не нужно — они уже хранятся на CDN. Мой форум не такой большой и не имеет высокой нагрузки…

Он размещён на простом Droplet за 5 долларов…

О, тогда это должно быть довольно просто. Хотя, если размер невелик, возможно, проще будет использовать AWS S3? У них цены на хранение приемлемые, а вот с пропускной способностью бывают сложности.

Думаю, вам нужно просто добавить это в ваш app.yml с правильными данными и пересобрать. Здесь исключены части, предназначенные для загрузки файлов пользователями. Вам не нужно включать другую часть after_assets_precompile из руководства.

Просто подключитесь по SSH к вашему серверу как root и выполните:
cd /var/discourse
nano containers/app.yml

Используйте стрелки на клавиатуре для перемещения курсора и вставьте информацию ниже под частью файла, где написано: #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  DISCOURSE_S3_REGION: "us-west-002"
  DISCOURSE_S3_INSTALL_CORS_RULE: false
  DISCOURSE_S3_ENDPOINT: https://s3.us-west-002.backblazeb2.com
  DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
  DISCOURSE_S3_BACKUP_BUCKET: falcoland-files/backup
  DISCOURSE_BACKUP_LOCATION: s3

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

Нажмите ctrl+o и подтвердите сохранение, затем нажмите ctrl+x для выхода. После этого выполните:
./launcher rebuild app

Довольно уверен, что всё должно работать нормально.

Поскольку вы используете Digital Ocean, было бы хорошей идеей сделать резервную копию перед этим, чтобы в случае чего можно было легко откатиться назад.

Спасибо за описание, @markersocial

Я зашел на https://secure.backblaze.com/b2_buckets.htm и создал новый бакет.

Затем перешел в раздел App Keys, чтобы создать новый ключ приложения для доступа.

После создания вы временно получаете информацию, как показано ниже — имейте в виду, что вы увидите это только один раз:

Исходя из этого, я использовал следующие настройки:

DISCOURSE_S3_REGION: “s3.eu-central-003”
DISCOURSE_S3_INSTALL_CORS_RULE: false
DISCOURSE_S3_ENDPOINT: https://s3.eu-central-003.backblazeb2.com
DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
DISCOURSE_S3_BACKUP_BUCKET: my_buckets_Name
DISCOURSE_BACKUP_LOCATION: s3

Затем я выполнил пересборку, предварительно сделав снимок своего droplet в DigitalOcean:

./launcher rebuild app

После этого я зашел в /admin/backups и создал резервную копию:

[2020-08-27 09:25:57] Создание архива: studmed-dk-2020-08-27-092518-v20200820232017.tar.gz
[2020-08-27 09:25:57] Проверка, не существует ли уже архив…
[2020-08-27 09:25:57] pg_dump: выполнение SEQUENCE SET topic_allowed_users_id_seq
[2020-08-27 09:25:57] Создание пустого архива…
[2020-08-27 09:25:57] Архивирование дампа данных…
[2020-08-27 09:25:59] Архивирование загрузок…
[2020-08-27 09:26:06] Удаление временной директории ‘/var/www/discourse/tmp/backups/default/2020-08-27-092518’…
[2020-08-27 09:26:06] Сжатие архива в gzip, это может занять время…
[2020-08-27 09:26:31] Загрузка архива…
[2020-08-27 09:26:41] Выполнение after_create_hook для резервной копии…
[2020-08-27 09:26:41] Удаление старых резервных копий…
[2020-08-27 09:26:41] Очистка временных файлов…
[2020-08-27 09:26:41] Удаление архива из локального хранилища…
[2020-08-27 09:26:41] Удаление остатков ‘.tar’…
[2020-08-27 09:26:41] Пометка резервной копии как завершенной…
[2020-08-27 09:26:41] Обновление статистики диска…
[2020-08-27 09:26:42] Уведомление ‘frold’ об окончании резервного копирования…
[2020-08-27 09:26:53] Готово!

Затем я зашел в Backblaze, чтобы проверить, произошло ли что-то там:

Я должен тебе :beers:

Отличная работа! Если кто-то ещё случайно наткнётся сюда, я считаю, что если вы предоставите ключ, способный создавать бакеты, Discourse даже создаст бакет за вас.

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