Mastodonとともに歩んだ3年ちょっとを振り返ったりしたい

この記事はFediverse Advent Calendar 2020 20日目の記事です。19日目は、@svchost@pawoo.netさんの誰でもログインできた「ゲス垢」の話です。

Fediverse全体が対象と言うことですが、わたしの主な活動場所(アカウントの所在など)はMastodonですので、Mastodon中心の記述となることをご容赦ください。

1.Mastodonでの活動歴

Fediverseでのわたしの活動は、2017年4月11日(火)にmastodon.networkというサーバー(インスタンス)にアカウントを作成するところから始まりました(このインスタンスは今はありません)。その年の3月に10年ほど利用していたTwitterをやめており、脳カスを放出する場に飢えていた時期で、何かのWEB記事を読んですぐ飛びついたのでした。その後、同じ年の夏頃には最初のMastodonサーバーを立ち上げるに至るのですが、そのあたりのことはきらきらOLのつれづれ日記に簡単に書いていますのでここでは割愛します。

この当時のことは、すでに記憶がおぼろげになっているのですが、その日から同月15日までの間に、mastodon.nil.nu(12日)、mstdn.jp(13日)、mstdn.club(13日)、mastodon.social(14日)、pawoo.net(14日)、mstdn.jp(15日)、m6n.onsen.tech(15日)、toot.mst-dn.me(15日)と次々にアカウントを作成しているところを見ると(アカウント確認メールの痕跡から)、なかなかの興奮状態だったことはわかります。とにかく、毎日何かしらの事件などが起きて刺激的でした。

2.管理してるサーバー(インスタンス)

わたしが管理しているMastodonサーバーは以下の3つです。

mstdn.beer(ビア鯖)

「ビア鯖」などと呼ばれたりしています。ビールやお酒が好きな人が多いのと、ドメイン名にbeerが含まれているためにテーマ鯖と誤解されることもありますが、汎用サーバーという位置づけでやらせていただいています。現にお酒が飲めない人やお酒に興味がない人はもちろん、未成年のユーザーもいます。

Mastodonは、自由にカスタマイズできることも魅力のひとつだと思いますが、(わたしの技術面の限界もあり)バニラで運用しています。SNSについて個人的には、日常生活の中で「使いたいと思ったときに使えること」が最も大事だと思っています。そのため、ビア鯖を管理する上で最も気をつけている点は、極力サーバーを快適な状態で稼働させることです。技術的な未熟さから、立ち上げ直後に10日ほどサーバーを止めてしまったのですが、それ以後はなるべく走らせ続けることを第一に管理しています。

また、「管理する」という言葉を何度か使っていますが、鯖管として管理しているのはサーバー自体であって、タイムライン上ではいちユーザーに徹したいと日々考えています。人が集まれば集まるほど、そこにはコミュニティのようなもの(同じサーバーに登録している人がなんとなく共通して持つそのサーバーらしさのようなもの)が生まれ、参加しているユーザーの移り変わりに伴ってそれは変化していくものだと思いますが、鯖管といえども、そのコミュニティのようなもの自体は管理できないし、したくはないと考えています。つまり、日本の法律に抵触すること(またはその強い疑いが生じ得ること)さえなければ、登録ユーザーのすることは全て受け入れるという姿勢で臨んでいます。このことは、ときにユーザー同士の衝突や軋轢を生むことがありますが、そこはミュートやブロックなど、Mastodonが用意している仕組みを活用してもらい、上手に棲み分けをしていただくことになります。

mastodooooooon.xyz(健二鯖)

わたしのおひとり様サーバーとの誤解を受けることがあるのですが、当初より登録は解放しており、誰でも登録することができるMastodonサーバーです。

元来、このサーバーは、ビア鯖の実験用サーバーとして運用していました。というのも、ビア鯖は、さくらインターネットのスタートアップスクリプトで立ち上げましたが、OSがCentOSであってMastodon公式ドキュメントが扱うUbuntuと異なっていたことから、当初はかなりイレギュラーな対応をする必要があり、アップデートなどの適用について、ビア鯖に適用する前にまずはこの健二鯖で試してから問題ないことを確認することを目的としていました。現在は、ビア鯖も健二鯖もともにUbuntuに移行していますので、その使命を終えているのですが、まあええかということで残しています。

mastodon.kitchen(キチ鯖)

立ち上げ初日から「キチ鯖」という通称が根付いてしまい、アレな印象を持たれてしまうことがあると困るのですが、キチ鯖は自炊に関係するもろもろを対象とするテーマ鯖と位置づけています

ビア鯖ユーザーの中に、ちらほらと自炊画像を公開する方がいらっしゃったことと、わたしが父の介護のために週末に自炊をする機会があることと、さらにmastodon.kitchenというクールなドメインが取れてしまったことから立ち上げたサーバーです。

キチ鯖の雰囲気としては、常駐するサーバーは別にあるが、自炊をするときやしたときにふらっと立ち寄ってお料理を披露し、自炊のモチベーションを維持したりする、そんな使い方が多いようです。また、お料理から派生して、家庭菜園に関するトゥートも多く、荒れ地を開墾する炎の鯖管としては楽しい限りです。

