この記事は 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。
この問題を解決するために、
- AWS Code Build で self-hosted runner を構築
- self-hosted runner で動かす workflow を定義
という感じで image をビルドするようにしています。
これにより、ビルドの所要時間が 1h45m から 8m まで短縮されました。
絵文字リアクション
fedibird や misskey や kmyblue から飛んでくる絵文字リアクションを認識するために以下のパッチを当てています
- Like アクティビティが飛んできた時にその情報を保存する
- 絵文字リアクションを Status の content にうまいこと埋め込む
かなり富豪的な実装であり、たまにうまく動かないこともあるんですが、リロードすると大体見えるのでヨシとしています。
全文検索
mastodon の全文検索は elasticsearch を利用する都合上、多くのマシンリソースを消費することが予想されたので、代替となる検索機能を実装しています。
- mastodon/app/services/poormans_statuses_search_service.rb at 82f05a3f831c3625126ef3304350a6d443d41a6d · genya0407/mastodon · GitHub
- mastodon/app/services/search_service.rb at 82f05a3f831c3625126ef3304350a6d443d41a6d · genya0407/mastodon · GitHub
詳しくは以下を参照のこと
スパムブロック
鳩の方から頂いた例のパッチを当てています。 コードは略。
その他細かいやつ
- デバッグ用のログ出力処理の追加
- Open Telemetry 関連 gem のアップデート
- Open Telemetry のトレースの追加
- youtu.be のリンクが OGP 展開されるようにするやつ
- 投稿の引用をうまいこと表示できるようにするやつ
まとめ
social.genya0407.link に入っているパッチを振り返りました。 みなさんのサーバーに入っているパッチも教えてください!