Misskey Advent Calendar 2021の6日目の記事

mk.shc.kanagawa.jp(Meisskey)を運用してみての所感

まえがき

 この記事は Misskey Advent Calendar 2021) の6日目の記事です。当日参戦となりましたが話したいことが少しだけあったのでこちらに寄稿させていただきました。前半がMisskeyアプリケーション周り・後半がインフラ周りの内容です。
 私は現在大学生をしています。文系泣かせであるいわゆる理系の経済学が専門となります。趣味でMastodonなどFediverseのソフトの開発と運用をしています。どちらかと言えば運用の方が好きです。コードはシェルスクリプトとPythonを少し書けるくらいです。今回はMK湘南ひらつかの運用についてです。

Plumeとは(簡単に)

 ここのサイトはPlumeというActivityPub互換のソフトウェアを使用したブログインスタンスとなっております。もしかしたらご存じの方もいらっしゃるかもしれません。
同じActivityPubのブログソフトウェアとしてwritefreelyとかLemmyというものもありますが、Plumeが一番使いやすかったのでここに落ち着きました。

Misskeyソフトウェアについて

 私がMisskeyを使い始めたのは13/09/2020, 5:50:54 pm (1 year(s) ago)らしいです。最初はmisskey.ioというmisskey-dev/misskeyのフォークの一つであるMisskeyIO/misskeyのインスタンスを利用していました。よく誤解されるんですがmisskey.ioはMisskeyオリジナルのソースコードではありません。村上さんを中心としたMisskey HQによって運営されています。
 MisskeyIO/misskeyの気に入ってる独自機能としては、PGroongaの全文検索ですね。これのおかげで日本語検索がすごく強くて、エゴサするときに持ってこいなのです。他にも独自機能はいろいろとあるんですが、詳しくは知らないので村上さんに聞いてみましょう。
 Misskeyのフォークとして私はMeisskey(めいすきー)というものをよく利用しています。実際に私が運用するMK湘南ひらつかもめいすきーで動作しています。
 めいすきーにどんな機能があるかを紹介するのは困難ですし、開発者のめいめいもそこまでは触れていないです。LTLがないめいすきーもあるのだからとにかく使ってごらんなさいという感じではあります。
 以前めいすきーの機能が体験できるようにdemo.misskey.ioのめいすきー版を運用していたのですが、サーバーのスペックが足りないのでやめてしまいました、、デモインスタンスなので連合を切ってmongodbとドライブを1日ごとに初期化(特定のバックアップから復元)することで実現していたので、誰にでもできます。
 私としてはめいすきーが便利すぎるので定住してしまっています。それでも基本的にはMastodonとPleromaの民です。でもね、Misskey結構好きなんですよ。Misskeyをよく使う人たちはMastodon不要論を持ち出す人もいますし、もはやPleromaに至っては取り上げられないことが多いのですが、私としては共存すべきという立場ですね。私はPleromaで一番多く投稿していますし、これは動作が軽快だからという理由しかないので好みです。それにActivityPubしゃべるソフトウェアがたくさん増えてくれた方が楽しいじゃないですか!オタク心かな?
 とはいえソフトウェア間の仕様の違いで連合がうまく動作しないことがあったのでここは運用でカバーしましょう。私が運用するMastodon, Pleromaインスタンスは

 トゥートピン留め上限数:5
 名前文字数上限:50
 プロフィール文字数上限:2048

とすることで解決しました。Mastodonはソースコード書き換えないといけませんので少しだけ難易度あるかな。
あとはちょっとしたこだわりですが、Misskey独自の猫機能についてもMastodonの方で対応させていますので、Misskeyから見た場合でも猫になっていることが確認できるでしょう。 他にもカスタム絵文字を名前に設定した場合にMastodonでは半角スペースで区切らないと絵文字が表示されないので、Misskeyアカウントを見るとショートコードばかりの名前になってることがあります。そのためそこも対応させるようにソースコード書き換えで実現しました。

インフラ

 さて現在どんな感じで運用してるのかざっくりと解説していくよ。まずは図を見せるね。言葉で説明する方が難しいんだこれ。 mk.shc.kanagawa.jp構成図 まずCloudflareから2台のWebサーバーにリクエストを振り分けてるよ。普通にNginx公開するとCloudflareを迂回してアクセスできちゃうから、IPルールの設定とかで対応するといいと思う。私はこうした。そんでSoftEther VPNを使って自宅サーバーと常時コネクションを維持して、自宅のMisskeyまでプロキシしているよ。これについても記事を書いてるわ。
 なんで自宅サーバーそのまま公開しないのかというとセキュリティの問題もあったのだけど、何よりもグローバルIPがもらえない物件に住んでたから公開する手段がなかったんよ。最近出てきたCloudflare Accessとかで公開できればよかったけど、うまくいかないみたいだから、SoftEtherを利用してるよ。でもSSHアクセスとかはCloudfalre Accessで行うことでセキュリティを確保している。
 ちなみにSummaly Proxyはmei23/summalyで動かしてるよ。秘匿する意味はなくて単純にどうでもいいVPSに建ててるから書く必要もないので書いてないよ。投稿されたURLのプレビューを表示する際にそのURLをMisskeyが踏みにいくんだけど、そのときにこれを通すようにすることで、サーバーのIPアドレスがバレないようになるよ。
 それ以外のインスタンス同士の通信とかはさっきのVPNを通してVPSにやらせてるわ。自宅サーバーでやっちゃってもいいんだけど、なんとなくIPアドレスバレたくないかもと思ってる。

最後に

 ばばーっと書いてきましたが、今年のMisskeyで得た知見などは振り返ることができたのでひとまずよしとします。これからもたまーにMisskey使っていこうと思うのでよろしくお願いします。