← Cloudflare R2 / r2 / tutorials
Mastodon
Mastodon ↗ является популярным федиверс ↗ ПО. В этом руководстве объясняется, как настроить R2 в качестве объектного хранилища для самостоятельно размещённого экземпляра Mastodon, будь то новый инстанс или существующий инстанс.
Настройка нового экземпляра
Вы можете развернуть самостоятельно размещённый экземпляр Mastodon разными способами. См. официальная документация ↗ для получения подробностей. Когда вы достигнете Настройка окружения ↗ шаг в документации Mastodon после установки, обратитесь к процедурам ниже для следующих шагов.
1. Определить имя хоста для доступа к файлам
В отличие от имени хоста по умолчанию для вашего экземпляра Mastodon, объектному хранилищу файлов требуется уникальное имя хоста. Например, если имя хоста вашего Mastodon настроено как mastodon.example.com, вы можете использовать mastodon-files.example.com или files.example.com для доступа к файлам. Это означает, что при обращении к вашему инстансу по адресу mastodon.example.com, при наличии медиафайлов, прикреплённых к посту, например изображения или видео, файл будет отдаваться на хосте, определённом на этом шаге, например mastodon-files.example.com.
2. Создать и настроить бакет R2
-
На панели управления Cloudflare перейдите к разделу Объектное хранилище R2 страницу.
Перейдите в Обзор ↗ -
Выберите Создание бакета.
-
Введите имя бакета, затем выберите Создание бакета. Это имя используется только при настройке вашего экземпляра Mastodon и недоступно извне.
-
После создания бакета перейдите в раздел Настройки вкладке этого бакета и скопируйте значение S3 API.
-
Из раздела Настройки вкладке выберите Connect Domain и введите имя хоста из шага 1.
-
Вернитесь на страницу обзора R2 и выберите Управление API-токенами R2.
-
Выберите Создание API-токена.
-
Присвойте имя своему токену
Mastodonвыбрав значок карандаша рядом с именем API, и предоставьте ему Изменить разрешение. Выберите Создать API-токен чтобы завершить создание токена. -
Скопируйте значения Access Key ID и Secret Access Key.
3. Настроить R2 для Mastodon
При настройке инстанса Mastodon на основе официального файл конфигурации ↗, замените Хранение файлов раздел со следующими данными.
S3_ENABLED=true
S3_ALIAS_HOST={{mastodon-files.example.com}} # Change to the hostname determined in step 1
S3_BUCKET={{your-bucket-name}} # Change to the bucket name set in step 2
S3_ENDPOINT=https://{{unique-id}}.r2.cloudflarestorage.com/ # Change the {{unique-id}} to the part of S3 API retrieved in step 2
AWS_ACCESS_KEY_ID={{your-access-key-id}} # Change to the Access Key ID retrieved in step 2
AWS_SECRET_ACCESS_KEY={{your-secret-access-key}} # Change to the Secret Access Key retrieved in step 2
S3_PROTOCOL=https
S3_PERMISSION=Оставьте S3_PERMISSION пустым. Это не позволяет Mastodon отправлять заголовки ACL, которые R2 не поддерживает.
После завершения настройки вы можете запустить свой инстанс. Когда инстанс будет работать, загрузите медиавложение и убедитесь, что оно загружается с указанного выше хоста. Вернувшись на страницу бакета в R2, вы должны увидеть следующую структуру.
Перенос в R2
Если у вас уже запущен экземпляр, вы можете перенести медиафайлы в R2 и воспользоваться преимуществами без затрат на исходящий трафик.
1. Настроить бакет R2 и начать миграцию файлов
- (Необязательно) Чтобы уменьшить количество переносимых файлов, можно использовать Mastodon admin CLI ↗ чтобы удалить неиспользуемые файлы.
- Настройте бакет R2 для миграции файлов, выполнив шаги 1 и 2 из Настройка нового экземпляра раздел выше.
- Перенесите все медиафайлы в R2. См. примеры предоставляется для объединения различных провайдеров. Если сейчас вы храните эти медиафайлы локально, вы можете использовать
rclone, чтобы загрузить эти локальные файлы в R2.
2. (Необязательно) Настроить редиректы путей файлов
Пока выполняется миграция файлов, что может занять некоторое время, можно подготовить настройки перенаправления путей к файлам.
Если ранее медиафайлы размещались локально, вам, скорее всего, потребуется настроить перенаправления. По умолчанию путь к локально размещённым медиафайлам похож на https://mastodon.example.com/cache/..., который нужно перенаправить на путь, похожий на https://mastodon-files.example.com/cache/... после того как бакет R2 будет настроен и заработает вместе с вашим экземпляром Mastodon. Если вы уже используете другой S3-совместимый сервис объектного хранения и хотите сохранить то же имя хоста, настраивать редиректы не нужно.
Bulk Redirects доступны на всех тарифных планах. Подробнее см. в Создание Bulk Redirects в панели управления, где это описано подробнее.
3. Проверить бакет и редиректы
В зависимости от плана миграции вы можете проверить, доступен ли бакет публично и корректно ли работают перенаправления. Для проверки откройте уже загруженный медиафайл по пути вида https://mastodon.example.com/cache/... и замените имя хоста из mastodon.example.com к mastodon-files.example.com и перейдите по новому пути. Если файл открылся корректно, переходите к последнему шагу.
4. Завершить миграцию
Во время миграции ваш инстанс может продолжать работать, и в этот период у вас, вероятно, появляются новые медиафайлы: как из-за прямой загрузки, так и из-за получения с других федеративных инстансов. Чтобы загрузить только новые файлы, можно использовать программу вроде rclone. Обратите внимание, что при повторном запуске программы синхронизации все существующие файлы будут проверяться с использованием как минимум операции класса B.
После завершения синхронизации всех файлов перезапустите свой экземпляр Mastodon с новой конфигурацией объектного хранилища, как описано в шаг 3 раздела Настройка нового экземпляра.