3.ビア鯖を中心に技術的なことを少し…

ポエムばかりでも申し訳ないので、普段はあまり公開しない技術的なことを少しだけ記載したいと思います。ビア鯖のみとなりますが、登録ユーザー数やアクティブ率、サーバースペックなどをさらします。何かのご参考にしていただければ幸いです。

①ビア鯖の状況

画像1

本日(2020年12月19日)時点のダッシュボード上の全ユーザーは578であり、アクティブ率は45%程度です。アクティブ率は、体感的に、だいたい45%~50%程度で推移しています。フォロー1.31k、フォロワー1.17kのわたしのアカウントでほぼストレスなく使えていますので、他のユーザーさんも同様に使っていただけていると(勝手に)考えています。

②サーバースペックと負荷状況など

サーバースペックは、Linode東京リージョンで4CPUコア、RAM8GB(SWAP8GB)、160GBストレージ(SSD)で動かしています。

画像3

参考までに、topを実行した結果(Summary)は以下の通りです。

top - 17:31:47 up 6 days, 13:30,  1 user,  load average: 2.01, 2.62, 2.26
Tasks: 308 total,   1 running, 250 sleeping,   0 stopped,   0 zombie
%Cpu(s): 45.1 us,  3.9 sy,  0.0 ni, 45.7 id,  4.1 wa,  0.0 hi,  1.2 si,  0.0 st
KiB Mem :  8167552 total,   135180 free,  5522612 used,  2509760 buff/cache
KiB Swap:  8912884 total,  7437316 free,  1475568 used.   197300 avail Mem 

最近はあまり監視していませんが、load averageは、だいたい2~5程度で推移してると思います。

Mastodonに必要とされているソフトウェアの現時点でのバージョンは以下の通り。

画像3

RubyやPostgreSQL、Redisのバージョンアップが必要なことがあるとピチピチします。なお、PostgreSQLのチューニングはpg_tune先生のご指導にしたがって調整しています。

③Mastodon-web.serviceのパラメータなど

また、Mastodonの処理に影響すると思われるパラメーター周りについてもついでに公開します。まずはmastodon-web.serviceで設定する2つの項目について。

#vim /etc/sytemd/system/mastodon-web.service

Environment="WEB_CONCURRENCY=4"
Environment="MAX_THREADS=20"

WEB_CONCURRENCYはワーカープロセス数であり、メモリの負荷が先行して高まり、MAX_THREADSはプロセスごとのスレッド数であって、CPU負荷が先行して高まると理解しています(小規模インスタンス向け チューニングガイドを大いに参考にさせていただいています)。手探りでこの値に落ち着いていますが、これが最適かどうかはわかりません。なんとなく、WEB_CONCURRENCYはCPUコア数にあわせて4にし、スレッド数は1コアにつき5スレッド程度を割り当てることとして20にしている感じです。「ばっか、おまえそうじゃねえよ!」っていう方がいらっしゃったらしばいてください。

④mastodon-sidekiqのパラメータなど

次に、みんな大好きmastodon-sidekiqについてですが、ビア鯖では次のように分けてさばいています。

defaultキューについては、mastodon-sidekiq(ここにmailキューもあります)、mastodon-sidekiq-default、mastodon-sidekiq-default2という3つに分けており、そのほかに、mastodon-sidekiq-pullとmastodon-sidekiq-pushを独立させています。スレッド数は、defaultキューはそれぞれ20に、pushとpullは30ずつを割り当てています。

なお、これらMastodonの各サービスを立ちあげ続けているとある時点で詰まる事象が起きたために、cronで毎日4時にMastodonサービスを1つずつrestartさせています。また、週に1回同じく4時にサーバーをリブートさせています。cronの設定は以下の通りです。

0 4 * * 3 systemctl restart mastodon-sidekiq
0 4 * * 1,4 systemctl restart mastodon-sidekiq-default
0 4 * * 2,5  systemctl restart mastodon-sidekiq-default2
0 4 * * 6 systemctl restart mastodon-web && systemctl restart mastodon-sidekiq-pull && systemctl restart mastodon-sidekiq-push
0 4 * * 0 /sbin/reboot

4.おわりに

Mastodonとともに歩んだ3年ちょっとを振り返るといいつつ、ほとんどを現場の説明に費やしてしまいました。

分散とか中央集権とか難しいことはわかりませんし、Mastodonの開発にはまったく貢献できておらずもっぱらその恩恵を受けてばかりでなんだか申し訳なく思っています。ただ、これだけはいえますが、Mastodon大好きです。きっと死ぬまでMastodonで遊んでいるでしょう。フォローしていただいている皆さん、いつもお騒がせをして申し訳ありません。これからもどうぞよろしくお願いします。

最後に大切なことを教えてくれる画像とともにお別れしたいともいます。よいお年をお迎えください。

画像4


この記事が気に入ったらサポートをしてみませんか?