INTEGRITY Документация

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 раздела Настройка нового экземпляра.