Документация Запланировать пилот

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

  1. На панели управления Cloudflare перейдите к разделу Объектное хранилище R2 страницу.

    Перейдите в Обзор ↗
  2. Выберите Создание бакета.

  3. Введите имя бакета, затем выберите Создание бакета. Это имя используется только при настройке вашего экземпляра Mastodon и недоступно извне.

  4. После создания бакета перейдите в раздел Настройки вкладке этого бакета и скопируйте значение S3 API.

  5. Из раздела Настройки вкладке выберите Connect Domain и введите имя хоста из шага 1.

  6. Вернитесь на страницу обзора R2 и выберите Управление API-токенами R2.

  7. Выберите Создание API-токена.

  8. Присвойте имя своему токену Mastodon выбрав значок карандаша рядом с именем API, и предоставьте ему Изменить разрешение. Выберите Создать API-токен чтобы завершить создание токена.

  9. Скопируйте значения 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, вы должны увидеть следующую структуру.

Структура бакета Mastodon после настройки и запуска инстанса

Перенос в R2

Если у вас уже запущен экземпляр, вы можете перенести медиафайлы в R2 и воспользоваться преимуществами без затрат на исходящий трафик.

1. Настроить бакет R2 и начать миграцию файлов

  1. (Необязательно) Чтобы уменьшить количество переносимых файлов, можно использовать Mastodon admin CLI ↗ чтобы удалить неиспользуемые файлы.
  2. Настройте бакет R2 для миграции файлов, выполнив шаги 1 и 2 из Настройка нового экземпляра раздел выше.
  3. Перенесите все медиафайлы в R2. См. примеры предоставляется для объединения различных провайдеров. Если сейчас вы храните эти медиафайлы локально, вы можете использовать rclone , чтобы загрузить эти локальные файлы в R2.

2. (Необязательно) Настроить редиректы путей файлов

Пока выполняется миграция файлов, что может занять некоторое время, можно подготовить настройки перенаправления путей к файлам.

Если ранее медиафайлы размещались локально, вам, скорее всего, потребуется настроить перенаправления. По умолчанию путь к локально размещённым медиафайлам похож на https://mastodon.example.com/cache/..., который нужно перенаправить на путь, похожий на https://mastodon-files.example.com/cache/... после того как бакет R2 будет настроен и заработает вместе с вашим экземпляром Mastodon. Если вы уже используете другой S3-совместимый сервис объектного хранения и хотите сохранить то же имя хоста, настраивать редиректы не нужно.

Bulk Redirects доступны на всех тарифных планах. Подробнее см. в Создание Bulk Redirects в панели управления, где это описано подробнее.

Список исходных URL-адресов и их новых целевых URL-адресов в рамках Bulk Redirects

3. Проверить бакет и редиректы

В зависимости от плана миграции вы можете проверить, доступен ли бакет публично и корректно ли работают перенаправления. Для проверки откройте уже загруженный медиафайл по пути вида https://mastodon.example.com/cache/... и замените имя хоста из mastodon.example.com к mastodon-files.example.com и перейдите по новому пути. Если файл открылся корректно, переходите к последнему шагу.

4. Завершить миграцию

Во время миграции ваш инстанс может продолжать работать, и в этот период у вас, вероятно, появляются новые медиафайлы: как из-за прямой загрузки, так и из-за получения с других федеративных инстансов. Чтобы загрузить только новые файлы, можно использовать программу вроде rclone. Обратите внимание, что при повторном запуске программы синхронизации все существующие файлы будут проверяться с использованием как минимум операции класса B.

После завершения синхронизации всех файлов перезапустите свой экземпляр Mastodon с новой конфигурацией объектного хранилища, как описано в шаг 3 раздела Настройка нового экземпляра.

Запросите бесплатный пилот

Запланировать пилот