self-hosted mastodon に入れたパッチを振り返る

この記事は Fediverse Advent Calendar 2024 の4日目の記事です。

私の self-hosted mastodon ( social.genya0407.link ) に入れたパッチを振り返っていこうと思います。

全差分

upstream との差分は以下の通りです。

Comparing mastodon:v4.3.1...genya0407:v4.3.1-genya0407-4 · mastodon/mastodon · GitHub

40ファイル程度、900行にも満たない程度の差分ですし、その中の500行ぐらいはテストなので、実質的には400行程度のパッチということになります。

パッチ

docker image をビルドするための workflow

upstream にも docker image をビルドするための workflow がありますが、そちらは arm64 用のイメージのビルドが遅いです*1

この問題を解決するために、

という感じで image をビルドするようにしています。

これにより、ビルドの所要時間が 1h45m から 8m まで短縮されました。

絵文字リアクション

fedibird や misskey や kmyblue から飛んでくる絵文字リアクションを認識するために以下のパッチを当てています

かなり富豪的な実装であり、たまにうまく動かないこともあるんですが、リロードすると大体見えるのでヨシとしています。

全文検索

mastodon全文検索は elasticsearch を利用する都合上、多くのマシンリソースを消費することが予想されたので、代替となる検索機能を実装しています。

詳しくは以下を参照のこと

www.docswell.com

スパムブロック

鳩の方から頂いた例のパッチを当てています。 コードは略。

その他細かいやつ

  • デバッグ用のログ出力処理の追加
  • Open Telemetry 関連 gem のアップデート
  • Open Telemetry のトレースの追加
  • youtu.be のリンクが OGP 展開されるようにするやつ
  • 投稿の引用をうまいこと表示できるようにするやつ

まとめ

social.genya0407.link に入っているパッチを振り返りました。 みなさんのサーバーに入っているパッチも教えてください!

*1:github hosted runner には x86 のマシンしかなく、arm64 用のビルドは qemu で行われるため