Около 5 мин
Как загружать файлы в Cloudflare R2 и делиться ссылками
Cloudflare R2 отлично подходит для Aktar: здесь нет платы за исходящий трафик, бесплатного тарифа хватает почти для любых скриншотов, а собственные домены раздаются через сеть Cloudflare. В Aktar есть отдельный пресет для R2, поэтому вам понадобятся только ID аккаунта, API-токен и бакет.
Что понадобится
- Аккаунт Cloudflare с включенным R2
- Домен в Cloudflare, если вы хотите ссылки на собственном домене (необязательно)
- Aktar, установленный на вашем Mac
Пошагово
- 1
Создайте бакет
В панели Cloudflare откройте R2 Object Storage и нажмите Create bucket. Выберите короткое имя, например
screenshots, и оставьте автоматическое расположение. - 2
Дайте бакету публичный адрес
Откройте Settings бакета. В разделе Custom Domains подключите домен или поддомен, которым вы управляете в Cloudflare, например
files.example.com. Это лучший вариант для реальной работы.Для быстрой проверки можно вместо этого включить Public Development URL (
pub-….r2.dev). Cloudflare ограничивает частоту запросов к этому URL и не рекомендует его для рабочего использования. - 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
Добавьте место назначения в Aktar
Откройте в Aktar Настройки → Места назначения → Добавить место назначения, выберите Cloudflare R2 и заполните поля по таблице ниже. Эндпоинт Aktar определит по ID аккаунта.
- 5
Проверьте и сохраните
Нажмите Проверить подключение. Aktar загрузит крошечный тестовый файл, проверит, что он доступен по вашему публичному адресу, и удалит его. Когда все проверки пройдены, нажмите Сохранить и перетащите первый файл на значок в строке меню.
Настройки в Aktar
Введите эти значения в разделе Настройки → Места назначения → Добавить место назначения. Названия полей совпадают с приложением.
| Поле | Пример значения |
|---|---|
| Провайдер | Cloudflare R2 |
| Имя профиля | PersonalЛюбое имя на ваш выбор. |
| ID аккаунта | 3f9a71c0e2b8…Со страницы обзора R2. |
| Регион | autoОставьте значение по умолчанию. |
| Access Key ID | a1b2c3d4…Из API-токена R2. |
| Secret Access Key | ••••••••Хранится в Связке ключей macOS. |
| Бакет | screenshots |
| Публичный базовый URL | files.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.