みなさん、こんにちは。鯖缶になった柊 陸凪です。
今回はひょんとしたことからFediverseのおひとりさまインスタンスを建てた経緯とMisskeyを選んだ理由、そして、建てるところでちょっと詰まったことについて等について話していこうと思います。
01.Misskeyとはなにか?
一言で言うと、ActivityPub(分散型SNSのプロトコル)に対応した分散型SNSのプラットフォームの一種です。開発者はしゅいろ氏であり、日本発の分散型SNSであり、豊富な機能(文字装飾やリアクション機能)を有している事が特徴です(詳細はMisskey公式へ)。また、リアクション機能については、TwitterやMastodonのいわゆるFavoriteに値するような機能ではあるが、カスタム絵文字を含む絵文字を使うことでリアクションが可能です。しかしながら、Misskey⇒Mastodonの場合はつけたリアクションがMastodon側では画一的にFavorite状態、MastodonのFavorite⇒Misskeyの場合は☆か👍(自由に鯖缶が選べる)になります。またCat機能なるものも存在していてにゃ。\にゃ~~~~~ん/もちろんストリーミングやサードパーティークライアント向けのAPIにも対応しており、流れるタイムラインを楽しむことができます。
02.サーバーを建てることになったきっかけ
「Fediverseでしかできないこと」をやりたかったことでしょうか。なお、影響を受けた記事としては、国見小道氏の「おひとりさまインスタンスがやはり最強であった」です。
なぜMisskeyを選んだかといえば、インスタンスを構築するうえでのWiki等の情報が充実しているという点が挙げられます。
03.早速サーバーを建ててみる
私の場合は、さくらVPSのRAM1.0GBプラン+オブジェクトストレージにDigital Ocean+ドメインについては以前お名前.comで取得したものがあったのでそれのサブドメインを利用、CDNにcloudflareという構成にしました。自宅鯖も検討しましたが、24時間稼働が必要であることや、LAN内に完結せずにWebに公開することからVPSを選択しました。VPSのプラン等が決まったらOSの決定ということになりますが、サーバーで用いるLinuxについては、ローリングリリースモデル(archlinuxやGentooなど)と固定リリースモデル(UbuntuやCentOSなど)があります。どちらも一長一短がありますが、あらゆる面で更新がされていくこと、パッケージ管理に無駄がないこと、実機で使っていることからという理由でarchlinuxを選択しました。なお、構築に当たっては、公式の「Misskeyインストール方法詳説」、のえる氏の「Misskeyのサーバを設置する(v11系)」及びまめつこ氏の「自鯖Misskey的快適生活」を参照しました。この場を借りて感謝申上げます。
Misskeyのビルドについては、サーバーのスペックを考慮し、ローカル環境でBuild⇒Buildファイルをサーバーにsshでコピーという手法で行いました。
04.パケットキャプチャで詰まる。
いつも通りパーティションを切るところからOSをインストールしてSSH設定(pw認証は破られるので、公開鍵認証は必須)、ファイアーウォール設定、リバースプロキシの設定を行い、nginxのプロセスとmisskeyのプロセスを起動。そしてブラウザからURLにアクセスを試みるが……
「532connection timed out」
虚 無。
接続がタイムアウトしている……だ……と……。
ここでファイアーウォール設定を見直してみるも、permanentルールに追加されているし、80番と443番はやはり開いていた。再起動しても結果は変わらない。
そしてその時のトゥートがこちら。
このまま繋がらないのか……SSHではなく、半分諦めかけつつもサーバーのコントロールパネルを開いてみると
「VPSの80番ポートに対してパケットフィルタがかかっていた」
そりゃ繋がらんわ。
結構ここで行き詰まって時間が溶けていってしまったので、VPSのコントロールパネル側にパケットフィルタがある場合は、システムのfirewall以外にも、VPSのパケットフィルタ側でちゃんとhttp,httpsのポートが開いているか確認しておくという知見を得ました。(失敗から学ぶStyle)※さくらの場合はパケットフィルタの方が優先されるみたいです。
05.Cloudfrareのリダイレクトループにかかる
04.により、522エラーからおさらばできたのはいいが、ブラウザからこのようなエラーが返ってきてしまいました。どうやらリダイレクトループが発生してしまっているようなので、Cloudflareリダイレクトループエラーのトラブルシューティングを参照し、解決策を確認。
2. SSL/TLS アプリ「概要」タブで、CloudflareSSLオプションを更新します。
・現在Flexibleに設定されている場合、オリジンWebサーバーに設定済みのSSL証明書がある場合、Fullに更新します。
にあるとおり、暗号化設定をフレキシブルから
おっ、おっ、繋がったああああああああああああああ
鯖缶だけが最初に見ることができる画面のスクショは忘れましたが、紆余曲折を経て無事起動。
06.さいごに
管理者権限になるとインスタンス設定からインスタンス名等の設定、連合との設定、ローカルのファイル設定、カスタム絵文字の設定、ノートの増減等を確認できます。また、ノートの文字数の上限下限等の設定も可能です(今のところは2500文字にしています)。もちろん、お一人様サーバーとして運用するのであれば、事前告知なしに適当なタイミングでサーバーを落としてメンテナンスをしたりといったようなことも可能です。言い換えれば、自分の手のかゆいところまでインスタンスを操る事ができるといったことが可能となります。
また、フォローについては、Fediverseの特徴、言い換えれば分散型SNSの醍醐味であるリモートフォロー機能を活用することで、オープンインスタンス登録と同じようにユーザーをフォローし、タイムラインを形成していくことが可能です。少し敷居は高いかもしれませんが、皆さんもお一人様インスタンスに挑戦してみてはいかがでしょうか。