plusminus editionについて

はじめに

 
Mastodon plusminus editionは、Mastodonの痒い部分に手が届くように改造を加えたMastodonです。
PostgreSQLのDBスキーマが本家Mastodonと完全に一致する(👉DBに手を加えない)ように改造を行っているため、 docker-compose.yamlimage を書き換えるだけで、すぐに使い始めることができます。
 
改造の範囲は、とても便利になるであろう機能から、界隈の内輪ネタな部分までカバーしています。
また、改造した機能の有効/無効や値については可能な限り調整できることを第一にしています。
これは、バニラのMastodonがハードコードばかりであったり、独裁的な部分があったりするのを不満に思う場面が多かったためです。
 

入手先

 
mastodon
mstdn-plusminus-ioUpdated Feb 21, 2023
 

改造点

バックエンド

Elasticsearchの日本語対応

 
日本語のtootも検索できるように、ICU Analysis PluginJapanese (kuromoji) Analysis Pluginを利用してindexを作成するようにしています。
これは設定不要です。
 

tootの文字数制限を変更

 
比較的需要が高いtootの文字数制限は、環境変数 STATUS_LENGTH_LIMIT のみで変更することができます。
デフォルトでは5000文字に緩和してありますが、 STATUS_LENGTH_LIMIT=500 を指定すれば、バニラのMastodonと同じ挙動にすることもできます。
 

API経由のユーザー登録を無効化

 
スパムアカウントの登録を防ぐために、APIでアカウント登録をさせないようにできます。
環境変数 DISABLE_SIGNUP_BY_API=true を指定すると、ユーザー登録APIにアクセスしたときにエラーを返すようになります。
 

ユーザー登録でbot判定を行う

 
Cloudflare Turnstileを利用して、ユーザー登録を行おうとしているのが人間なのかbotなのかを判定する仕組みを追加できます。
以下の環境変数を設定することで利用できます。
  • CLOUDFLARE_TURNSTILE_ENABLED=true
  • CLOUDFLARE_TURNSTILE_SITE_KEY=changeme
  • CLOUDFLARE_TURNSTILE_SECRET_KEY=changeme
 

リモートメディアのキャッシュを無効化

 
 
Pleromaのように、リモートメディアをキャッシュしないように設定できます。
環境変数 DISABLE_REMOTE_MEDIA_CACHE=true を指定すると、リモートのメディアのプロキシとキャッシュを無効化し、URLを直接返すようになります。
 

メディア添付上限数を変更

 
環境変数 MAX_MEDIA_ATTACHMENTS=[int] を指定すると、ローカルおよびリモートのメディア添付上限数を変更できます。
Misskeyのように、5枚以上の画像を扱うことができます。
 

メディアの上限サイズを変更

 
環境変数 MAX_ATTACHMENT_MATRIX_LIMIT=[int] を指定すると、メディアの上限解像度を変更できます。
また、 IMAGE_LIMIT_MEGABYTES=[int] で画像のファイルサイズを、 VIDEO_LIMIT_MEGABYTES=[int] で動画のファイルサイズをそれぞれ設定できます。
 

ストリーミングAPIの切断テスト

 
アプリ開発時のテスト用途として、ストリーミングAPIの接続で以下の設定を行うと、サーバー側から切断を行います。
  • Server-Sent Events
    • HTTPヘッダ
      • X-Disconnect-After: [秒 (float)]
  • WebSocket
    • クエリパラメータ
      • x-disconnect-after=[秒 (float)]
 

フロントエンド

 
// TODO: