Настройка резервного копирования и загрузки изображений в Backblaze B2

Итак, я следовал руководству Digital Ocean Spaces и начал искать более дешёвых провайдеров для своего (очень) небольшого сообщества. Я обратил внимание на этот старый пост, который меня смутил, поскольку я как раз изучал Backblaze B2 и видел, что он совместим с S3. Оказалось, что эта функция была запущена за 30 минут до того, как я заглянул (какая удача!). Поэтому я решил написать краткое руководство о том, как мне удалось настроить это для своего текущего сообщества:

Шаг 1: Настройка облачного хранилища Backblaze B2

Создание аккаунта
Перейдите на B2 Cloud Storage и нажмите «Sign Up Today» (Зарегистрироваться сегодня).

Генерация ключа приложения
Нажмите «App Keys» или перейдите на эту страницу. Нажмите «Add New Application Key» (Добавить новый ключ приложения), дайте ему имя, затем нажмите «Create New Key» (Создать новый ключ). Обязательно запишите keyID и applicationKey, так как после ухода со страницы они будут скрыты.

Создание корзин для загрузки и резервных копий
Вернитесь на страницу корзин и создайте нужные вам корзины. Убедитесь, что корзина для загрузок является публичной, а для резервных копий — приватной. (TODO: Протестировать автоматическое создание из Discourse)

Шаг 2: Настройка Discourse

Этот шаг в основном следует руководству Digital Ocean Spaces, с некоторыми важными отличиями:

  • Используйте keyID вашего ключа приложения в поле s3 keyID.
  • Используйте applicationKey вашего ключа приложения в поле s3 secret access key.
  • Используйте конечную точку s3, указанную в ключе приложения.
  • Оставьте поле CDN пустым, если вы не предоставляете свой собственный.

Для получения дополнительной информации о совместимости Backblaze B2 с S3 см. это сообщение в блоге.

Значит, замена на Backblaze работает у вас безупречно, без сбоев?

Я только что зашёл сюда в поисках информации, так как заметил, что там предоставляется 10 ГБ бесплатного места, что позволило бы сократить мои расходы на хостинг. Правда, сначала мне нужно будет мигрировать существующий контент S3. Также мне интересно, не пробовал ли кто-нибудь мигрировать работающий экземпляр Discourse с S3 на Backblaze.

Вместо того чтобы развивать эту тему, давайте добавим её в список клонов S3:

Старая ветка, но это руководство было именно тем, что я искал. У меня тоже есть небольшое сообщество, и я рассматривал возможность хранения наших изображений и резервных копий в облаке, а не на основном сервере у DigitalOcean. Это должно помочь нашему сайту работать стабильнее, снизив нагрузку на сервер от файлов изображений.

Мне нравится, что у Backblaze есть партнёрство с Cloudflare, позволяющее передавать данные бесплатно. Мы уже используем бесплатный тариф Cloudflare для защиты от DDoS-атак. Таким образом, при отсутствии платы за передачу данных это сэкономит нам деньги, поскольку нам нужно платить только за хранение. Я скоро попробую настроить это, добавив Cloudflare в схему.

Итак, я настроил резервное копирование: оно работает корректно, и резервные копии из Discourse отправляются в мой бакет для резервных копий в Backblaze.

Однако загруженные в Discourse изображения не появляются в моём бакете для загрузок в Backblaze. Я убедился, что доступ к нему установлен как публичный.

Есть какие-то идеи?

@Bill, я бы рекомендовал обратиться за поддержкой по адресу Configure an S3 compatible object storage provider for uploads

Поскольку я только что успешно настроил это с Cloudflare, решил поделиться своим опытом. Cloudflare — это не традиционная CDN. Я использую её для защиты от DDoS-атак, SSL-шифрования и кэширования. Однако для настройки хранилища S3, похоже, потребуется другая CDN. Я использовал BunnyCDN, что относительно недорого. Вам нужно настроить зону вытягивания (pull zone), указывающую на URL вашего бакета для загрузки (созданного в Backblaze).

Затем просто следуйте инструкциям здесь: Configure an S3 compatible object storage provider for uploads - #106

Обратите внимание: это работает только для будущих загружаемых файлов и изображений. Старые файлы не будут перенесены.