gomaの雑記

アレもコレもほしがるなよ

Misskeyを自鯖運用し始めた2023

このエントリはMisskey Alt Advent Calendar 2023の18日目の記事です。

 

今年の8月からMisskeyの自鯖をKagoyaのVPSを借りて運用開始しました。

関係ないけれど〇〇2023って書き方すると名前が決まってない競走馬産駒っぽくないですか?グランアレグリアの2023みたいな。おれだけか。はい。

今回は自鯖春色インクを動かし始めるまでの紆余曲折でも書くことにしました。

 

Dolphinを試す

始めにVPSを借りてFediverseの各サーバーと連合するのがどんなもんか試したくて、まずConoHaVPSの一番安いプラン(2Core, RAM1GB)を借りてDolphinを動かすことにしました。

DolphinはMisskey開発者のしゅしゅいちゃんがMisskey v11のバックエンドのおまけ的な機能を削いで、v12のフロントエンドをベースに作った超軽量Misskeyのようなものです。

これのフォークをめいめいお嬢様がめいどるふぃんの名称でGithub(設計図共有サイト)で公開しています。それをインストールしました。

ローカルで試しに立ち上げたときの画面

 

インストールは導入手順を丁寧に書いてくださっているのでこれを読めば簡単です。

さて、Dolphinを使った感想ですが

❤いいところ
 ・とにかく軽い
 ・UIがお一人様あるいは少人数に最適化されている
 ・設定項目が少なく煩雑にならない
 ・Misskey同様にセットアップは容易
 ・標準のテーマカラーが良い

🤬イマイチなところ
 ・Escで投稿画面を閉じれない
 ・2FAがない
 ・絵文字のインポートが使いづらい
 ・リアクションピッカーが設定しづらい
 ・通知表示が小さい(Misskeyだと別タブになっているが、Dolphinは小さくポップアップ表示しかない)
 ・通知を出して投稿画面を開くと通知が閉じれなくなる
 ・MFMがパースされず、意味不明になる
 ・768px以上のウィンドウ幅にしないとリアクションしたユーザーがカーソルホバーで表示されない
 ・フォローユーザーの所属する連合先のサーバー名がわからん
 ・画像表示がモーダルではなく別タブ

 

とまあ、正直Misskey v13に慣れた体では使いづらく、すぐ410を出してfirefishに移行しよう!となりました。しかしながら、v13ライクにもし更新されることがあればお一人様としては最高の環境なので今後の更新次第ではまた立てることを考えたいくらいには良かった。


firefishのインストールができなかった

めいどるふぃん環境を落とした山川さんはfirefishでFediverseへ参戦することを策略しました。何故Misskeyではなくfirefishかというと、当時Misskeyはメモリリークでメモリがジャブジャブじゃないとダメという状態で(今も根本は治っていないが対策方法が出てなんとかなった 後述します)VPSに金かけたくなかったのでv12フォークでリソース少なめでも動くという話を聞き、firefish導入を選択しました。

 

joinfirefish.org

今見たらトップページが日本語版できててすごい。8月はまだ英語しかなかった。

 

git.joinfirefish.org

インストール操作は公式のGitLabドキュメントを読みながら必要な依存関係を手動でインストールしながら進めました。

作業は順調に進みRustで書き直されたバックエンドのコンパイルが何故かうまくいかないトラブルが発生したものの、なんとか乗り越えて立ち上がった先で待っていたのはメディアプロキシがおかしくなって画像がなんにも出ないという状態でした。

何日かCargoと仲良くできない状態が続いた後のメディアプロキシの不具合で完全にお手上げとなってしまい、上手く立ち上げられなかったfirefishのVPSインスタンスはないないしました。南無。

 

そしてMisskeyへ…

Misskeyのインストールスクリプトってどんなもんなんだろうと思って、ローカルのVM環境でMisskeyを試しにインストールしてみることにしました。

misskey-hub.net

 

何も考えずaptパッケージを更新して引いてきたスクリプトを実行し、ダイアログに従ってインストールを進めたらあっという間にサービスが立ち上がって拍子抜けしました。Misskeyってこんなにインストール簡単なのか……と。試しにVMのリソースを絞ってCPU3Core、RAM3GBでインストールを試して少し動作させたんですが、全く問題なく動いたので「これならfirefishを動かそうとしてたVPSのスペックで動くじゃん!」となり、VPS上へMisskeyの環境を構築しました。それが今の春色インクになります。


春色インクの運用

春色インクは上記の方法で構築したのでMisskeyバニラの状態で動いています。何もいじってない。ただ、管理する上で環境に下記の設定、保守を行っています。

メモリリークによるメモリの過剰消費対策

最初は毎日夜中に定期再起動することで対応していたんですが、メモリアロケータを導入することで解消するという方法が広まり、のえるさんが方法を共有されていたのを見て真似っこしました。

fedibird.com

sudo apt install libjemalloc2

sudo systemctl edit サービス名

 

[Service]

Environment="LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2"

sudo apt install libjemalloc2

sudo systemctl edit misskey.service

[Service]
Environment="LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2"

これを自鯖で試したところ、荒ぶっていたメモリ使用率が大人しくなり、穏やかになりました。

定期再起動(おまじない)

これは完全におまじないでしかないんですが、月曜の午前3時にMisskeyサービスを再起動するようにcronで設定しています。やらなくても不具合はないと思いますが、やっぱり再起動はすべてを解決するので……。

DBのバックアップ

su - postgres -c pg_dumpall | gzip -c > yyyymmddmisskey.gz

をyyyymmddの部分を今日の日付にして気まぐれでDBのダンプを生成しています。このコマンドはMisskeyサービス(Linuxだとデーモンか)の実行中でも走らせることができるんでメンテ時間を設けずにDBバックアップを取得することができます。

 

運用の懸念点と今後

VPSなのをいいことに、現在スナップショットすら取っておらず冗長性が全くありません!

これについては暇なときにそのうちなんとかします。

あとはセキュリティ関連の設定をもう少し詰めたほうがいいかなと思いつつ、それもそのうちなんとかする予定。

 

最後に

ここまで内容が無いような文章をお読みいただきありがとうございました。

LinuxCLI環境は5年位前、会社で室温管理のシステムをベリピッピ3BとNode.js+Expressで作ったときに触ったっきりだったので浦島太郎状態でした。ですが、スクリプトファイルのおかげでなんも分からん状態でもサーバーの運用までたどり着くことができました。

Misskeyのサーバー立ち上げはとても容易ですが、そこから運用しててトラブルが発生したときの対処のほうが状況に応じた対応が求められるため高度な作業を求められます。そのとき山川は耐えられるのでしょうか……。

 

なお、春色インクはFediverseないしはTwitter(現X)でFF(Final Fantasyシリーズは今年で36周年)の方には無条件で招待コードを発行しています。サーバーに興味がある、メインサーバーとして活動の拠点にしたいという方の参加をお待ちしております!