約1年半Mastodonサーバーを運用してみた話

はじめに

この記事は,TUT Advent Calendar 2020 - AdventarFediverse (4) Advent Calendar 2020 - Adventarの13日目の記事です.
adventar.org
adventar.org
TUT Advent Calendar 2020の12日目の記事は,T_TEST__さんの脳活動の測り方いろいろでした.
fMRIEEGは名前は聞いたことがあるくらいで他の手法は知りませんでした.時間/空間解像度や倫理,コストなど,様々な壁と戦いながら研究していることが分かって,読んでいてとても面白かったです.
Fediverse Advent Calendar 2020は(1)〜(3)もあります.
Fediverse Advent Calendar 2020 - Adventar
Fediverse (2) Advent Calendar 2020 - Adventar
Fediverse (3) Advent Calendar 2020 - Adventar

TUTとは?(Fediverseの方向け)

豊橋技術科学大学(Toyohashi University of Technology)の略称です.愛知県にある国立大学です.高専卒業後に3年次編入する学生が大半です.私も高専から編入しました.今は学部4年です.

Fediverse・Mastodonとは?(TUTの方向け)

Fediverseは,分散型SNSのサーバーが構成している連合のネットワークのことです.TwitterFacebookは特定の企業が運用する中央集権型のSNSですが,MisskeyPleroma,そして私が運用しているMastodonW3Cが策定した規格であるActivityPubを使って連合を構成する分散型SNSです.ActivityPubはあくまでもプロトコルなので,分散型SNSの実装には様々なものがあります.オープンソースのものも多く,自分で運用することもできます.

Mastodonは,Twitterライクな仕様・UIの分散型SNSです.Twitterと機能を比較するとこんな感じです.

Mastodon Twitter
投稿 トゥート ツイート
Like お気に入り いいね
再投稿 ブースト リツイート
User Streams あり なし
最大文字数 500文字(サーバーごとにカスタム可) 280文字(CJKは140)
公開範囲 投稿ごとに決められる(公開 or 未収載 or フォロワーのみ) アカウント単位(公開 or 鍵)
カスタム絵文字 あり 無し
DM あり あり
投票 あり あり
CW*1,NSFW*2 あり なし
ミュート,ブロック,キーワードフィルター あり あり
クライアント Web,サードパーティ(Webクライアントが高機能なのでアプリ無しでも使える) 公式(モバイル,Web,TweetDeck),サードパーティー
広告 無し あり
投稿の表示順 時系列 他人のいいねが表示されたり時系列にならなかったり…
炎上 起きづらい 言わずもがな
凍結 サーバーの管理者次第 言わずもがな
機能追加 OSSなので自由自在 Twitter社次第

Mastodonの設計思想は,Twitterのバズり,炎上が起きづらいものになっています.ですので,「自分の趣味についてのんびり語りたいなー」とか,「とりとめのない諸々を気軽に書きたいなー」というような人にはおすすめできます.他にも「Twitterで流れてくる投稿を見るのに疲れちゃった」という方にもおすすめできると思います.

私が運用しているMastodonサーバーについて

私が運用しているMastodonサーバー,「あすてろいどん」は2019/5/11試験運用開始,2019/5/25本運用開始のサーバーで,運用開始から1年半ほどが経過しました.Mastodonサーバーにはテーマが設定されているサーバーもありますが,あすてろいどんはいわゆる「汎用サーバー」と呼ばれる,テーマを特に定めていないサーバーです.

小惑星のように、十人十色、いろいろなユーザー、トゥートが流れるマストドンサーバーです。
名前の由来は、私が運用している仮想サーバーの命名規則からです。
このマストドンサーバーは、管理者が趣味で運用しているものです。温かい目で見守っていただけると嬉しいです。
テーマは特に設定していません。禁止事項以外の話題であれば、なんでもOKです。自分の好きなもの、誰かの好きなものについて、みんなで楽しみましょう!

サーバー紹介より

投稿内容は様々で,IT系のニュース,日常の一コマ,美味しいご飯(飯テロ),プログラミング,VTuberシャニマスetc...と多種多様な話題が投稿されています.
私は,1日に500件ほどRSSで流れてくる記事を眺めるのですが,面白そうなニュースやネタがあればMastodonに流しています.
どんな投稿が流れているのか,気になった方は以下のリンクから覗いてみてください.(アカウント・ログインは不要です)
mstdn.sublimer.me

あすてろいどんを支える技術

技術的なことも紹介します.
あすてろいどんは私の家のサーバー(いわゆる自宅サーバー)で動いています.
サーバーは以前記事で書いたものです.
sublimer.hatenablog.com
他にUPS(BW55T)と業務用ルーター(IX2105)を使ってます.
ソフトウェアはVM上で動いており,Mastodon関連は以下の6台です.

