見出し画像

マストドンを5年間管理してきて

イーロンがTwitterのCEOになって、Twitterが終わるんではないか危機を感じた人々がマストドンに来たらしい。
また、Twitterがマストドンのリンクを張ることを禁止したりと(今は解除された)なにかとマストドンがここへきて目立ってきている
これまでも、ちょっとした仕様変更でも『Twitterは終わった。これからはマストドンだ』みたいな小規模な騒ぎみたいなのがあったけれども、今回は特に大きかった

マストドンとは

マストドンというのはオープンソースの分散型SNSだ。
Twitterを意識して作っていて、同じような短文投稿型のSNSだ。

Twitterをはじめとする企業が作っているSNSは中央集権型で、彼らのポリシーで投稿がBANされたり、凍結されたりする。
またトップの恣意的な運用でアカウントが排除されるということもあり得る。
それは昔のTwitterでもあったし、イーロンのTwitterでも起きている。

マストドンは分散型で、個人や団体や企業が好きにサーバーを立てることができる。
別のサーバーのユーザーをフォローすることもできる。
別のサーバーのトート(ツイートに相当)をブースト(リツイートに相当)することもできる。
ルールやポリシーは各サーバーで決められていて、サーバー管理者が判断すればほかのサーバーとの繋がりを遮断することもできる。
つまりユーザーでの自治が可能というSNSとしてTwitterに変わるもう一つの選択肢として作られている。

マストドンをはじめたころのこと

マストドンが最初に話題になったのは2017年4月で、「Twitterに似てるSNSが出たぞ」ということで、マストドンを始める人が爆発的に増えた。
はじめは大きなサーバー(当時はインスタンスと呼ばれていた)に人が集まってきたが、すぐに自分でサーバーを立てる人が増えて多くのサーバーができた。
やはり分散型ということで、自分の興味あるテーマに沿ったSNSが作れるということが魅力的だったんだろう。
自分のサーバーもこの2017年4月にスタートした。

しばらくすると、マストドンを始めた人もTwitterにもどっていった。
Twitterはユーザー数多いし、不特定多数の人に見られるので、中央集権SNSの強みには勝てなかった。
多くのサーバーも閉鎖されていった。
鳴り物入りで開設されたサーバーも、有名人が作ったサーバーも、消えていった。
利用者がいなくなったのもあるし、管理者の作業が大変だったのもあると思う。
証明書の有効期限がきれたが最後つながらなくなったサーバー。
管理者が消息不明になってバージョンアップされずに他のサーバーとの連携が不都合が出てユーザーたちが泣く泣く引っ越さなければならなくなったサーバー。
バージョンアップに失敗してデータロスしたサーバー。
色々あった。

5年管理していたけれど、管理は結構大変

「自分たちのSNSが手に入る」と思ってマストドンのサーバーを作った人たちが多かったけれど、サーバーの管理は本当に人を選ぶと思う。
自分は小規模サーバーを管理して、それほどマストドンに出入りしているわけでも、マストドンのオープンソースプロジェクト自体に貢献しているわけでもない、そこら辺にいる小さな管理人だけど、それでも結構大変だった。
SNSでのコミュニティ管理より、サーバーの管理が大変だった。

まずマストドンを構成しているものは、
Rubyで実装されているマストドン本体
APIの実装であるstreamingというアプリ
キューイングのsidekiq (おそらく外部サーバーとの連携に使ってると思われる)
インメモリデータベースのredis(きっと内部のやり取りに使っている気がする)
データベースはPostgres
全文検索したい場合はお好みでElasticSearchを入れられる
これらがdocker-composeでインストール可能。

dockerで用意されるもの以外にも必要なものがある。
HTTPサーバーは自信の環境にあったものをえらべる。
自分はnginxを使っている。

アカウント登録のときにはメールの送信が必要なので、メールサーバーが必要。
自分はmailgunを使っている。

こういったスキルセットを持っていることがマストドン管理をはじめる前提になってしまう。

管理はお金とリソースの調整が肝心

小規模な数人しかやっていないような個人の趣味のインスタンスでもリソースとお金の問題が出てくる。
自分は小遣いの範囲でなるべく安く済ましたいので、従量課金で料金が上がるような企業向けのクラウドは怖くて使えなかったので
定額制のConohaのVPSを使ってやっている。
個人向けアプリを動かすには月900円のメモリ1GBのコア2個のプランを使うが、最初このプランでやってみた無理だった。
ここ最近再びこのプランで動作検証してみたがやはりOOMEが出た。
結局メモリ2GBでコア3個の月1900円のプランが最低でも必要なラインだった。

サービス維持できる金額として考えれば破格で安いけれど、個人がSNSに払う金額としたらちょっと戸惑う金額ではあると思う。
でもこの金額は最低限必要な金額に過ぎない。

SNSなので内外から画像や動画がとんでくるが、今度はストレージの問題が出てくる。
外部サーバーの画像などは自分のサーバーにも保存されるが、それは後で削除して必要に応じて再ダウンロードなどができる。
うちのサーバーは小規模なので100GBの範囲内で何とか納まっている。
だが、規模がもう少し増えたらその範囲も超えてしまうだろう。
そうなったらオブジェクトストレージなどを検討しなければならないだろう。

マストドンには連合リレーというものがある。
マストドンはここのユーザー同士での繋がりでサーバー間のつながりが発生するが、より多くのサーバーとつながりたい場合は連合リレーを利用してより多くのトートを受け入れることができる。
そうすると多くの外部のアカウントを認知することになるのでアカウント画像などの保存量が増える。
ここでもまたストレージ問題が発生するし、
やり取りも増えるので処理が重く感じるようになればVPNのプランも上げなければならないだろう。

何十人もいて画像や動画を日ごろアップするようなTwitterに近い使い方を望む場合は運営費は万を超えるだろうとは思う。
こうなってくると個人のお小遣い範囲という気持ちは無くなるだろう

Linuxやミドルウェアの管理も大変

この前までうちのサーバーはCentOS7で動いていた。
もうそろそろサポート終了する古いやつだ。
そして5年前から使っているPostgresは9系だった。もうサポート終了している奴だ。

そこで今年はUbuntu22.04とPostgres14への移行を行った。
まずDBは今までdockerコンテナで立てていたのを、Ubuntuで立てた新しいサーバーにpostgresを構築して、バックアップとリストアをしてデータを移行。

次にnginxを新サーバーに立てて、古いサーバーにプロキシするようにした。
最後にマストドン本体を全部新サーバーに持ってきてdockerを再構築して起動した。

いくら個人向けとは言え、使っている人がいる中で安全にリプレースするのは中々骨が折れる作業だった。

マストドン本体のバージョンアップ

まあまあの頻度でバージョンアップがくる。
dockerで管理しているので手順の通りbuildするだけで大体OKなのだが、
起動しなくなることもあるし、リリースノートを見て特殊な事前作業が必要かどうかは確認しなければならない。

つまりは

つまり泥臭い作業が結構多いのだ。
だから途中やめてしまった人も多い。
自分のところは5年間データロスもサービスダウンもなく安全に運用し続けられているので、そこは誇ってもいいかなと思っている。

もしTwitterが嫌だなと思って、マストドンにジョインする人がいたら、そのマストドン管理者は大変なんだなと思ってほしい
おそらく僕のサーバーより大規模だろうから、僕より10倍くらい大変なはずだ。

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