ゼロからはじめるMastodon インスタンス運用編

こんにちは、さくらインターネット クラウドチームの大喜多です。

Mastodonは、Twitterライクな投稿ができる分散型ソーシャルネットワークを実現するオープンソースソフトウェア(OSS)です。Twitterとの違いは、1カ所に全ユーザがいる中央集権型でなく、個人でインスタンス(Mastodonではサーバのことをこう呼びます)を立てて、他のインスタンスと緩く繋がれる分散型であるところです。さくらのクラウドのスタートアップスクリプトを使うことで、自分(あるいは仲間同士)のMastodonインスタンスを簡単に作ることができます。

「ゼロからはじめるMastodon」(以降、「前回の記事」と記載します)では、さくらインターネットの会員登録からドメインの取得、DNS設定、インスタンス作成、Mastodon管理者設定までをご説明しました。今回はさくらのクラウドを使ってMastodonインスタンスを運用する上でのポイントをご紹介します。

本チュートリアルの流れ

さくらのクラウドのスタートアップスクリプトを使用して構築されたMastodonインスタンスを対象として、以下の流れでご説明してまいります。

STEP1 最低限行っておくべきセキュリティ対策 インターネットに公開しているサーバで行うべき基本的なセキュリティ対策についてご説明します。
STEP2 Mastodonインスタンスの内部構造 メンテナンスする上で必要となる情報をご紹介します。
STEP3 Mastodonのバージョンアップ Mastodonのバージョンアップ手順をご説明します。
STEP4 Mastodonインスタンスの監視 Mastodonインスタンスを監視する方法をご説明します。
STEP5 Mastodonインスタンスのスケールアップ Mastodonインスタンスとして稼働しているサーバのスケールアップについてご説明します。

STEP1:最低限行っておくべきセキュリティ対策

Mastodonインスタンスはインターネット上に公開されているサーバであり、攻撃を受ける可能性があります。サーバが乗っ取られボットネットの一部に組み込まれた場合、自分が加害者になる危険性もあります。ここでは、最低限行っておくべきセキュリティ対策についてご説明します。

公開鍵認証の設定

サーバにSSHログインする際に、パスワードではなく公開鍵認証の設定を行います。さくらのクラウドでは、コントロールパネル上から公開鍵認証に使用するキーペアを作成する機能があり、サーバ作成時に「パスワード/チャレンジレスポンスでのSSHログインを許可しない」設定とすることができますので、サーバ作成前にキーペアを作成しておき、サーバ作成時には公開鍵を選択して、「パスワード/チャレンジレスポンスでのSSHログインを許可しない」にチェックを入れるようにします。
※前回の記事もこの手順を用いてサーバを作成していますので、前回の記事の手順どおりにサーバを作成されている場合は追加で行う作業はありません。
※サーバ作成後でも、ディスク修正機能を用いて同様の設定を行うことが可能です。

STEP2:Mastodonインスタンスの内部構造

Mastodonインスタンスの運用においては、その内部構造を把握しておく必要があります。さくらのクラウドのスタートアップスクリプト及びさくらのクラウドのスタートアップスクリプトで作成したMastodonインスタンスに関する情報は以下のページに記載しております。
さくらのクラウドニュース - Mastodon
さくらのクラウドニュース - Mastodon -スクリプト動作詳細

主な内容を抜粋すると以下の通りです。

  • Dockerは使用していない
  • Mastodonのインストールディレクトリは /home/mastodon/live
  • Mastodonの設定ファイルは /home/mastodon/live/.env.production
  • Mastodonに必要なcronは /etc/cron.d/mastodon ファイルに記述されています。
  • Let’s Encryptの証明書はcronによって自動的に更新されるようになっています。 /etc/cron.d/certbot-auto ファイルに記述されています。
  • スタートアップスクリプトで実行される内容を参照したい場合は、スクリプトの内容をコントロールパネルから参照することができます。

また、以下の公式ドキュメントも参考になさってください。
Mastodon documentation
Administration guide
Maintenance tasks

STEP3:Mastodonのバージョンアップ

Mastodonは現在も活発に開発されており、頻繁にバージョンアップが行われています。スタートアップスクリプトでは、実行時点での最新バージョンをインストールするようになっていますが、運用中に新しいバージョンがリリースされた時のために、バージョンアップの手順をご説明します。


※2017/6/19追記:バージョンアップ作業の前に、必ずリリースノートをご確認いただきますようお願いします。また、バージョンアップに伴い追加のパッケージインストール等が必要な場合はリリースノートの記述に従い実施をお願い致します。
※2017/9/21修正:gitコマンドに一部誤りがありましたので修正致しました。

rootユーザからmastodonユーザにスイッチします。

su - mastodon

Mastodonがインストールされているディレクトリへ移動します。

cd /home/mastodon/live 

git tagコマンドで、提供されているバージョンを確認します。

git fetch
git stash
git tag

[参考]git tagコマンドの出力結果例

