サイト

Mastodonのおひとりさまインスタンスを作った


GNU Social だとか OStatus だとか Atom だとか PubSubHubbub だとかそのへんの話はおいておいて、今話題のマストドンの自分用インスタンスを立ち上げました。

私の Mastodon (OStatus) でのメインのアカウントは @hina@mstdn.fetus.jp です。

mstdn.jp や pawoo、 friends.nico には @fetus_hina というアカウントがあって、それも私のものですが、基本的には自ドメインのアカウントを使います。各インスタンスごとに名前を押さえにいくのはダサい。

sc.fetus.jp を GNU Social を使ってあげていたのですが、これをとりあえず Mastodon に切り替えてみたら、連携部分の動作がアレだったのでサブドメインごと変えました。OStatus はごく一部のエンドポイントURL以外は特に決まりはないので、データ引き継ぎ以外のURLというインタフェースにおいてもOStatusサーバ実装を切り替えるのはそんなに簡単じゃない感じ。

ここから先、Continue Reading にしてありますが TL;DR で読む価値ないです。

何やら一部で、コミュニティごとにインスタンスを作って…みたいな話がありますが、元々の思想だともっと適当なポリシーでインスタンスは作られるべきで、そこから好きにリモートフォロー(OStatus用語的には「購読」)すればいいじゃないという感じなんですが。どのインスタンスにアカウントを作るかというのは管理者が信頼できるかという意味では重要でも、コンテンツ的な意味では(法律が絡まなければ)どうでもいいはずだし、実際そう説明されているはずで、数万アカウントが一つのインスタンスを使うというのはあんまり想定した使い方じゃない感じ。(決まっているのは /.well-known/host-meta くらいなのかな。 /.well-known/webfinger も決まってるのかな)

ただ、現在のMastodonには「ローカルタイムライン」や「連邦/連合タイムライン」があって(これは将来なくなりそうな気がする)、コミュニティを作りやすいのは事実。

ちなみに、おひとりさまインスタンスを立ち上げると、「自分のタイムライン」と「ローカルタイムライン」と「連合タイムライン」が事実上同じになります。その辺の楽しさは弱小インスタンスにはない感じ。

ローカルタイムラインは、自分と同じインスタンスで public な(たぶんboostされたものを含む) toot を垂れ流すチャンネルなので、自分と同じインスタンスにいるのが自分ひとりな都合上、自分のタイムラインと大差ないものになります。

連合タイムラインは、(マストドン内部の説明がわかりづらいのだけど)「自インスタンスで生成された、または自インスタンスに到達した toot のうち public なものを垂れ流す」チャンネルです。

「自インスタンスで生成された」に関してはローカルタイムラインと同じになります。

「自インスタンスに到達した」が難しいのですが、マストドンの使っている通信の仕様上、「誰かが toot すると、その<誰かのインスタンス>から<購読者のインスタンス>に『新しいのpostされたでー』とpush通知」されます。購読者のインスタンスは複数あり得て、そのうちの一つに自分のインスタンスが入ります。ここで、例えば<誰かのインスタンス>が1000個のインスタンスと「接続」していると /about/more に書いてあったとしても、必要のないところ(当該tootのフォロワーがひとりもいないインスタンス)には通知されません。ここで、おひとりさまインスタンスにおいて「当該tootのフォロワーがひとりもいない」が成り立たないケース、つまり、「当該tootのフォロワーがいる」ケースは、「(おひとりさまなので)私がフォローしている」ケースになります。

従って、おひとりさまインスタンスにおいて連合タイムラインに流れてくる toot は、自分のタイムラインと同じものになります。

たくさん利用者がいるインスタンス――例えばmstdn.jp――で連合タイムラインに「ほかのインスタンスのtootがたくさん流れてくる」のは、「同じインスタンスにそのtootの発信者(またはboostした人)をフォローしているユーザがいる」からです。ほかのインスタンスでtootされたとしても、自分の所属するインスタンスで誰もそのtootを購読していないなら、そのtootは自分のインスタンスには流れてきませんから連合タイムラインにも表れません。