Misskey インスタンスを立てる
この記事は,N 予備校プログラミングコース Advent Calendar 2022 の 13 日目です.
今回は Misskey について書きます.
Misskey
Misskey(みすきー)とは,主に syuilo 氏によって開発されている,分散マイクロブログシステムです.ユーザ側のインタフェースは Twitter に似ていますが,分散型 のシステムであるということが特徴です.
Twitter のタイムラインに表示されるアカウントについての情報は,すべて Twitter 社のサーバに載っています.しかし Misskey では,そのような情報が複数の管理者のサーバに載っている(非中央集権的である)ことがあり得ます.複数のサーバが 連合 することで,サーバを跨いでお互いに通信が可能になります.サーバの連合関係はネットワークとみなすことができ,このネットワークのことを fediverse と言うこともあります.
他の分散型マイクロブログシステムとして,有名なものは Mastodon でしょう.執筆時点ではだいぶ収束していますが,一時期は Twitter ヤバい!!!と話題になり,移住先として真っ先に取り上げられたのが Mastodon でしたので,名前だけは聞いたことあるという方も多いと思います.
なぜ Misskey か
Misskey と N 予備校プログラミングコースの観点でいえば,N 予備校プログラミングコースをだいたい全部やれば,Misskey のコア技術のだいたいを理解できて(たぶんだけど),自分だけの Misskey を運営できる ことが挙げられるでしょう.もちろん ActivityPub(サーバ間の通信規格)などは独学する必要がありますが,docker-compose.yml を覗いてみると,どこかで見たことある(かもしれない)文字列が並んでいることがわかるでしょう.
また,要素技術がわかっているということは,Misskey のフォークを作りやすいということを意味します.つまり,ただ提供されているプログラムを使うだけでなく,そのプログラムを改変して,(ある意味で)オリジナルの SNS を構築できるのです.実際に筆者のまわりでも,Misskey のフォークが運用されており,様々なところに手が加えられています(もっともフォークなので最新版の Misskey への追従はなおざりになりがちみたいですが……).
Misskey インスタンスの構築
Misskey インスタンス(さしあたってはサーバと同義だと考えてください)の構築方法は,Misskey Hub にまとめられています.とくに手を加える予定がなければ Docker による方法が簡単でしょう.筆者も Docker を使っています.Docker は入門コースでお馴染みですね.Docker が嫌なら,自分でイチからインストールする方法もあります.入門コースを完走した方にとってはとくに難しくないでしょう.
外部に公開するためには,VPS を借りるのがおすすめです.筆者も某社の VPS を借りてインスタンスを構築しています.VPS は最小構成ではなくある程度余裕をもって構築しましょう(一敗).VPS によっては解放できるポートの設定があまりできない場合がありますが,どうせ nginx でリバースプロキシするので問題ありません.流石に 80, 443 番ポートぐらいは普通の VPS なら解放できるでしょう.
外部に公開したいなら,ドメインも取っておきましょう.IP アドレスでアクセスしてもいいですが,ドメインを取っておけばそれっぽくなります.
ドメインを準備し,サーバにソースコードをインストールし,適切な設定をすれば,次のような画面が現れます(厳密には今実運用されているサーバをブラウザのプライベートブラウジングで開いた画面なので,少し違うかもしれませんが,おおよそは同じです).

おめでとうございます!サーバが立てられました.
Fediverse への誘い
一時期盛り上がった Twitter ヤバい!!!という話で一時的に話題になった分散型 SNS ですが,fediverse の端っこにいると意外と居心地が良いです.皆さんも自分のサーバを立てて,fediverse の世界を覗いてみませんか?
余談
この記事を投稿しているサーバも,筆者が VPS を借りて構築したものです.入門コースでは外部サービスを活用して成果物を公表していましたが,外部サービスの方針次第ではうまくいかなくなってしまうこともしばしばあります(例:Heroku).独自の web ページを持ちたい,自分で作ったものをより長い期間公開したい,などの需要があれば,VPS を借りることを検討してみてください.