Cloudflare R2: настройка и устранение ошибок конфигурации

Всем привет,

Хочу поделиться своим опытом и пошаговой инструкцией по успешной настройке Cloudflare R2 для загрузки файлов и создания резервных копий в моём форуме на Discourse. Надеюсь, это поможет другим, кто планирует использовать Cloudflare R2 с Discourse.

Обзор настройки:

  • Платформа: Discourse (установка от Bitnami)
  • Ведро (Bucket): Cloudflare R2
  • Пользовательский домен: Настроен для публичного доступа к файлам
  • Конфигурация: Выполнена полностью через настройки сайта Discourse (переменные окружения не затрагивались)

Пошаговое руководство:

  1. Создание ведра Cloudflare R2:
  • Войдите в свою учётную запись Cloudflare и перейдите в раздел R2 Storage.
  • Создайте новое ведро для загрузок вашего форума (например, forum-uploads).
  • Запишите S3 API URL ведра, Access Key ID и Secret Access Key.
  1. Настройка пользовательского домена для CDN:
  • Чтобы публично предоставлять содержимое вашего ведра R2, создайте пользовательский домен в Cloudflare.
  • Например, я использовал forumfiles.example.in.
  • Убедитесь, что настройки DNS указывают на предоставленный Cloudflare CNAME. Поскольку мой домен уже находится в Cloudflare, это было сделано автоматически.
  1. Настройка параметров сайта Discourse:
    • s3_bucket: Имя вашего ведра R2 (например, forum-uploads).
    • s3_region: Установите значение US East (N. Virginia). Опции «автоматически» не было.
    • s3_endpoint: Используйте S3 API URL ведра, предоставленный Cloudflare (например, https://<your-bucket-unique-id>.r2.cloudflarestorage.com).
    • s3_access_key_id: Ваш Access Key ID для R2.
    • s3_secret_access_key: Ваш Secret Access Key для R2.
    • s3_cdn_url: Ваш пользовательский домен для CDN (например, https://forumfiles.example.in).
  • Убедитесь, что включены опции enable s3 backups и enable s3 uploads.
  1. Настройка прав доступа и CORS:
  • Установите для вашего ведра R2 приватный доступ и настройте политику CORS:
[
  {
      "AllowedHeaders": ["*"],
      "AllowedMethods": ["GET", "POST", "PUT", "HEAD"],
      "AllowedOrigins": ["*"],
      "ExposeHeaders": ["ETag"],
      "MaxAgeSeconds": 3000
  }
]
  • Это обеспечит корректную работу загрузок без проблем с CORS.
  1. Проверка настройки:
  • Загрузите тестовый файл или изображение через ваш форум на Discourse, чтобы убедиться, что загрузка работает корректно.
  • Проверьте доступность файлов по вашему пользовательскому домену (например, https://forumfiles.example.in/original/1X/...).
  • Проверьте резервные копии: у меня успешно выполнялись задачи создания резервных копий. Я также проверил это в ведре R2, и они отображаются в настройках сайта.

Заключение:

Следуя этим шагам, мне удалось бесшовно интегрировать Cloudflare R2 с Discourse, эффективно обрабатывая как загрузку файлов, так и создание резервных копий. Если у вас возникнут вопросы или возникнут проблемы, не стесняйтесь спрашивать!