サーバー管理のヒント - kmycode/mastodon GitHub Wiki
おすすめのアカウント
https://kmy.blue サーバーにある「@official」アカウントは、「kmy.blue」というサーバーのお知らせを掲載するものです。それとは別に、Mastodonフォークとしてのkmyblueの機能を紹介するためのアカウントが上にある「@software」アカウントです。kmyblueフォーク管理者・利用者、両方に向けた案内を定期的に行います。kmyblueの使い方を周知する意味でも、利用者へ上記アカウントの紹介をお勧めします。
センシティブワード、NGワード
- NGワードは、それが含まれる投稿を一切禁止します。これは他のサーバーからの投稿に対しても適用されます。センシティブワードと違って投稿が丸ごと消えるため、例えばNGワードの指定を間違っても気づくまでに時間が非常にかかります。NGワードの指定は最小限、かつ他と重複のないワードを慎重に選んでください。現在は特徴的な言葉を持ったスパムに対する利用を想定しています
- 「スパムDM」に特化した設定項目をVer 8.0から搭載しています。これに限らず、NGワードの適用対象を狭くするためのオプションがあれば可能な限り使ってください
- センシティブワード・NGワードを扱うには別途権限が必要ですが、Ownerはともかく、モデレーターはデフォルトでこの権限が入っていません。有効にしたい場合は管理画面の「ロール」より操作してください
- デフォルトで権限を無効にしているのは、この2つの機能は正規表現を自由に設定可能だからです。正規表現は使い方によっては計算量が増え、システム全体の負荷が大幅に増えるおそれがあります。意図しないミスや悪意を持ったモデレーターによる攻撃を防ぐのが目的になっています(対策は現在検討中です)
- NGワードの場合、悪意を持ったモデレーターがいろいろな単語を設定しても、他の人が気づくには非常に時間がかかります。それにも留意してください
- (※バージョン11.2以前のみ)他のサーバーから来た投稿は、システム内部ではHTMLのまま扱われます。なのでNGワードの指定には、ローカル=平文/リモート=HTMLであることを考慮する必要もあります。これは多くの場合影響しませんが、リンクやハッシュタグを指定する場合に注意が必要です
絵文字リアクション
- 実はkmyblueはデフォルトで絵文字リアクションこそ許可しますが、『他のサーバー同士のスタンプ』を受け入れません。これは他のソフトウェアと挙動が大きく違う部分です。MisskeyやFedibirdなど他のサーバーと同じ感覚で絵文字リアクションを使えるようにしたい場合、「サーバー設定>見つける」で下記画像にある3つの設定全部有効にしてください。ただしkmy.blueサーバーの実績として、他のサーバー同士の絵文字リアクションは全体の7~8割程度を占めますので、サーバー全体の負荷が心配になったときはこのチェックを外すのも選択肢に含まれます
- やっぱり絵文字リアクション機能がある以上、通常のMastodonよりも負荷が高いです。もしSidekiqのジョブが詰まる(他のサーバーへなかなか投稿配送されない&他のサーバーの投稿がなかなか来ない)場合は、上記設定のストリーミングのところだけチェックを外せば少し改善されるかもしれません
全文検索
- kmyblueに限らずMastodonで全文検索を行うには、別途ElasticSearchの導入が必要です。 ElasticSearchは要求スペックも高いのでご注意ください。特にRAMを全部食べます。ElasticSearch設定方法
- 標準のMastodonでは、表記ゆれも考慮した検索を行います。一見便利に見えますが、これは英語圏利用者向けの話であって、日本語で検索しようとすると、たとえSudachiを使っている場合でも、特に平仮名が1文字ずつ分解されて検索されているように見えてはなはだ不便に感じることがあります
- 検索キーワードをダブルクオートで囲めば単語単位での検索になり、大幅に改善すると思います
- 毎回ダブルクオートで囲むのが面倒な場合は、『ダブルクオートで囲まず検索した時、単語単位で検索する』設定をONにしてもらってください。これはユーザーごとに設定する必要があります
フレンドサーバー
- ローカル公開投稿は通常、他のサーバーには未収載として配送されます。フレンドサーバーであればローカル公開のまま配送されますので、検索許可に関係なく購読可能・連合タイムラインに流れるといった恩恵を受けられます。また、別途設定変更が必要ですがローカルタイムラインに流れる原則全ての投稿を、フォロー関係なく共有することも可能です。自分と趣向の似ているサーバーと結びつくために作った機能です
- フレンドサーバー、ならびにローカル公開の実装経緯や使い方など詳細については、別途記事を作っています https://note.com/kmycode/n/nbdf2a74beaf3
- 上記記事にも書いていますが、連合リレーで十分であれば連合リレーを使ってください
- フレンドサーバーで連合リレーのようなことをやりたい場合、そういう設定がデフォルトでオフになっていますので手動で有効にした上、必要に応じて相手のサーバーにも注意を促してください。この設定はサーバー全体の設定ではなく、フレンドサーバーごとに設定する必要があります
カスタム絵文字のライセンス
※管理画面でカスタム絵文字のライセンスの表示・編集がサポートされるのはバージョン8.0以降になります
- Misskeyはカスタム絵文字のライセンスを実装したという話が出回っていますが、実は2023年10月時点でMisskeyはライセンス情報を連合しません。そのためkmyblueを含む他のサーバーからカスタム絵文字のライセンス情報を認識することは不可能であり、Misskeyの絵文字にライセンスがついていないのは正常な挙動です。ただしFedibirdやごく一部の独自改造Misskeyサーバーは例外的にライセンス情報を連合しますので、そちらとの情報交換は可能です
- 以上のような事情がありますので、カスタム絵文字のライセンスは無視される前提で設定してください
- Misskeyでカスタム絵文字をコピーする時は「相手サーバーのサイトを開いてライセンスを確認」する作業が求められているようですが、kmyblueでは現在、管理者以外がライセンス情報を確認する手段はありません(一応絵文字のURI把握してActivityPub向けJSONを出すという方法はありますが上級者向けです)。今後改善予定ではありますが、当面の間の制限事項としてご留意ください
登録していないはずのカスタム絵文字を『許可なく勝手に登録した』と言われたときは
kmyblueでは、自分の投稿に他のサーバーからスタンプが来たとき、それに相乗りすることができます。カスタム絵文字を使ったスタンプでも同様です。 なので見た目の上では、他のサーバーの絵文字をコピーしてリアクションしたように見えてしまいます。
他のサーバーの絵文字に相乗りできる仕様はkmyblue、FedibirdやAkkomaなど一部サーバーにしかないもので、Misskeyには搭載されていません。そのためMisskeyユーザーの中にはこれを知らない人も多いです。
さらに問題を厄介にしているのは、サーバー管理者にしか見れない管理画面での話ですが、Fedibirdやkmyblueでは相乗りスタンプを受け取った時にそのカスタム絵文字のもともとの所有者を特定する処理があるため、相乗り絵文字は本来のドメインで表示されます。しかしMisskeyにはその処理がないようなので、kmyblueやFedibirdが絵文字の所有者であるかのように表示されてしまうと思います。
スタンプへの相乗り自体はkmyblueやFedibirdにそのカスタム絵文字が登録されていなくても可能です。本当にkmyblueやFedibirdにその絵文字が登録されていないか客観的に確認するには、まず以下のURLを開いて、ブラウザの検索機能を用いてそこに特定のショートコードが含まれていないか確認する方法が挙げられます。
https://[ドメイン名]/api/v1/custom_emojis
5.x LTSにおけるカスタム絵文字編集画面のエイリアス名編集について
カスタム絵文字の編集画面はバージョン8.0で大幅改善されていますが、LTSでは、特にエイリアス名の編集が分かりづらくなっています。
- エイリアス名とは、ショートコード以外にそのカスタム絵文字を検索するためのキーワードです
- エイリアス名が複数ある場合は
,
で区切ってください - エイリアス名はカスタム絵文字一覧画面でしか編集できず、選択した全てのカスタム絵文字に適用されます
- 既存のカスタム絵文字のエイリアス名を変更したい場合、そのカスタム絵文字の下にエイリアス名が表示されてますのでそれを自分でコピペしてから変更してください
- エイリアス名空欄でカテゴリだけ変更してもエイリアス名は消えないようになっています
これらの分かりづらい操作方法はバージョン8.0、そして次のLTSで改善されます。LTSお使いの方はご迷惑おかけしますがしばらくお待ち下さい
サーバー設定のアカウント作成画面にある「新規登録ボタンの直上に表示するメッセージ」
この設定、一体何に使うんだろうと思った人もいると思うのですが、こんなふうに使います。
実際のサーバーではこのように表示されます。
CloudFlareを使うことで、お手軽に新規登録に対して認証をかけることが可能です(新規登録APIを塞ぐのを忘れずに)。詳細はこれなどの記事を参照してください。
プライバシーを気にする利用者(特にヨーロッパの人)に事前にCloudFlare認証があることを通知するために、この設定項目を作成しました。もちろん他の用途にお使いいただいても構いませんが、この設定項目を作った理由と手軽なスパムの防御方法について説明しました。
独自修正(ElasticSearch設定など)
- kmyblueでは、
kb_development
、kb_patch
、kb_lts
の3つのブランチを使い分けています。リリースも原則これら3つのブランチから出ます - 余談:開発者が1人しかいないにかかわらずこれら3つのブランチへの直接コミットを行わずプルリクエストを介しているのは、システムの利用というよりは単に開発者が熱中しすぎて時間を忘れたりしないよう意図的に手続きを複雑にしているだけです
- みなさんがプルリクエストしたい場合、マージ先は
kb_development
を指定してください。マージ後に開発者が必要と判断すればLTS向けにバックポートを行います(LTS向けのバックポートプルリク別途作ってもらっても構いません)
kmyblueが意図的に実装してないもの・実装はしたが他より機能が少ないもの
kmyblueの開発方針についてはこちらを御覧ください(ちょっと情報が古い)。Mastodon本家の開発方針を大いに参考にしているものです。
- Misskeyががっつり対応してるにかかわらずkmyblueが引用機能に長い間対応してなかったのは、引用が『見たくない投稿を見ない』『見られたくない人に見せない』両方の原則に違反しているからです。引用によって攻撃的な投稿がローカルタイムラインに流れてローカルユーザーの目に触れる/自分の投稿に変なコメント付きで引用されて結果炎上する、というリスクをおそれています。kmyblueでは引用を実装するにあたって、『自分の画面に引用を表示しない』『自分の投稿の引用を許可しない』両方の設定を追加しています
- 引用表示機能は5.x LTSには搭載されていませんのでご注意ください
- 『自分の画面に引用を表示しない』設定は、ユーザー設定の「外観」より可能です。デフォルトでは公開タイムラインでは非表示になっているため、ローカルタイムラインで他人の引用を見たい場合は手動での設定変更が必要です。ホーム画面やリストでの引用表示はデフォルトでは表示になっています
- このほか、フィルターを引用部分に適用する設定もkmyblueでは利用可能です
- 『自分の投稿の引用を許可しない』設定は、プロフィール設定の「プライバシー追加設定」より可能です。デフォルトではオフ(許可する)になっています。ただしこの制限をかけても、実際にこの設定を考慮してくれるのは今のところkmyblueまたはkmyblue系フォークのみで、Misskeyなどはこの設定に関わらず自由に引用できます
- お気に入り・ブックマークの公開はMisskeyにはありますが、kmyblueでは『見られたくない人に見せない』という原則に反するため実装していません。お気に入りやブックマークに登録された投稿を『別の投稿と組み合わせることで読者に違う印象を植え付けたり、罵詈雑言と組み合わせることでありもしない憎悪を生み出します(まとめブログと同様の理論)。これを非常に懸念しています。もし実装するとしても投稿者による許可制でデフォルトは無効になると思います
- 自分の投稿をまとめたい場合は『注目のハッシュタグ機能』を使ってください。ただしこの機能は本家Mastodonではほとんど空気になっており、kmyblueでも同様です(バージョン12.0で改善予定です)
- 投稿を検索するには、別途投稿者による許可が必要です。これは『見られたくない人に見せない』という原則を守ったものです。自分の投稿を誰かに自由に検索されたい場合は、プロフィール設定の「公開投稿を他のサーバーで自由に検索できるようにする」や、ユーザー設定の「公開範囲と検索」ページにある検索許可の設定、この両方を変更してもらうことにしています
- プロフィール設定の「公開投稿を他のサーバーで自由に検索できるようにする」は、kmyblue・Fedibird系を除くMastodonやFirefishで、公開範囲「公開」の投稿を全て検索できるようにするものです
- ユーザー設定の「公開範囲と検索」において検索許可を「誰でも」に変更すると、kmyblueまたはkmyblue系フォークならびにFedibirdのサーバーでその設定通りに検索できるようになります。前項と異なり『フォロワーであれば自由検索できる』というオプションが設定可能であるうえ、投稿フォームにおいて投稿ごとにこの設定を変更することもできます