自宅サーバーにぼっちMastdon (Hollo) を建てた。SNSの終焉

背景
私がX(Twitter)に失望してアカウントを消してしまったことは以前漫画にも描いたとおりです。 しばし、紙の日記や別のSNSなどいろいろ試してきましたが、最近はだいたい次のような感じで落ち着いています。
- 紙の日記 ... 1日数回~週に数回程度の頻度で徒然なる思いを書く
- BlueSky ... ほぼ閲覧専用。投稿はほとんど告知のみ。
- X ... サークル用にアカウントを作り直したけど正直あんま使ってない
- Instagram ... 同上
- Facebook ... 友だちとのつながりのためにアカウント残してるだけという感じ
- Discord ... クローズゆえの安心感があり結構使っている


今日はこれの話をします。
Timelineとは何なのか

他の人の投稿は出てきませんし、リプライやいいねとかもないです。 頑張ればMastodon経由でなにかアクションできるのかもしれませんが、ちょっとこの辺は後で説明します。

正しく MicroBlog というわけです。
どうやって投稿しているの?
こんな感じの投稿用の画面というかアプリというかがあります。 これは私にしか見えません。
技術的な話
さて、そろそろこれが実態として何なのかを説明しましょう。
タイトルにもある通り、Mastodon です。
ただし、お一人様用の Mastodon 互換サーバーを作れる Hollo というソフトを使っています。

Hollo が Mastodon 互換APIを持つので Mastodon ツールが使える
Hollo の Clients 紹介のページに書かれているようなクライアントが使えます。

これはなんだか Clojure で Java や JavaScript のリソースを利用している事に似ています。 プロトコルに依存するとエコシステムを拝借できるという利点がありますね。
そして、ブログに投稿を埋め込むためのライブラリとして mastodon-embed-timeline というのを見つけたので これを使えば簡単に投稿を表示できるわけです。

Mastodo embed timeline が動かない
何度やってもTimelineを取得するAPIが 401 を返します。
Mastodon の API の仕様 を確認すると Public な投稿では認証が不要ということになっていますが、 どうも Hollo では認証が必須になっているようです。
オープンソース (AGPL) バンザイ

オープンソースは素晴らしい。Hollo は AGPL ライセンスなので、改造したらそのソースコードも公開する必要があります。 というわけで主に次の改造を行いました。
少々荒っぽいですが、認証部分を削除してAPIが動くようにしました。 これで無事に Mastodo embed timeline が動くようになりました。
今のところの感想
さて、なんとなく気づかれたかと思いますが、別に私はMastodonやMisskeyでの交流は目的としていないので、 Holloでさえオーバースペックです。 単に Google Form + Google SpreadSheet とかでデータ作って表示するだけくらいでも良かった気はします。
ただ、まぁ、Mastodonの資産を使えるのはそれなりに楽な気もします。
恥ずかしながら今回のことで初めて ActivityPub という概念も知りました。 これは Mastodon, Misskey, 意外にも Threads などで投稿などを共有できるプロトコルです。

ところで BlueSky が ActivityPub ではない独自のプロトコルを使っているということで、 なんかそんなところでいがみ合っている場合ではないような気もしました…。 BlueSkyなりにActivityPubが気に入らない点がなにかあるんでしょうけど。

とりあえず Hollo で作ってしまったのでしばらくはこれを使ってみようと思います。
引き続き若干 Hollo の挙動が怪しいところがあるので fork したリポジトリで直して、 余裕があれば本家にも Pull Request しようと思います。