コンテンツにスキップ

Mastodon

Last reviewed: over 1 year ago

Mastodonは人気のあるfediverseソフトウェアです。このガイドでは、自己ホスト型のMastodonインスタンスのオブジェクトストレージとしてR2を設定する方法を説明します。これは新しいインスタンスまたは既存のインスタンスのいずれかに適用されます。

新しいインスタンスのセットアップ

自己ホスト型の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ダッシュボードにログインします。
  2. アカウントホームからR2を選択します。
  3. R2からバケットを作成を選択します。
  4. バケット名を入力し、バケットを作成を選択します。この名前はMastodonインスタンスの設定時に内部的に使用され、公開されることはありません。
  5. バケットが作成されたら、このバケットの設定タブに移動し、S3 APIの値をコピーします。
  6. 設定タブからドメインを接続を選択し、ステップ1のホスト名を入力します。
  7. R2の概要ページに戻り、R2 APIトークンを管理を選択します。
  8. APIトークンを作成を選択します。
  9. API名の横にある鉛筆アイコンを選択してトークン名をMastodonに変更し、編集権限を付与します。APIトークンを作成を選択してトークン作成を完了します。
  10. アクセスキーIDシークレットアクセスキーの値をコピーします。

3. Mastodon用にR2を設定する

公式の設定ファイルに基づいてMastodonインスタンスを設定する際、ファイルストレージセクションを以下の詳細に置き換えます。

S3_ENABLED=true
S3_ALIAS_HOST={{mastodon-files.example.com}} # ステップ1で決定されたホスト名に変更
S3_BUCKET={{your-bucket-name}} # ステップ2で設定したバケット名に変更
S3_ENDPOINT=https://{{unique-id}}.r2.cloudflarestorage.com/ # ステップ2で取得したS3 APIの一部に{{unique-id}}を変更
AWS_ACCESS_KEY_ID={{your-access-key-id}} # ステップ2で取得したアクセスキーIDに変更
AWS_SECRET_ACCESS_KEY={{your-secret-access-key}} # ステップ2で取得したシークレットアクセスキーに変更
S3_PROTOCOL=https
S3_PERMISSION=private

設定後、インスタンスを実行できます。インスタンスが稼働したら、メディア添付ファイルをアップロードし、上記で設定したホスト名から添付ファイルが取得されることを確認します。R2のバケットページに戻ると、以下の構造が表示されるはずです。

インスタンスがセットアップされて稼働した後のMastodonバケット構造

R2への移行

すでにインスタンスが稼働している場合、メディアファイルをR2に移行し、出口コストなしの恩恵を受けることができます。

1. R2バケットをセットアップし、ファイル移行を開始する

  1. (オプション) 移行するファイルの数を最小限に抑えるために、Mastodon管理CLIを使用して未使用のファイルをクリーンアップできます。
  2. 上記の新しいインスタンスのセットアップセクションのステップ1と2に従って、ファイル移行のためのR2バケットを準備します。
  3. すべてのメディアファイルをR2に移行します。さまざまなプロバイダーを接続するためのを参照してください。これらのメディアファイルをローカルでホストしている場合は、rcloneを使用してこれらのローカルファイルをR2にアップロードできます。

2. (オプション) ファイルパスのリダイレクトを設定する

ファイル移行が進行中で、時間がかかる場合がありますが、ファイルパスのリダイレクト設定を準備できます。

ローカルでメディアファイルをホストしていた場合、リダイレクトを設定する必要があるでしょう。デフォルトでは、ローカルでホストされているメディアファイルはhttps://mastodon.example.com/cache/...のようなパスを持ち、R2バケットがMastodonインスタンスと一緒に稼働するようになった後は、https://mastodon-files.example.com/cache/...のようなパスにリダイレクトする必要があります。別のS3互換オブジェクトストレージサービスをすでに使用していて、同じホスト名を維持したい場合は、リダイレクトを設定する必要はありません。

バルクリダイレクトはすべてのプランで利用可能です。詳細についてはダッシュボードでのバルクリダイレクトの作成を参照してください。

バルクリダイレクトの一部としてのソースURLとその新しいターゲットURLのリスト

3. バケットとリダイレクトを確認する

移行計画に応じて、バケットが公開にアクセス可能かどうか、リダイレクトが正しく機能しているかを確認できます。確認するには、https://mastodon.example.com/cache/...のようなパスを持つ既存のアップロードされたメディアファイルを開き、ホスト名をmastodon.example.comからmastodon-files.example.comに置き換えて新しいパスを訪問します。ファイルが正しく開けた場合は、最終ステップに進んでください。

4. 移行を完了する

移行中にインスタンスがまだ稼働している場合、移行中に新しいメディアファイルが直接アップロードされたり、他の連携インスタンスから取得されたりする可能性があります。新しく作成されたファイルのみをアップロードするには、rcloneのようなプログラムを使用できます。同期プログラムを再実行する際は、すべての既存ファイルが少なくともクラスB操作を使用してチェックされることに注意してください。

すべてのファイルが同期されたら、ステップ3で述べた新しいオブジェクトストレージ設定でMastodonインスタンスを再起動できます。