おひとりさま用のMastodonインスタンスを作る

mstdn.jpまわりが不穏なのと、少し前にサーバーが不安定になっていた時期があったのでいい機会だと思い個人でインスタンスを構築してみました。

サーバー環境はConoHaの1GBプランが1台とGoogle Cloud Storageで、メールサーバーはとりあえずGmailを使っています。

構築

適当なサーバーにUbuntu 16.04をインストールします。Mastodonはメモリ食いなのでスワップ領域を4GBぐらい作っておきます。セキュリティの設定を事前にやっておきます。ファイヤウォールはとりあえずufwを入れて80番、443番、お好きなssh用のポートを通します。

documentation/Production-guide.md at master · tootsuite/documentation

サーバーのリソースが限られているので、Dockerは使わずに直でインストールします。基本的にはこのガイドの通りにやればいいのですが、今回は超小規模インスタンスであることと、Google Cloud Storageを使うという2点を踏まえてセッティングしています。

メールサーバーの設定

.env.productionを編集する段階でSMTPサーバーを指定すると思います。今回はおひとりさま用なのでMailgunなどのメール配信サービスは使用せずに、Gmailからメールを送るようにします。

MastodonのメールをGmailから送る - Qiita

Qiitaの投稿なので眉唾ですがこれで通りました。

Googleアカウントの2段階認証を有効にした後、アプリパスワードを作ります。

.env.production のSMTPサーバーまわりの設定を以下のようにします。

1
2
3
4
5
6
7
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_LOGIN=Googleアカウント
SMTP_PASSWORD=作成したアプリパスワード
SMTP_FROM_ADDRESS=Googleアカウント
SMTP_DOMAIN=gmail.com
SMTP_OPENSSL_VERIFY_MODE=none

Google Cloud Storageを使う

Google Cloud StorageはAmazon S3と互換性があるので、S3をストレージとして使う場合と設定は同じです。事前にCloud Storageの設定から相互運用ストレージアクセスキーを取得しておきます。ストレージクラスをRegionalにしたバケットを作っておきます。

.env.productionのS3まわりの設定を探して、このように設定します。

1
2
3
4
5
6
7
8
S3_ENABLED=true
S3_BUCKET=バケットの名前
AWS_ACCESS_KEY_ID=アクセスキー
AWS_SECRET_ACCESS_KEY=シークレット
S3_REGION=バケットの場所
S3_PROTOCOL=https
S3_HOSTNAME=storage.googleapis.com
S3_ENDPOINT=https://storage.googleapis.com/

S3_ENDPOINTをGoogle Cloud Storageのものにするのがミソです。

おひとりさま用にする

初期設定では誰でも登録できるようになっています。今回のインスタンスはおひとりさま用にするので、最初のアカウントを作ったら.env.production内の

1
SINGLE_USER_MODE=true

のコメントアウトを外しておきます。インスタンスのトップページにアクセスすると最初に作成されたアカウントにリダイレクトされるようになり、さらに新規登録を締め切ります。

登録を開放するインスタンスならオートスケールなどやるべきことは多いと思うのですが、一人で使う分にはこれで十分な気がします。