Mastodon インスタンスをコマンド一発で建てる（Docker不使用、CentOS7.x@さくらVPS）

:::note info
2023/01/29 追記

2022.12.01 をもって **CentOS の、さくらのVPS さん公式「マストドン立ち上げスクリプト」が廃止されました**。今後は Ubuntu ベースのみの提供のようです。

- [スタートアップスクリプト「Mastodon」利用可能OS変更のお知らせ](https://vps.sakura.ad.jp/news/vsp-ss-mastdon_renewal/) | VPS ニュース @ vps.sakura.ad.jp
- [Mastdon のマニュアル](https://manual.sakura.ad.jp/vps/startupscript/mastodon.html) | さくらのVPSマニュアル @ vps.sakura.ad.jp
- [さくらのVPS マストドン情報](https://vps.sakura.ad.jp/news/?s=Mastodon) | News @ vps.sakura.ad.jp

**p.s.** 体感的に Mastodon はリソース・ヘビーです。サーバーで Mastodon のみを動かすのであれば、Alpine などのライトウェイトな Linux OS に Docker で動かした方が楽だなと感じました（Docker と Alpine に慣れていないといけませんが）。

:::

<details><summary>以前（2018/08/24）の追記を見る</summary>

:::note info
2018/08/24 追記

8/21（火）から、**さくらのVPS さん公式マストドン立ち上げスクリプト**が提供されるようになりました！
これで、スクリプトのメンテナンスから解放される！ ヾ(=^▽^=)ﾉ
なので、今後はそちらを利用することをおすすめします！

- 『さくらのVPS、スタートアップスクリプト「Mastodon」の提供を開始 – さくらのVPSニュース』
  - [https://vps-news.sakura.ad.jp/2018/08/21/startup-mastodon/](https://vps.sakura.ad.jp/news/startup-mastodon/)

また、現在の Mastodon のバージョンは `tootctl` という管理用 CLI アプリが提供されており、本記事の `bundle exec rails mastodon:<コマンド>` の代わりに `tootctl <コマンド>:<サブコマンド>` と、よりシンプルに操作できるようになっています。

- [Using the admin CLI](https://docs.joinmastodon.org/admin/tootctl/) | tootctl | admin @ docs.joinmastodon.org
:::

</details>

---

## TL; DR <sub><sup>（`yum install mastodon` を求めて）</sup></sub>

### インスタンスをコマンド一発（ワンライナー）で簡単に建てたい

[Mastodon](mastodon) を **`yum install mastodn` くらい簡単にワンライナーでインストールする** bash スクリプトを [Gist に公開しました](one-liner-installer)。（「さくらのVPS」限定ですが、、、）

- 動作確認： Mastodon v2.0.0 + さくらのVPS + CentOS 7.2.1511（2017/09/24現在）

[masdoton-wiki]: https://ja.wikipedia.org/wiki/%E3%83%9E%E3%82%B9%E3%83%88%E3%83%89%E3%83%B3_(%E3%83%9F%E3%83%8B%E3%83%96%E3%83%AD%E3%82%B0) "Mastodon @ WIki"
[one-liner-installer]: https://gist.github.com/KEINOS/fb59b95020f0a06fb6448565d84e23cf "One-liner installer of Mastodon @ Gist"

### インストール・コマンド

CentOS7 入れ立てホヤホヤの VPS に SSH でアクセスして、"root" で下記のワンライナーを実行すると、**ほぼ全自動でマストドンを、スクリプトのダウンロード・実行・インストールまで行います**。

```shell
cd ~/ && curl https://gist.githubusercontent.com/KEINOS/fb59b95020f0a06fb6448565d84e23cf/raw > install_mastodon.sh && chmod 0755 install_mastodon.sh && ./install_mastodon.sh
```

### インストール・スクリプト @ Gist

上記ワンライナーでダウンロード・実行される本体スクリプトです。コメントを多めに入れたので、何をしているのかの参考になればいいな！

- [https://gist.github.com/KEINOS/fb59b95020f0a06fb6448565d84e23cf](https://gist.github.com/KEINOS/fb59b95020f0a06fb6448565d84e23cf) @ gist.github.com

### インストール概要

インストールが始まると「ドメイン」と「メールアドレス」を聞かれます。ドメインはマストドンを稼働させたいドメイン名。メールアドレスは SSL 認証の証明書（Let's Encrypt）の更新通知用のメールアドレスになります。

なお、ドメイン名はあらかじめ**名前解決される状態である**必要があります。つまり、DNS/NS の設定が終了していて、ドメイン名でサーバーの IP アドレスにアクセスできる状態です。なお、SSL 認証の登録や証明書の取得はスクリプト側で行うので `https://` でアクセスできる必要はありません。

次に、実行の確認で "y" を選択すると、あとは 20〜30分 程度放置して完了したら**再起動後**、SSL(`https://`) 付きでドメインにアクセスしてみてください。

しばらく稼働させて良い感じになったら、ぜひ「[日本 Mastodon インスタンス一覧](https://qiita.com/noraworld/items/ea853c6897326feda51f)」に登録しよう！

### 注意

インストール後、`root` およびパスワードでの SSH 接続ができないように設定して、SSH のポート番号変更をすることをおすすめします。

というのも、サーバを直接狙われた場合は効果は無いと思いますが、インスタンスを立ち上げてしばらくいじっていると 22 番ポートに `root` でのボットらしきアクセスが発生していたので「やっぱり、あるんだなぁ」と再実感しました。

#### あわせて読みたい

- 「[CentOS7 セキュリティ対策チェックリスト @ さくらのVPS](https://qiita.com/KEINOS/items/16de4e676fe3c3c8beea)」@ Qiita

## TS;DR（所感）

現在「さくらのVPS」のサーバーで CentOS7 とお付き合いをしています。「マストドンはイカガ？」と打診したところ、先日友達の子供のために勝手に Minecraft サーバーを建てて、やたら大きなワールドを入れたものの誰も来ないから一人でさまよってるだけの容量食いのせいで狭くなったばかりなのに、マストドンのメディア・ファイルでさらに狭くなったらどうするのよ、と嫌がられました。

ションボリしていたところ、Docker を使わないマストドンならカロリー少なめかもしれないし試してもいいかも、と OK がでたので色々チャレンジしていました。

ところが、「`Cld3` が足りない」だの「`Annotate` がない」だの「`rake secret` できない」とダダをこねたり「`device` の鍵がない」だのと怒られたりして、**インスタンスを建てるどころか腹が立って立って付き合うのを断念しそうでした**。（心の声：「Ubuntu に乗り換えたろか！Ubuntu に！」）

お互いマストドンは初めての体験です。まずは稼働するところまで行けば「何が原因か」考える余裕も出来て**先へ進めると思った**ので、「さくらのクラウド」であればセットメニューの[公式のスタートアップスクリプトがある](http://knowledge.sakura.ad.jp/knowledge/8591/)との情報を得て、お試しで頼んでみたところ確かに簡単に導入できました。

しかし、@KEINOS は貧乏人なので**コスト的に維持出来そうにない**のもわかりました。

ユーザーが増えてスケールアップのしやすさを考えると「さくらのVPS」より「さくらのクラウド」の方がいいかもしれません。しかし、現在お付き合いしている相手は人見知りで基本的に「お一人様用マストドン」を考えています。つまり、「さくらのクラウド」に移行したとしても月々のコストが高くなるだけということになります。

ただでさえ、お仕事時代に知り合ったロリポップちゃんやバリューちゃんとのお付き合いもあり、ひひり出しながら維持している現在の関係に、さらにコストがかかるとなると破滅してしまうこと必至です。

何とか現在の VPS サーバーに入れようと「さくらのクラウド」のスタートアップスクリプトを読んでみたところ、いけそうだったので同じジャジャ馬に悩んでいる方の参考になれば幸いです。

ちなみに、現在の VPS サーバーでは、Kusanagi の WordPress 環境を利用しているので、サブドメインにもインストールできるスクリプトも出来たらいいなと考えています。（~~誰か作って~~ → [KUSANAGI 環境にも一発でマストドンをインストールするスクリプトを公開](http://qiita.com/KEINOS/items/c258b0e058631e77fefb)しました）

## その他の関連情報

初回のマストドン・ユーザー作成で、ユーザー登録後のメール認証を手動で行ったり、管理者に昇格する手順。

### 手動認証（コマンドで認証を通す）

```shell-session
# 'someone@email.com' のメール認証を管理者が代行する場合。
su - mastodon
cd live
RAILS_ENV=production bundle exec rails mastodon:confirm_email USER_EMAIL=someone@email.com
```

### ユーザーを管理者に昇格する

```shell-session
# ユーザー 'KEINOS' を管理者に昇格する場合
su - mastodon
cd live
RAILS_ENV=production bundle exec rails mastodon:make_admin USERNAME=KEINOS
```

### 未認証ユーザーの手動削除

```shell-session
# ユーザー申請のみで認証の済んでいないユーザーの削除を手動で行う場合
su - mastodon
cd live
RAILS_ENV=production rake mastodon:users:clear
```

### Mastodon コマンド詳細

- [https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Administration-guide.md](https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Administration-guide.md)

### 動作実績

- サーバー&nbsp;&nbsp;&nbsp;： [さくらのVPS](http://vps.sakura.ad.jp/)
- OS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;： CentOS 7.2.1511
- ゾーン&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;： 石狩第1ゾーン
- メモリ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;： 2GB
- ストレージ： SSD 50GB
- CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;： 3コア
- オプション： なし
- さくらのVPS バージョン： v4

| サーバー | OS |条件|スタートアップ・スクリプト|マストドンのバージョン|
|:-:|:-:|:-:|:-:|:-:|
|さくらのVPS|CentOS 7.2.1511 ※1|OSのインストール直後の状態 ※3|CentOS_yum-update|v2.0.0<br><br>2017/09/24現在 ※5|
※1 インストール後は CentOS 7.**4**.1708にバージョンアップされます。(2017/09/20現在）
※2 マストドン管理用の`mastodon`ユーザーも同時に作成されます。`su - mastodon`で切り替えて管理ください。
※3 2017/06/20 追記：KUSANAGI環境下では動きません。「OSインストール」のイメージは「標準OSインストール」にある「CentOS7 x86_64」を選択してください。（2017/06/22 追記：[KUSANAGI 環境用の記事を書きました](http://qiita.com/KEINOS/items/c258b0e058631e77fefb))
※4 2017/08/09 追記：マストドンが v1.5.1 に大幅アップデートしました。アップデート方法およびメンテナンス情報をとりまとめ中ですが、取り急ぎ [v1.4.7 から v1.5.1 にアップデートできました](https://blog.keinos.com/20170809_2869)。
※5 2017/09/24 追記：Mastodon 2.0.0 に合わせてインストーラーを修正しました。

### 参考文献

- [スタートアップスクリプト – @さくらのクラウドニュース](https://cloud-news.sakura.ad.jp/startup-script/)
- [スクリプト動作詳細 – @さくらのクラウドニュース](https://cloud-news.sakura.ad.jp/startup-script/mastodon/information/)
- [ゼロからはじめるMastodon – @さくらのナレッジ](http://knowledge.sakura.ad.jp/knowledge/8591/)