画像まわり、さらにいろいろいじりました。

・heic, heif, avif, bmpの対応を改善。avif以外は受け取ったあとwebp変換して扱います。

・カラープロファイルが抜けることがあったので、保持されるようにしました。

・サイズの大きいGIF animationを受け取って縮小するようにしました。従来よりも大きなサイズに対応しています。

・メディアプロキシのレートリミットを緩くしました。

動画のサムネイル生成がちょっとおかしい気がしますが、他はだいたい整備できたと思いますので、このへんで一区切りです。

MisskeyやPleromaなどMastodon以外のActivityPubサーバからやってくるメディアとの互換性が向上しました。

添付画像の他、アバターやヘッダー画像が受け取れないケースをだいぶ減らせたのではないかと思います。

この画像が表示されないという実例をみつけたら可能であれば対処していきますので教えてください。

Mastodonのメディアプロキシについては、恐らくほとんど知られていないと思いますので、少し解説。

まず、Mastodonはリモートから届いた投稿やユーザー、カスタム絵文字などのメディアを、自身の管理下のストレージに保存(キャッシュ)します。

Mastodonは、ユーザーの行動を解析・トラッキングさせない工夫として、外部へのアクセスをサーバが代行し、タイミングをずらし、直接参照させないようにしています。

また、不安定なネットワークではなく、キャッシュした情報から提供することで安定したアクセスを保証し、

不正な情報の埋め込みや、位置情報などの意図しない漏洩を避けるための事前処理をしています。

軽量なサムネイルも生成します。

さて、キャッシュはずっと保持していると延々と増え続けるため、運用上、古いキャッシュを定期的に破棄することが多いです。

この時、メディアが見られなくなってしまっては不便なので、ユーザーが表示しようとしたタイミングで再取得するようになっています。

この代行をメディアプロキシが行っています。

Mastodonは、メディアのURLの代わりにメディアプロキシのURLを渡します。ブラウザやクライアントがそれを表示しようとすると、そのタイミングで再取得してから渡しています。

フォロー

メディアプロキシの働き・仕組みについては別項で書きました。
fedibird.com/@noellabo/1103653

さて、fedibird.com固有の事情ですが、

メディアサーバの引っ越しにあたって、ローカルのデータは完全移行(何か取りこぼしてる可能性はありますが)できましたが、

リモートのキャッシュは全て複製しきれず、添付画像の古いものの大部分は旧サーバに置いてきました。(そして破棄しました)

これを、まだデータを保持しているつもりになっているデータベースから、保持している記憶を忘れてもらい、必要なタイミングでメディアプロキシが働くようにしてあります。

この再取得は、ブーストで古い投稿が再びタイムラインに流れたときや、アカウントの投稿一覧・画像一覧から表示した時に働きますが、

Mastodonの標準のレートリミット(ひとりあたり一定期間のアクセス数を制限する仕組み)が10分に30回だけと、非常に厳しく設定されています。

Webプロセスに負荷がかかるので妥当な設定だと思いますが、fedibird.comはそれなりに処理能力がありますし、再取得が集中しますので、

暫定的に1分に300回まで解放しています。 [参照]

低解像度サムネイル関係の設定が増えました。

低解像度サムネイルを使う設定を有効にした時に、

WebUIのアカウントのカラムでフルサイズの画像を表示するための機能を追加しました。

アバターとヘッダーが別になっています。

タイムライン上では低解像度の軽い画像を見つつ、しっかり確認したい場合に綺麗に見られるという設定です。

この設定を有効にすると、サーバがAPIで返すアカウントの情報に、avatar_fullとavatar_full_static、header_fullとheader_full_staticを追加するようになります。URL文字数分、わずかですが、転送データが多くなりますので承知しておいてください。

なお、転送量を少なくする設定には他にもあります。

『アニメーションGIFを自動再生する』をオフにしておくと、アバターや絵文字のアニメーションがオフになりますが、同時にデータもかなり軽くなります。

『被フォロー状態をフォローボタンに反映する』をオフにしておくとrelationship確認のAPIコールが減ります。

『リアクションのストリーミングを無効にする』ことでストリーミングも少なくなります。

上手に活用してください。

あ、『タイムライン上にフォローボタンを表示する』『タイムライン上に購読ボタンを表示する』もオフじゃないと減らないな。

まあ、多分デフォルトがオフなので大丈夫でしょう……。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。