2017 年なのでもう 5 年以上前ですが、日本でも Mastodon (マストドン) が話題になった際に面白そうってことで私も個人用のインスタンス立ち上げたりして遊んでました (参考記事は内容が古いので、書いてあることは参考にしないでください)。
インスタンス立ち上げて以降は、画像や動画の保存先をクラウドストレージ (Amazon S3) に移行したり、バージョンアップでコケたり、色々苦労したりしながらも 1 年くらいは運用してたんですが、Twitter とか他の SNS とかもあるし、Mastodon の方はあんまり更新しなくなっていくという......
まぁ有り体に言えば飽きたわけですけども、サーバも維持するにはお金と手間がかかるわけですし、そのまま放置しててもあれだなということで結局サーバは閉じてしまったんですよね。
で、そこから特に Mastodon に再び興味を持つこともなく、冒頭に書いたとおり 5 年以上もの歳月が過ぎ去ったわけですけども、最近 Twitter のゴタゴタに関係して Mastodon がまた話題になってたじゃないですか。それで最近の Mastodon はどんな感じなの? と思って公式ドキュメントとかを読みつつ調べてみたら、なんか以前よりかなり洗練されて楽そうになってるじゃんということで、再度インスタンス立ち上げてみようかなと思い立った次第。
しかも、以前 Mastodon インスタンスを立ち上げた時に使ったさくらの VPS さんでも使うかな思ってプランみてたら、Ubuntu 向けに Mastodon のスタートアップスクリプトまで用意されてるし、これならほぼなんも考えなくてもインスタンス立ち上げられるなということで早速着手です。
さくらの VPS で Mastodon インスタンス速攻立ち上げ
今回は、さくらの VPS で 「2G」 プラン (推奨は 「4G」 プラン以上) に、ストレージ変更オプションで SSD だけ増量しています。OS は Ubuntu 22.04 (amd64) を選択。2G プランで無理っぽかったらスケールアップはいつでもできるのでまずは最小構成でスタートします。
ということで手順を解説! といきたい所ですが、正直、手順の説明など不要。スタートアップスクリプトがあるので、それに任せとけば初期の立ち上げまで普通に終わります。
新規で VPS を契約する際に Mastodon のスタートアップスクリプトを選択し、おひとり様インスタンスを立ち上げる場合は、スタートアップスクリプトの設問内に 「シングルユーザーモードを有効にする」 みたいな項目があるのでそこにチェック入れれば終わり。
1点、スタートアップスクリプトによって Let's Encrypt 関連の設定も自動で行われるので、VPS の準備が完了後にコントロールパネル上で VPS を稼働させる前 (契約完了の初期状態では電源 OFF になっているので) に、インスタンスで使用するドメインでサーバにアクセスできるようにネームサーバの設定だけやっておきましょう。
それだけ間違いなくやっておけば、VPS を立ち上げるだけで諸々の設定をスクリプトがやってくれるので、勝手にインスタンスが立ち上がります。あとは SSH 関連の設定とか、ファイアウォールの設定なんかは自分でやらないといけないので、きちんと設定しましょう。
その他、必要に応じて nginx とか Mastodon の設定ファイルなども確認したり、 パッケージのアップデートとかもやっておいた方がいいですね。
管理ユーザーの作成
インスタンスが無事立ち上がったら、サーバに SSH して管理用のユーザーを作成します。
スタートアップスクリプトによって、Mastodon を実行するユーザーとして mastodon
が追加されていますので、まずは mastodon
ユーザーに変更。
sudo -u mastodon -i
その後、mastodon
ユーザーのホームディレクトリ配下にある live
ディレクトリに移動し、Mastodon の admin CLI でユーザーを登録します。<EMAIL>
と <USERNAME>
の部分は任意のもので置き換えてください。
cd live
RAILS_ENV=production bin/tootctl accounts create --role Admin --email <EMAIL> --confirmed <USERNAME>
管理ユーザーが登録されるとパスワードが発行されますので、忘れずに保存しておきましょう。あとはインスタンスに作ったアカウントでログインして、管理画面からインスタンスの設定やプロフィールの設定などを行えばもう準備完了です。
超簡単。
ということで、久々に立ち上げた私の Mastodon インスタンスは下記です (以前立ち上げた時とドメインは同じなので復活ってところですね)。
久しぶり過ぎてフォローする人探しに行くにはどうすればいいんだっけとか色々と思い出しながらぼちぼち使ってみようと思います。
定期的なサーバ内のクリーニング
以前にインスタンス立ち上げた時もそうだったんですが、フォローとか増やして行くと、ものすげぇ勢いで画像とか動画とかのファイルがサーバに溜まっていくんですよ。それで以前はストレージを外部に出したりとかやってたんですけど、公式ドキュメントに定期的にお掃除するコマンド使えって書いてあったので試してみます。
CLI のドキュメントにある tootctl media remove
と tootctl preview_cards remove
を使えってことなので、下記のようなシェルスクリプト (remove-media.sh
) を作っておいて、
#!/bin/sh
RAILS_ENV=production /home/mastodon/live/bin/tootctl media remove
RAILS_ENV=production /home/mastodon/live/bin/tootctl preview_cards remove
とりあえず 5 日おきに cron で実行するようにしておきました (おひとり様インスタンス以外でユーザー数が多いとか、おひとり様インスタンスでもフォローや接続しているリモートインスタンスが多い場合は毎日実行してもよいと思う)。
ちなみに、tootctl media remove
と tootctl preview_cards remove
には --days
オプションがありますが、デフォルト値は 「7」、つまり 7 日間以上経過したものが削除対象になるので、もしもっと短い期間、あるいは長い期間で削除したい場合は tootctl media remove --days 3
みたいな感じで指定しましょう。
0 0 */5 * * mastodon cd /home/mastodon; ./remove-media.sh
まだ誰もフォローしていない状態なので特にこれがなくても問題は無いと思いますが、徐々にフォロー増やしてみて、どんな感じになるか様子見てみようと思います。
追記: Mastodon のバージョンアップデート
インスタンス立ち上げた時点での Mastodon のバージョンが v4.0.2
でしたが、2023 年 2 月 11 日付けで v4.1.0
が正式にリリースされたのでアップデートしてみました。
手順的には下記の通り。今回は特にトラブルなく完了。
まず、mastodon
ユーザーに切り替えて、ホームディレクトリ配下にある live
ディレクトリに移動します。
sudo -u mastodon -i
cd live
最新バージョンを git fetch
してきて、v4.1.0
タグにチェックアウト。
git fetch && git checkout v4.1.0
インストール。
bundle install
yarn install
インストールが問題なく終わったら、ユーザーを切り替えて、mastodon-sidekiq
と mastodon-web
を再起動 / 再読込すれば完了です。
exit
sudo systemctl restart mastodon-sidekiq
sudo systemctl reload mastodon-web