Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

Mastodon

最終更新 Markdown で表示Agent セットアップ

Mastodon は、よく使われる fediverse ソフトウェアです。このガイドでは、セルフホストの Mastodon インスタンスでオブジェクトストレージとして R2 を設定する方法を説明します。新規インスタンス既存インスタンス の両方に対応します。

新規インスタンスをセットアップする

セルフホストの Mastodon インスタンスは、複数の方法で構築できます。詳細は 公式ドキュメント を参照してください。インストール後、Mastodon ドキュメントの Configuring your environment に進んだら、以降の手順を参照してください。

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 object storage ページを開きます。

    Overview を開く ↗
  2. Create bucket を選びます。

  3. バケット名を入力して Create bucket を選びます。この名前は Mastodon インスタンス設定時の内部名であり、公開されません。

  4. バケット作成後、このバケットの Settings タブを開き、S3 API の値をコピーします。

  5. Settings タブで Connect Domain を選び、手順 1 のホスト名を入力します。

  6. R2 の概要ページに戻り、Manage R2 API Tokens を選びます。

  7. Create API token を選びます。

  8. API 名の横の鉛筆アイコンを選んでトークン名を Mastodon にし、Edit 権限を付与します。Create API Token を選んでトークン作成を完了します。

  9. Access Key IDSecret Access Key の値をコピーします。

3. Mastodon 向けに R2 を設定する

公式の 設定ファイル に沿って Mastodon インスタンスを設定するとき、File storage セクションを次の内容に置き換えます。

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 は ACL ヘッダーに対応していません。

設定後、インスタンスを起動できます。起動したらメディアをアップロードし、上で設定したホスト名から取得されることを確認します。R2 のバケットページに戻ると、次のような構成が見えます。

セットアップ後、稼働中のインスタンスにおける Mastodon バケットの構成

R2 へ移行する

すでにインスタンスが動いている場合は、メディアファイルを R2 へ移行し、エグレス料金なし の利点を活かせます。

1. R2 バケットを用意し、ファイル移行を始める

  1. (任意)移行ファイル数を減らすには、Mastodon admin CLI で未使用ファイルを整理できます。
  2. 上の 新規インスタンスをセットアップする の手順 1 と 2 に沿って、ファイル移行用の R2 バケットを用意します。
  3. メディアファイルをすべて R2 へ移行します。各種プロバイダーをつなぐ手順は examples を参照してください。メディアをローカルでホストしている場合は、rclone でローカルファイルを R2 へアップロードできます。

2. (任意)ファイルパスのリダイレクトを設定する

ファイル移行には時間がかかることがあります。その間に、ファイルパスのリダイレクト設定を用意できます。

メディアをローカルでホストしていた場合は、多くの場合リダイレクトが必要です。ローカルホストのメディアは、デフォルトでは https://mastodon.example.com/cache/... のようなパスになります。R2 バケットを Mastodon インスタンスと併用し始めたあとは、https://mastodon-files.example.com/cache/... のようなパスへリダイレクトする必要があります。すでに別の S3 互換オブジェクトストレージを使っていて、同じホスト名を維持する場合は、リダイレクトは不要です。

一括リダイレクト(Bulk Redirects) は、すべてのプランで使えます。詳細は ダッシュボードで一括リダイレクトを作成する を参照してください。

一括リダイレクト(Bulk Redirects)の Source URL と新しい Target URL の一覧

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

移行計画に応じて、バケットが公開でアクセスでき、リダイレクトが正しく動くかを確認できます。確認するには、https://mastodon.example.com/cache/... のような既存のアップロード済みメディアを開き、ホスト名を mastodon.example.com から mastodon-files.example.com に置き換えて新しいパスを開きます。ファイルが正しく開けたら、最後の手順へ進みます。

4. 移行を完了する

移行中もインスタンスは動いていることがあります。その間に、直接アップロードやほかの連合インスタンスからの取得で、新しいメディアファイルが作られることがあります。新規ファイルだけをアップロードするには、rclone のようなプログラムを使えます。同期プログラムを再実行すると、既存ファイルはすべて、少なくとも Class B 操作 で確認されます。

ファイルの同期が終わったら、新規インスタンスの 手順 3 と同じオブジェクトストレージ設定で、Mastodon インスタンスを再起動します。

役に立ちましたか?