Misskeyサーバー運用(運用開始〜これまで)の全体的な振り返り
この記事は、みすてむず いず みすきーしすてむずアドベントカレンダー1枚目の12/25の記事です。 みすてむずというMisskeyサーバーにいる人々だけでアドベントカレンダー4枚以上(!)が埋まる大活況、多種多様な記事が公開されており読みごたえ抜群です。
前日の記事⇒しくじりMisskeyサーバー構築記 by南戸叶礼氏
はじめに
ぷろろーぐと申します。MisskeyというSNSを今年初めくらいから始めて、(アカウント自体はMisskey.ioにかなり昔に取ってあった)みすてむずというサーバーなどに定住したあげく自分でりずみすきーというサーバーを建てて、9カ月程度(記事執筆時点)運営している者です。
りずみすきーは、リズムゲームを嗜む方々向けのオンライン人数50-100人規模(記事執筆時点)のサーバーです。
これ書くのは前回に続いて2回目ですね。
この記事では、りずみずきーを建ててからの全体の振り返りを行いたいと思います。
ありとあらゆることをノンジャンルで雑多に振り返っていこうと思います。
何としてもやっておかねばならんと思ったので、頑張って書いています。
実は今もう記事公開予定日の12/25なんですがどこまで書けるかな・・・。
2~3月 検討~サーバー運用開始初期
2023年2月 サーバーを作ろうと思ったきっかけ
2023年2月。私はMisskey.ioのただの1ユーザーでした。
ログボを行ったり、にゃんぷっぷーやぴょんぷっぷーを愛でたり、起床就寝報告をしたりしながら、ioの爆速LTLでリアクションシューティングを嗜む日々を過ごしていました。
LinuxやAWSは業務で扱ったことはありますが、サーバー運用の経験はない、何てことないその辺の1ユーザーです。
それがなぜサーバーを、それも新規登録解放のサーバーを建てようと思ったか?
新規登録解放のサーバーを建てるのは非常に酔狂なことなのです。色々大変だからです。
振り返ってみると、以下のような事情があったかと思います。
1. ioが当時超不安定だった
Misskey.ioに住み始めて1カ月、定住しつつありましたが、当時(2023年2月)のioには以下の問題がありました。
- 急にTwitter(現X)から移民が殺到し、LTLで会話できるような以前の牧歌的な環境がなくなりつつあった
- 私が来た数日後くらいに急に人が増えて、このSNSでLTLでまったり会話する余生を送るか~と思っていたら、まったり会話は爆速LTLを流れる与謝野晶子やジョイマンなどに席巻されてしまった
- LTL廃止するかも?やLTL有料化などの案も村上さんが検討していた
- 人が増えたことで、ioのサーバーが不安定になっていた。
- 重いことが多かった。
- 3月2日ごろ、ioが24時間以上落ちる時があった。
- 当時ioが資金面の問題で苦しそうだった。
- 当時のioは個人運営、管理者の村上さんは殺到する人を捌くためにサーバーのスペックをとにかく上げ、足りないサーバー費を賄うためにLTLで寄付を募りまくるという状況で、一歩間違えたり寄付が集まらなかったりしたらどうなるか分からないような状態でした。(一応村上さんはなにがあっても続けるとおっしゃっていましたが・・・)
- ioが一手に担うのは難しいので、分散しようという雰囲気がioにあった。(と私は思っています)
Misskeyは分散型SNSですので、ioが落ちてしまったりトラブルがあった時も別のサーバーがあればそこで投稿を続けることができます。
当時は、今よりもioが安定して稼働できる見通しが立っていませんでした。
一方で、自分で立てたサーバーは自分が責任をもってずっと稼働することができます。
であれば、サーバーを建ててみても良さそうだなという思いが湧きました。
2. ドキュメントを読んだところ思ったより簡単にサーバーが建てられそうだった
ひとまず、下調べを始めました。まず、どうやったら建てられるかです。
検索してみたところ、Misskey HubというところにMisskeyの開発者向けの情報がまとまっていることを見つけました。
そしてこのページにMisskeyサーバーの作成方法があり、読んでみると
Redis?ふーん、わからんけど何とかなるやろ!
docker?PostgreSQL?仕事で触ったことあるな!
これAWSで適当にEC2建てたら建てられるんじゃね?
のような感想を抱いたので、これ私でもサーバー建てられるんじゃね?という思いが湧きました。
3. ドメイン名を思いついた
ここまでの話であれば、別におひとり様サーバー(自由に登録を許可しない自分だけのサーバー)を建てればよかった話です。
なんでわざわざ新規登録解放サーバーを建てるという修羅の道を歩もうと思ったのか。
村上さんが超大変そうなのを当時は現在進行形の形で見ているので、正気であれば同じ苦しみを味わおうとは思わないはずです。
なぜかと言えば、簡単に言うと、音ゲー×Misskeyのキャッチーなドメイン名を思いついたからでした。
サーバーを建てると決めたら、どういうサーバーにしようか考えます。
おひとり様か?内輪の人を迎えるサーバーか?はたまた公開サーバーか?
また、公開するなら、汎用サーバーにするか?ジャンルありサーバーにするか?という観点もあります。
いずれにせよ重要な要素になってくるものとして、サーバー名/ドメイン名があるかと思います。
なぜなら、どうせなら良い感じのサーバー名/ドメイン名のサーバーを建てたいからです。
そういうわけでドメイン購入サイト(今は亡きGoogle Domain)でどんなドメインがとれそうかを見つつ、こういうサーバーを建てるならどういうドメイン名にしようかな、と、ありとあらゆるドメイン名を考える作業をしていました。
あるとき、かなり良さそうなドメインを思いついてしまいました。
rhythmisskey.gamesです。rhythm game misskeyが過不足なく入っていて、発音もしやすく良さそうな気がしました。
このドメイン名は、音ゲーマー向けのMisskeyサーバーとしてとても良さそうです。
思いついてしまったなら、建てるしかないなと思いました。
2023年2-3月 サーバー設立
予行練習
いいドメインを思いつきこそしましたが、技術的に、私に本当にMisskeyサーバーが建てられるのかはわかりませんでした。
ということで試しました。
とりあえず簡単そうなdocker-composeの方法で建ててみました。
よくわからないのでt2.microを使ったらビルドに失敗しましたが、インスタンスサイズを上げたところ無事にサーバーを起動させることができました。
適当に建てたら失敗していてかわいいですね。
建てられたのでヨシ!ということで、本格的にサーバーを建てる準備を始めます。
覚悟をした
突然技術的な話ではなくなってしまいましたが、これは重要なことです。
繰り返しになってしまいますが、新規登録解放のサーバーを建てるのは非常に酔狂なことなのです。
SNSの利用者の大きな流れは、管理者側からはコントロールできないものです。
2023年2月時点のioだったり、はたまた黎明期のmstdn.jpだったりのように、SNSの管理には大きな負担がかかるリスクがあります。
今パッと思いつくものとして、以下のようなリスクがあります。
- アクセス数増加により借りているサーバーのスペックアップをせざるを得なくなり、サーバー代が払えなくなる
- 治安悪化によるモデレーションコストの増加
- スパムなど悪意を持った人の登録、またほかサーバーへ迷惑をかけることによってサーバー管理者の過失が問われる
- 作成したインスタンス内で犯罪行為が行われる
- 炎上などトラブルに巻き込まれる
- 逆に、そもそも人が来ない過疎サーバーになる
私は責任をもってサーバーを運営できるか?
これらのことが起きたとき、どうにかする覚悟があるか?
考える必要がありました。
最終的に、どんなことがあっても1年はサーバーを運営するぞ、という覚悟をし、設立を決めました。
ドメイン取得
ドメインを取りました。もうサ終してしまったGoogle Domainです。
特筆することなしです。
信頼できると思ったドメイン業者が良いかと思います。
また、みすてむずアドカレには海外ドメイン業者をお勧めする数寄屋さんの記事がありますので、読んで選択肢を増やしましょう。
いざ、サーバー設立本番
Ubuntu版Misskeyインストール方法詳説のとおりに進めました。
シェルスクリプトは使っていません。とりあえず全部自分でやって理解しておきたかったため。
特に大きなトラブルはなく無事サーバーを建てることができました。
サーバーを建てるときに考える色々
サーバーを建てるにあたってもう一つ大変なのはこの辺かと思います。
サーバーのテーマや、ロゴやヘッダ画像などを考える必要があります。
サーバーのデフォルトテーマは、紫を基調としたものを作ってみました。
ゲームセンターの暗いところで光っている筐体をイメージしつつも、暗くなりすぎないようにしました。
ロゴは自分で考えるのが難しかったため、簡単にUnicode絵文字の🎵としました。
ヘッダ画像はなんとまだ作ってません。。。
また、簡単にサーバールールを考えました。利用規約などです。これも大変でした。
サーバーを公開
とりあえずioに宣伝をし、一旦待つことにしました。
音ゲーマーで興味のある方々がちらほら登録してくれました。
なお、Twitterにはあまり積極的に宣伝はしませんでした。しても良かったかもしれない。
議論:サーバー管理者と日常ノートの人格を分けるか?
一つここで考慮すべきこととして、サーバー管理者と日常ノートの人格(アカウント)を分けるか?というものがあります。
というのも、管理者アカウントやお知らせをするアカウントと、日常ノートのアカウントを分けないと、不都合がある場合があるからです。
- 大事なお知らせが日常ノートに埋もれる
- 管理者としての発言と個人的な発言が切り分けにくくなる
などです。
りずみすきーでは、あまり分けられていません。ぷろろーぐのアカウントで管理者として話してしまったりなど。
ただ、運用してみて、特に2番目が不便だなと思いました。あまり気軽にノートする気分になれないときがあるので。
ioの村上さんのように、管理者としてキャラクターを確立して愛されるなどの戦略もあるかと思いますが、特にそういう考えがないなら分けてしまうのが無難なような気がしています。
2023年3-6月 まったり期間
3か月間くらいは、オンラインは多くて30人くらいの、静かなサーバーでした。
ただ、ありがたいことに頻繁に書き込んでくれる方が何名かおり、リアクションも飛び交い、ちゃんとSNSとしては機能していました。
運営にも余裕があったので、色々なことを試してみました。
メールアドレスを登録できるように
早めにやっておいた方が良い事ですが、メールアドレスを登録必須にしました。
AWSでやると、SESを設定して、SPFやDKIMなどを設定する形になります。
なお、動作確認時に、「保存」を押さないでやっていたら全然動作しなくて詰まりました。
しょうもなさすぎる。Issueまで建てていますがしょうもないですね。
メールアドレス登録必須にしておいた方が、治安が良くなります。
メールアドレスを設定していない初期に、全然音ゲーをやっていない学生のユーザーさんが登録してしまったりして、対処に困った時がありました。
絵文字について
Misskeyサーバーを建ててすぐは、絵文字が少ないです。
特にioから移ってくる人が多かったので、りずみすきー絵文字少ない!という声がありました。
一旦、Meowmojiやblobsなどをたくさん入れてみましたが、カスタム絵文字の花形として、:igyo:などの文字リアクションがあります。
これについては、音ゲーに関連する言葉などを自分でちくちく作ったり、
絵文字申請チャンネルを作成して絵文字を募ったりと、ちまちま増やしていきました。
また、絵文字はサーバーごとに異なる文化だ!という思いがあったので、
あまりioで当時流行していたもの(つまり、与謝野晶子やレターパック)は取り込まない方針で行きました。
リレーサーバーについて
リレーサーバーに参加するとグローバルが賑やかになりますが、サーバーのスペックが低いなどパフォーマンスに懸念がある場合は避けておいた方が良いかと思います。
りずみすきーは1回fedibirdのリレーサーバーに参加しましたが、やめています。
段位ロールを作ってみた
コンディショナルロールで遊べるようになったので、音ゲーの段位認定になぞらえて段位ロールを作ってみました。
結構複雑な条件(日数+投稿数)とかもできます。ですが複雑な条件だとif文がごっちゃになり、実装をミスったりします。
寄付フォームを作った
OFUSEを使っています。どうやらりずみすきーは設立から2カ月は寄付フォームも作ってなかったようですが、早めに作ったほうが良いかと思います。
寄付してくださった方にはバッジを進呈する運用としました。ioでやられているものですね。
また、プランはシルバーとゴールド2つ作りました。
音ゲーマーはお金がない傾向にあるので(ゲーセンで全て使い果たしてしまうため)もう少し安いものも作っても良いかもしれないです。
DBをマネージドにしたくなったので移行した
ここは話が長くなるのでアドカレの別の記事で書きました。
メモリ不足でサーバーをダウンさせた
なにかのタイミングでメモリが溢れて落ちることがあり、丁度寝た瞬間に落ちたので数時間鯖落ちした状態になった時がありました。
一旦定期的に再起動+サーバースペック上昇で対応しましたが、再起動にめっちゃ時間がかかり、1日に5分×2落ちるようになってしまいました。
最終的に7月くらいに再起動はやめました。
また、メモリ使用率については、度重なるMisskeyのアップデートでかなり改善されています。
現状であればそれほど気にしなくてよい問題なのかなと思います。
meilisearch入れた
それまではDBの機能を使って検索していたので、投稿数が増えてくると全然動きませんでした。meilisearchを入れることで検索は爆速になりました。
下記にしたがってセッティングしました。
既にあるノートの取り込みは、有志の方(なっかあ氏)が作成してくださったスクリプトで行いました。
2023年7月 人口爆発
2023年7月1-2日、インターネットではちょっとした事件が起きました。
Twitterが急に投稿に厳しい制限を設けて、まともに使えるSNSではなくなったのです。
一時的にでしたが、本当にSNSとして使えたもんじゃなくなってしまったので、Twitterから他のSNSに移行する人々が出てきました。
りずみすきーも急に人口が爆発しました。一時的にオンライン人数は200人くらいになったかと思います。
人口が爆発した時に起きたこと
- LTLがとても活発になる
信じられないくらいLTLが速くなりました。1日でかなり活発なSNSになりました。
- たくさんの新規ユーザーが遊び始めてLTLの治安が悪化する
みなさんはMisskeyを始めて最初何をしますか?私はカスタム絵文字で遊びました。
Misskeyを始めたての頃は、みんなカスタム絵文字で遊びたがります。そういうものです。
急に新規ユーザーが8割を占めるようになった環境で、みんなカスタム絵文字等で遊び始めると、LTLの治安が悪くなります。また、みんなあまり勝手がわかっていないので、公開範囲の設定とかも分かっておらず、LTLに荒らしっぽい投稿が流れたりして、かなり不安定な雰囲気になります。
- 元々の常連が急な環境変化に苦しむ
急な環境変化は誰だってつらいものです。以前のゆっくりしたLTLを快適に楽しんでいた常連の方々が、懸念を示すようになりました。
やはり元々のLTLに近い雰囲気が良いということで、チャンネルを建てて避難所的にそこに集まるようになりました。
もともとよく投稿していた人たちがチャンネルに集中したので、この後LTLより特定のチャンネル投稿のほうが多いような状態が1カ月以上続き、それはそれでアンバランスさが感じられました。ただ、利用者の行動は規約に触れない限り制限しない方針のもと、静観しました。
- サーバーのスペックを上げることで増えた人数に対応
もともと人数に対しては余裕のリソースで運営していましたが、さすがに10倍近くまで増えたらサーバーの負荷が増大しました。
もともとt3.large(Mem8GB)だったのですがMem16GBに増やすことになりました。
DB側はマネージドにしていたのが効いたのか、スペック変更は不要でしたが、バーストクレジットが溢れそうになりました。この辺はマネージドDBに変えた話で少し書いています。
りずみすきーは初期は月100ドルくらいで、マネージドDBにしたところ月200ドルくらいの運営コストになっていたんですが、ここで運営コストは月400ドルにまで跳ね上がりました。
100ドル・・・200ドル・・・400ドル・・・
100-200-400・・・・ってコト!?!?!?(ここでFascination MAXXが流れ始める)
- 何もかもが不安定になったので一瞬招待制にすることに
サーバーも不安定になりますが、LTLの環境が不安定になったのが大きく、また、現状の規約等はあまり縛りが強くなく大してLTLの治安維持に効力をなさないということが分かったので、一旦落ち着く時間を取りたく、一瞬だけ招待制にしました。
確か1日だけ招待制にして、その間にサーバースペックの確認と規約の改訂を行ったかと思います。
ふわっとしていた利用規約を改訂して、LTLの迷惑行為の禁止については明文化しました。
また、ゾーニング等の話をよく理解したうえで使ってもらうようにするとよいのではないかという考えの元、公開範囲の設定やチャンネル機能についてはよく理解した上でサーバーを使うように、というお願いを利用規約に書いてみました。
利用者の方に楽しくSNSを利用していただくため、以下のガイドラインを守ってください。
1. 投稿の公開範囲について、理解したうえで投稿を行ってください。
必ずこちらをお読みいただき、適切な公開範囲を自分で判断できるようにしてください。
2. ローカルTLでは投稿が様々な人の目に留まるため、🌐パブリックで投稿する際は公共の場であることを意識して、他の利用者に配慮して投稿を行ってください。
3. 他の利用者に配慮しない投稿をしたいときは、公開範囲を🌐パブリックから🏠ホームに変更して行ってください。
4. Misskeyのチャンネル機能について、理解したうえで投稿を行ってください。
必ずこちらをお読みいただき、チャンネル機能の概要を知っておいてください。
5. NSFWコンテンツを投稿するときは、閲覧注意フラグあるいはCWの設定を行うとともに、該当コンテンツを見たくない他の利用者が誤って見ないよう、コンテンツの概要がわかるような適切な注釈をつけるようにしてください。さらに快適に利用していただくために、以下の行為を推奨します。
1. チャンネル機能を利用して、自分に合ったコミュニティを見つける
2. 投稿の公開範囲を適切に使い分ける
3. CW(内容を隠す)を適切に使用する
4. ワードミュートやユーザーミュート機能を用いて見たくない話題/ユーザーを避ける
2023年7-12月 それなりに人がいるサーバー期
7月に急に爆発した人数はやがて落ち着きましたが、オンライン人数としては50-100人規模となり、そこそこ動きのある小規模サーバーという感じになってきました。人が少し増えて、コミュニティが大きくなって、共通の趣味の人がいるサーバー内でそれなりの人数のユーザーが思い思いに会話するようになってきましたが、それはそれで色々な問題にぶち当たりました。
- 絵文字の申請が多すぎる問題
絵文字の申請が非常に活発に行われるようになりました。
多いときは週に100-200個など申請が来ましたが、絵文字の承認基準についてあまり明文化できておらず、管理人が一人で捌いていました。
絵文字の登録作業は、
- 絵文字ダウンロード
- 絵文字をサーバーに入れても良さそうか確認する
- 絵文字登録名(ファイル名)を修正したりする
- 絵文字をサーバーに追加する
- タグを追加する、例えば偉業の絵文字だったら"igyo,いぎょう,偉業"などの日本語、漢字、ローマ字の読み仮名を登録する
5.は各絵文字について一つ一つ手でやっていたのですが、週に100-200も登録作業をするとなるとこの手作業が週に100-200も発生することになり、しかも時間がなくて登録できないでいると400,600と溜まっていってしまい、手に負えないことになってしまいます。
解決法としては、下記のような絵文字申請テンプレートを作成し、
====ここからテンプレ====
emojiname:
テキスト: テキスト
読み仮名: てきすと
その他つけたいタグ: タグ1,タグ2
カテゴリ名: Japanese_words
使用フォント: フォント名(ある場合)
フォントライセンス: フォントのライセンス(ある場合)
自作の絵文字か: はい/いいえ
絵文字ライセンス: 絵文字に指定したいライセンス(パブリックドメイン、CC BY 4.0など)二次利用の場合は制作者が宣言しているライセンス
ローカルのみ: いいえ(他のサーバーにインポートできないようにしたい場合"はい"とする)
センシティブ: いいえ(センシティブ指定したい場合"はい"とする)
====ここまでテンプレ====
スクリプトを組んでバルクインポートするzipファイルを作成することで、どうにかしました。
- 絵文字・アイコンデコレーションの権利問題、フォントの権利問題
カスタム絵文字そのものについても様々な問題が出ました
他人が作成した絵文字をそのまま申請するという事案がありました。
あまりそのような事例がなかったので考慮が漏れていた部分があり、テンプレートに自作かどうかと、自作でない場合は絵文字ライセンスを追加しました。
また、フォントライセンスに則っていないフォントを使って絵文字を作成しているのではないか?という疑義が出たこともありました。
大変ですが、申請者の方にはフォントライセンスについても確認してもらう運用にしました。
- Discordサーバー
りずみすきーのDiscordサーバーが欲しいという話が出て、私は良く分からないので建ててもらったのですが、運営があまり良くなく、LTLでNitro課金をお願いしまくったりなんか個人的な用途に使い始めたり等起きたので、アンケートを取ったうえ、結局建て直すことになりました。そして私が権限をめちゃくちゃ厳しめにしたら見事に過疎りました・・・。
- 定期的にサーバーの雰囲気が合わなかったり、サーバーに不満があってつらくなる人が出る
自分が提供している場が合わなかったということで、サーバー管理者としては無力だなと思います。なるべく個々人の話は聞きますが、方針としては、「合わないコミュニティに無理して居続ける必要はない、ここ以外にあなたに合うコミュニティはどこかにきっとあるのでここにいて辛くなったらサクッと出て行って」と言うことにしています。
- 利用者間でトラブルが発生する
当然ながらSNSなのでトラブルが発生します。諍いなどです。小さなコミュニティだと、特定の人物の不和が結構サーバー全体の雰囲気に影響したりして、一時的に荒れる場合があります。ただ、個人間の問題なので、管理者としては介入できません。一旦は、利用規約に違反していないかを基準として声をかけたりする程度で、基本は自然鎮火を待つ形になります。
- meilisearchのバージョンアップが微妙にうまくいかなかった
meilisearchのバージョンアップを以下に従ってやったところ、微妙にうまくいかず、やり直すことになったので数時間分くらいの投稿がインデックスに登録されないみたいなことがありました。
プロダクションとして動作させていると、上記のコマンドだとダメな部分があったのですが、時間がなかったのでよく理解せずにコマンド入力していたのが良くなかったのかなと思います。なんやかんやして解決しましたが、あまり覚えていないので簡易的な記述に留めます。
2023年12月- 今後の課題
-
絵文字のメンテ問題
- 大量に絵文字があるんですがライセンスがほぼnullという問題があります。
- CCなどのライセンスを主張している人もいるため、ライセンス欄を有効活用したいんですが、手作業での変更以外にやりようがなさそうで手が出ていません。
-
人口がさらに増えたときどうする?
- コスト的な問題で、持続的に続けられるか?という問題が、永久に付きまといます。上手く寄付をしてもらうくらいしかなさそうですかね・・・。そもそも、サーバー管理は趣味であり、収益化を考えていないのですが、人が増えた場合いつか寄付を募らなければいけない時期が来てしまうのかなと思っています。
-
管理人が多忙になったときにどうする?
- 12月、とても忙しくて管理に手が回らない部分が多々あった。安定していれば手をかけなくても済むが、Xで騒動があって人がガンガン増えたときと多忙な時期が重なったらどうするか?という問題があります。
おわりに
ここまでお読みいただきありがとうございます。
ほぼアドカレの締め切り当日に全て書いているので急ぎ足になりましたが、サーバーを建てることを決めてから今まで、9か月間のサーバー管理側の軌跡は振り返れたかなと思います。
読み物として楽しんでいただけたり、何か知見になるものが一つでもあったら嬉しいなと思います。
Discussion