$ git tag
v0.1.0
v0.1.1
v0.1.2
v0.6
v0.7
v0.8
v0.9
v0.9.9
v1.0
v1.1
v1.1.1
v1.1.2
v1.2
v1.2.1
v1.2.2
v1.3
v1.3.1
v1.3.2
v1.3.3
v1.4.1
v1.4.2
v1.4.3
v1.4.4
v1.4.5
v1.4.6
v1.4.7
v1.4rc1
v1.4rc2
v1.4rc3
v1.4rc4
v1.4rc5
v1.4rc6
v1.5.0
v1.5.0rc1
v1.5.0rc2
v1.5.0rc3
v1.5.1
v1.6.0
v1.6.0rc1
v1.6.0rc2
v1.6.0rc3
v1.6.0rc4
v1.6.0rc5
v1.6.1

本記事ではインストールされているバージョンがv1.6.0、提供されている最新バージョンがv1.6.1として、v1.6.0からv1.6.1へのバージョンアップを行う仮定で手順を記載します。

v1.6.1のbranchに移動します。

git checkout v1.6.1
git stash pop

git branchコマンドで、現在のbranchを確認します。

git branch

以下のように表示されればbranchの移動に成功しています。

$ git branch
* (detached from v1.6.1)
  master

Mastodonのバージョンアップに必要なコマンドを入力していきます。

gem install bundler 
bundle install --deployment --without development test 
yarn install 
RAILS_ENV=production bundle exec rails db:migrate 
RAILS_ENV=production bundle exec rake mastodon:maintenance:add_static_avatars 
RAILS_ENV=production bundle exec rails assets:precompile 
exit

Mastodonをリスタートし、バージョンアップを完了させます。

systemctl restart mastodon*

STEP4:Mastodonインスタンスの監視

外形監視はさくらのクラウドの一機能であるシンプル監視をおすすめします。監視サーバを構築しなくてもpingやhttpsによるMastodonインスタンスの監視が可能です。また、シンプル監視はさくらインターネットの保有するIPアドレス宛の監視は無料となっており、さくらのクラウドのスタートアップスクリプトで作成したMastodonインスタンスを無料で監視することができます。

左メニューの「シンプル監視」をクリックし、右上の「追加」をクリックします。

「監視対象」にてIPアドレスのラジオボタンをクリックします。「サーバから選択」のラジオボタンをクリックし、対象のサーバを選択します。青枠部分が監視設定になります。この例では、https://leopardon.com/aboutというページを1分間隔で監視しています。

通知先・メールタイプ等を設定後、「作成」をクリックします。

サーバの負荷やディスク容量など、サーバリソースの監視を行いたい場合は、国産の監視サービスであるMackerelをおすすめします。

STEP5:Mastodonインスタンスのスケールアップ

Mastodonインスタンスとして稼働しているサーバのメモリ容量が不足し、動作が不安定になった、画像のやりとりが多くディスク容量が不足してきたなどの場合でも、さくらのクラウドであれば、CPUコア数やメモリ容量を増やしたり、ディスク容量を増やしたりすることができます。

CPUコア数/メモリ容量の変更

左メニューの「サーバ」をクリックし、サーバ一覧を表示させます。対象のサーバにチェックを入れ、右上の「電源操作」をクリックし、表示された「シャットダウン」をクリックします。

右上の「シャットダウン」をクリックします。

サーバがシャットダウンできたら、サーバ一覧に表示されている対象のサーバの行(赤枠部分)をダブルクリックします。

右上の「プラン変更」をクリックします。

仮想コア数とメモリ容量を選択し、右下の「プラン変更」をクリックします。

以上でCPUコア数/メモリ容量の変更は完了です。サーバを起動します。

ディスク容量の拡張

左メニューの「サーバ」をクリックし、サーバ一覧を表示させます。対象のサーバにチェックを入れ、右上の「電源操作」をクリックし、表示された「シャットダウン」をクリックします。

左メニューの「ディスク」をクリックし、対象ディスクの行(赤枠部分)をダブルクリックします。

ディスク詳細画面で「コピー」をクリックします。

「ディスク」を選択し、「次へ」をクリックします。

20GBのディスクから100GBのディスクにコピーします。接続先は同じサーバにします。

任意の名前を入力し、「作成」をクリックします。

左メニューの「ディスク」をクリックし、コピーした新しい方のディスクの行(赤枠部分)をダブルクリックします。

ディスク詳細画面で「その他のディスクの操作」をクリックし、「パーティションサイズの拡張」をクリックします。

パーティションサイズの拡張が完了したら、サーバ詳細画面から古いディスクを「取外し」します。

サーバを起動し、動作が確認できたら、古いディスクは削除します。

なお、ディスクサイズを大きくするのは簡単ですが、小さくするのは難しいため、最初は小さくはじめ、規模に応じて容量を拡張していく手法をおすすめします。

まとめ

いかがでしたでしょうか。このようにさくらのクラウドを利用することで、スタートアップスクリプトによって簡単に構築できるだけでなく、後からスケールアップできるなど、柔軟な運用が可能になります。この機会に是非ご活用ください。