🆚

Misskey本番環境構築方法メリデメ持論

2024/11/26に公開

まず最初に言っておくと、「ちょっとなにもわからないし黒い画面触ったことないけど鯖建て興味あるからやってみようぜ」の中ではMisskeyは最悪の部類なのでマイクラ建てましょうマイクラ。

あなたがこれから必要とされる知識

なんらかのマシンを借りる/用意する
ドメインを用意する
オブジェクトストレージ(レンタルでOK)
ログを読む

(1)オンプレルート
Linuxをアップデートする
nodeをインストールする
Misskeyをインストールする
nginxをなんとかする
Let's Encryptと仲良くなる
systemdとjournaldについて知る、自分でserviceを作る
nodeのバージョンを上げる(aptで入ってこないバージョンのnodeがいるぞ!)
Postgres

(2)Dockerルート
Dockerについて学ぶ
nginxをなんとかする
Let's Encryptと仲良くなる
運用中にトラブルがあった場合、Dockerが悪いのか(1)のどこかが悪いのか調べて解決する
性能が足りなくなったとき引っ越しが難しいかも(経験者に聞いてヨロ)

(3)bashインストールルート
bashがきちんと最新版であることを確認する
トラブルがあったときに(1)をチェックする

(4)XServer VPS, SakuraVPSなどのテンプレート
アップデートしようとすると(1)にもどる

その他
スパム対策
SQL
必要に応じて性能が崩壊していくのを自分で食い止める

(1)オンプレで全部やる

一番生の手触りがあるので、慣れている人ほどこの方法がおすすめです。
自分で好き勝手にショートカットとかおけるし、壊したときもログがすぐ見れるし。
でも黒い画面は慣れ親しんだものって人じゃないとただただ苦しいだけかも。
それから、Postgresのオンプレ運用は早まったかもしれません。
権限周りで疎通がめちゃくちゃだるいです。
pg_hba.confとDB内のユーザーとで権限管理機構が二重になっており、どちらかが疎通してないとアプリケーションから接続できず、そのことに関してかなりつらい印象。
一応上から下まで全部面倒見れるのと、上から下まで面倒みれるからこそDBフルダンプで引っ越しだ!みたいな決意を固めたときにそんなにビビらずに挑戦できるのがいいところです。

亜種: DBはマネージドDBに任せる

VulturのManaged DBとかがそうなんですけど、あれはめっちゃ楽です。
でも高いです。

(2)Dockerでやる

ドキュメント読みつつ設定ファイルをちゃんとリネームして、同梱のDockerComposeでポンとやるとMisskeyが立上がるので、前段にNginxかなんか置けば本番環境が構築できるので非常に簡単です。
ただし、うまくいかなかった場合、それがMisskeyのせいなのかDockerのせいなのか?を切り分けるのが非常に難しく、他人に相談してもエスパーしてもらいにくいです。
また、同梱のDockerComposeでポンとやると、スケールしていく上でいくつかボトルネックになるポイントがあると思います。(これは体験談ではないので予測)

  • Misskey本体とDBが同じマシン上にあるのでホストマシンの性能にひっかかる
  • Misskey本体とDBを別のマシンに分離する場合の手順がどこにも案内されてない
  • 同梱のDockerComposeだと、DBコンテナのポートが外向きに空いてないのでDBeaverみたいなツールで覗きずらい
  • ところでDockerのIO制限ってどうなってたっけ
  • ホストOSだけでなくDockerコンテナの中にもファイルディスクリプタの制限とか多分あってぇ
  • あ、あとオブジェクトストレージは設定しないとストレージ(ディスク容量)が秒殺されます。必須設定。

(3) bashスクリプトでやる

有志がメンテしているインストールスクリプトです。
インストールはうまくいってもバージョンアップまでうまくいくのかなんともいえません。
一応バージョンアップもできるようにメンテされてるみたいなんですけど。

お一人様サーバーと一般公開サーバーについて

お一人様サーバーは、上述の「知らなければいけないこと」がたくさんの割に、「自分の砦がある」以外の旨味がないので(ローカルタイムラインは機能しないので、フォローしていくことになりますが、それでもチャンネルを見ることができません)、個人的には微妙じゃないかと思っています。
それでも多くの人が挑戦することに不思議な魅力を放っているようです。
一番最初に書いた通り、「鯖を立てる経験をしてみたい」というだけなら、必要な手順及びコンポーネント群が多すぎて、どこかがおかしいと全部ダメとかもあるので、おすすめしかねますが、それでもやりたいならどうぞ突き進んでください。
一般公開サーバーでは、これらに加えて「サービスを維持できなかった場合に一緒に参加してくれたユーザーを締め出す必要がある」ということを十分考慮しなければなりません。
また、日夜アップデートとスパムによる脅威にさらされているというどちらかといえばソリッドな問題もあれば、コミュニティの維持管理というもっとウェットな分野も面倒を見続ける必要があります。
そこまでしても、思ったほどには流行らなかったなんてオチもありえます。
そうかと思えば、自分のサーバーとは全く関係のない出来事で人が流入したりするのも不思議なところ。
汝は自ずから治める国の王たる資質はありや?

結論

ヒャッハーMisskey鯖運営は地獄だぜ〜
そう言ってかの猫はコンパネへ戻っていった

Discussion