ホスト名 OS CPU(Core) RAM(MB) Storage(GB) Role 名前の由来
kizuna Ubuntu 18.04 1 512 16 Reverse Proxy(Nginx) 超高速インターネット衛星から
clementine Ubuntu 18.04 2 3072 16 Application(Mastodon,Redis) 月探査機から
landsat Ubuntu 18.04 1 512 32 DB(PostgreSQL) 地球観測衛星から
dawn Ubuntu 18.04 1 512 16 Media Storage(Minio) 小惑星探査機から
galileo Ubuntu 18.04 1 4096 16 Full text search(Elasticsearch) 木星探査機から
kounotori Ubutnu 18.04 1 512 512 Storage(NFS) 宇宙ステーション補給機から

システム構成図はこんな感じです.

特に複雑な構成ではありません.ここに書いた以外にも,サーバー監視用のサーバーがクラウド上(Oracle Cloud Infrastructure)にあります.
また,メールサーバーとしてさくらのメールボックスを使っています.
データ(各種設定ファイルとDBのダンプ)は毎日バックアップを取ってクラウド上にアップロードしています.
幸い,運用開始からデータの喪失等は発生していません.

あすてろいどん運用史

これまでの総投稿数は28,506件,DBのデータサイズは9.23GB(2020/12/12 17:51時点)となりました.
運用開始時のMastodonのバージョンはv2.8.2でしたが,今ではv3.2.1です.
この1年半,Fediverseでは様々なニュースがありましたが,あすてろいどんはとにかく平和だったと思います.
運用に関しては,今年の3月に自宅サーバーを色々いじるために,NTTPCコミュニケーションズのWebARENA IndigoMastodonを動かしていました.
WebARENA Indigoは他のVPSサービスと比べてかなり安いのでおすすめです.
自宅サーバー→WebARENA Indigoの移行は比較的スムーズにできたのですが,自宅サーバーをいじり終えた後に再度Mastodonを動かしたところ,非常に負荷が高くなりSidekiqのjobを捌ききれなくなってしまいました.Sidekiqのスレッド数を400に設定してなんとか捌き切った記憶があります.
原因は結局よくわからなかったのですが,Disk IOの負荷がとても高くなっていたのでSSDを買って解決しました.(ハードウェアで殴るのは正義)
運用面では,今の所大きな障害は起きていません.
Azureが死んだときもAWSが死んだときもGCPが死んだときもTwitterが死んだときも東証が死んだときもあすてろいどんは動き続けました.
あすてろいどんのサーバーステータスはここから確認できます.
status.mstdn.sublimer.me

あすてろいどんの今後について

Mastodonサーバーとしては何か突拍子もないことをしたいという思いはありません.これまでと変わらずゆるーい感じで続けていく予定です.ただ,多くの人に使ってもらえたらとても嬉しいなーと思ってます.
技術面に関しては,さらに可用性を高める仕組みを入れれたらいいなーと思っています.これまではレイヤーが一つ増えることによる不安からDockerを使っていませんでしたが,技術的挑戦としてDockerを使ってみたいと思ってます.その後はKubernetesによるオーケストレーション,自宅-クラウド環境のハイブリッドクラウド構成,アクセスログ解析,Ansible等によるIaCにも挑戦してみたいと思っています.
あと,ストレージの冗長性が殆どないので,NASを買ってRAIDで冗長性を高めたいと思っています.

あすてろいどんにアカウントを作ってみたい!!という方は

こちらの招待リンクからアカウントを作れます.
mstdn.sublimer.me
いまならなんと無料!!(これまでもこれからも無料です)
来る者拒まず去る者追わずなのでお気軽にどうぞ.
Botを作ったりもOKです.

おわりに

約1年半,Mastodonサーバーを運用してみて,SNSを運用する面白さを体験することができました.
これまではWebアプリケーションを作って公開して終わりということが多かったのですが,Mastodonを自分で運用してみることで,OS,ネットワーク,DB,セキュリティなどについて幅広く学ぶことができたと思っています.
もちろんまだまだ学ぶことは多いですが,データの喪失やセキュリティインシデント無く運用できたので非常に有意義でした.

明日,14日目の記事は,TUT Advent Calendar 2020がk3_kaimuさんの「研究室に依存しないために友達は多いほうがいい」,Fediverse (4) Advent Calendar 2020が二宮エリーさんの「気になるFediverseサービスたち」です.
私は学部卒業後に就職予定なので,修士や博士がどんな感じなのかとても気になります.
Fediverseについては,単語の定義くらいしか知らないので解説していただけるのはとても楽しみです.

*1:Contents Warningのことです.一部の投稿だけ表示して,本文は「もっと見る」をクリックすると表示されます.ネタバレ防止などに使えます.

*2:Not Safe For Workのことです.閲覧注意の画像に設定します(手動).飯テロ画像を投稿する際に使う方がいたりします.