Около 5 мин

Как загружать файлы в Cloudflare R2 и делиться ссылками

Cloudflare R2 отлично подходит для Aktar: здесь нет платы за исходящий трафик, бесплатного тарифа хватает почти для любых скриншотов, а собственные домены раздаются через сеть Cloudflare. В Aktar есть отдельный пресет для R2, поэтому вам понадобятся только ID аккаунта, API-токен и бакет.

Что понадобится

  • Аккаунт Cloudflare с включенным R2
  • Домен в Cloudflare, если вы хотите ссылки на собственном домене (необязательно)
  • Aktar, установленный на вашем Mac

Пошагово

  1. 1

    Создайте бакет

    В панели Cloudflare откройте R2 Object Storage и нажмите Create bucket. Выберите короткое имя, например screenshots, и оставьте автоматическое расположение.

  2. 2

    Дайте бакету публичный адрес

    Откройте Settings бакета. В разделе Custom Domains подключите домен или поддомен, которым вы управляете в Cloudflare, например files.example.com. Это лучший вариант для реальной работы.

    Для быстрой проверки можно вместо этого включить Public Development URL (pub-….r2.dev). Cloudflare ограничивает частоту запросов к этому URL и не рекомендует его для рабочего использования.

  3. 3

    Создайте API-токен

    Вернитесь на страницу обзора R2, откройте Manage API tokens и создайте токен с правами Object Read & Write, ограниченный вашим бакетом. Скопируйте Access Key ID и Secret Access Key: секретный ключ показывается только один раз.

    ID аккаунта (Account ID) указан на той же странице, а еще это первая часть S3-эндпоинта https://<ACCOUNT_ID>.r2.cloudflarestorage.com.

  4. 4

    Добавьте место назначения в Aktar

    Откройте в Aktar Настройки → Места назначения → Добавить место назначения, выберите Cloudflare R2 и заполните поля по таблице ниже. Эндпоинт Aktar определит по ID аккаунта.

  5. 5

    Проверьте и сохраните

    Нажмите Проверить подключение. Aktar загрузит крошечный тестовый файл, проверит, что он доступен по вашему публичному адресу, и удалит его. Когда все проверки пройдены, нажмите Сохранить и перетащите первый файл на значок в строке меню.

Настройки в Aktar

Введите эти значения в разделе Настройки → Места назначения → Добавить место назначения. Названия полей совпадают с приложением.

ПолеПример значения
ПровайдерCloudflare R2
Имя профиляPersonalЛюбое имя на ваш выбор.
ID аккаунта3f9a71c0e2b8…Со страницы обзора R2.
РегионautoОставьте значение по умолчанию.
Access Key IDa1b2c3d4…Из API-токена R2.
Secret Access Key••••••••Хранится в Связке ключей macOS.
Бакетscreenshots
Публичный базовый URLfiles.example.comВаш собственный домен или URL r2.dev.
Путь к объекту{year}/{month}/{uuid}.{ext}Необязательно, см. имена файлов и папки.

Советы

  • Ограничьте API-токен единственным бакетом, который использует Aktar. Если токен когда-нибудь утечет, больше ничего не окажется под угрозой.
  • Собственный домен кэшируется Cloudflare, поэтому популярные ссылки быстро открываются по всему миру без дополнительной платы.
  • Хотите аккуратные папки? Измените путь к объекту, например на shots/{date}/{filename}-{random}.{ext}. См. имена файлов и папки.
  • Хотите, чтобы загрузки удалялись сами через 1-30 дней? С токеном Admin Read & Write Aktar сам добавит правила жизненного цикла в бакет. С токеном Object Read & Write добавьте их вручную в разделе Object Lifecycle Rules в Settings бакета. См. загрузки с ограниченным сроком.

Решение проблем

Ссылка возвращает Access Denied или 403

Убедитесь, что публичный базовый URL - это ваш собственный домен или URL r2.dev. Эндпоинт …r2.cloudflarestorage.com предназначен только для API и никогда не раздает публичные файлы. Подробнее в разделе ошибки Access Denied.

«Проверить подключение» сообщает, что учетные данные недействительны

Используйте Access Key ID и Secret Access Key из API-токена R2, а не обычный API-токен Cloudflare и не Global API Key. Проверьте, что в ID аккаунта нет лишних пробелов.

Загрузка работает, но ссылки открываются медленно или упираются в лимит запросов

Скорее всего, вы используете URL для разработки r2.dev. Для рабочего использования подключите собственный домен.

Все еще не получается?Загляните в FAQ или спросите на GitHub.