DockerでMastodonインスタンスを1年運用して得られた知見

author potpro(ぼとぷろ)
2018/05/27

DockerでMastodonインスタンスを1年運用して得られた知見

https://mastodon.potproject.net/

なんだかんだで、Mastodonインスタンスを作ってから1年が経ちました。

結構な人たちが1年記念で記事を書いているので、自分も書くことをします。 ちなみにMastodonはもうブームも終わりましたが、まだまだ日本人口も十分おり、普通に使用しています。

最近twitterが気に入らないので利用頻度はtwitter:mastodon=3:7という感じ。 もう機能と自由度に関してはもうtwitterの上位互換担っているのではと思います。

Mastodonのバージョンの変異

1年ほど経ってまして、Mastodonの開発の方も十分すぎるほど進んでいます。 バージョンはv1.2程度だったものから現在の最新はv2.4になり、かなりの量のコミットもされたと思います。 デフォルトトップ画面もかなり変わっています。

この1年で自分が覚えている限りの大きな変更は、

  • いつの間にやら検索エンジンとしてElasticSearchを使用できるように
  • カスタム絵文字やテーマ、ソース変更無しでのインスタンスごとの特色追加
  • ActivityPubという新プロトコルへの移行

こんな感じに、パワーアップしています。

また、データベースクエリ見直しやパフォーマンス改善系のプルリクも結構多くみられます。 よって、バージョンが上がり機能も増えましたが、メモリ使用量やパフォーマンスは良くなっていると思います。 実際、主観ですが最新バージョンは過去より一番安定している感じがしますし、最近サーバダウンも(アップデート時以外は)ほぼありません。

未だにv1.6とかで止まっているインスタンスを見ているとメンテされて無くて悲しい・・・ 古いバージョンを使い続けることは当然セキュリティや互換性問題もあるので、みんな最新バージョンを追っていってほしいですねえ。

Docker運用

自分は実は運用する前は、__「Dockerなんか本番運用するものじゃなくない?」__みたいな気持ちでした。 その頃はまだDockerでの長期運用などの情報は少なかったからですかね。みんな知見も少なく「詰まることが多い」とよく聞いていたからかも。

そして1年経過。 ちなみに自分のインスタンスでもデータ削除やサーバダウンももちろんやらかしました。やらかしましたが・・・

全てDockerのせいではなくほぼヒューマンエラーです。 ディスクフルになってしまいサービスが不能になったり、 ミスってdocker-compose downをやらかしてバックアップが3か月前しかなかった・・・などなど・・・ Dockerだからこその辛い部分はほぼ無く。むしろメリットが多かったです。

しかし、やはりnon-Dockerの方がパフォーマンスがいいのは事実です。実際今でもメモリカツカツですし。 それを上回るメリットとして管理とアップデートが簡単って感じですね。

知見としては、Dockerの場合新しくコンテナを作って古いものと入れ替えるイメージなので、アップデートは「ほぼダウンタイムゼロ」が実現できるということです。 これは実際個人鯖で手軽に行えているところは凄いですよね。

しかしこれを実現させるには、同時に2台分のリソースが確保できるサーバであることが大事ということもわかりました。 そんなリソースもないとして、アップデートに失敗したくなければ素直に停止させて、アップデートしたほうがいいです・・・ハイ・・・

バックアップとストレージ

避けられない部分として、Mastodonは分散型SNSサービスということで、おひとり様サーバだとしてもストレージをものすごい量食います。 基本的に他のサーバから送られてきているデータをそのまま保持する作りになっているので、基本的にストレージ使用量は右肩上がり。 月1で画像データ系のアセットのバックアップを取っていますが、今月の時点で__35GB__に達しました。これくらいの余裕が無いと厳しいよということですね。

またDBのバックアップは非常に重要です。最新バージョンからちゃんとPostgreSQLのdumpを取れと言われるくらいです。 これに関しては現在で100MBに満たないくらいとなっており、そこまで負担じゃないと思うのでみなさんもかなりの頻度でバックアップを取っておきましょう。

画像データ系のアセットは消失しても画像が表示されず、 ちゃんと存在しないと再取得してくれる設計になっていたりもいるのでまだ大丈夫ですが・・・ (でも自鯖の画像は消えちゃうのでバックアップはとってね)

DBが消えるとあなたのフォロワーやお気に入り履歴、恥ずかしいトゥートなども一緒に葬られてしまい他のインスタンスには残っていたりしますが復旧がまず無理です。 運用はどんなサービスでもバックアップ第一。VPSにスナップショット機能なんかがあればそれを使ってもいいと思います。

以上です。今のMastodonはドキュメントの整備や知見の共有などがあり、1年前よりかなりわかりやすく立てることもできると思います。 twitterがUser Stream API廃止宣言して、Account Activity APIとかいう個人じゃ何もできないクソAPIにした今がチャンスですよ。