mastodon サーバー立ち上げ手順

Twitterが当初の輝きを失い続けていると嘆かれて久しい。
いつか来るであろう †ZERO DAY† に備え、いい加減駆け込み寺としてのMastodon インスタンスを建立する練習をしておこうと思った。


概要


前提


流れ

  1. OSのインストール
  2. ドメイン取得
  3. SSL/TLS証明書の取得
  4. Nginx リバースプロキシの設定
  5. Docker環境の構築
  6. Mastodon のソースコード取得と初期設定
  7. 起動!

OSのインストール


ドメインの取得と設定

ここでは osu.si というドメインを使い、ホスト名を don にすることで
Mastodon サーバーのFQDNを don.osu.si とする前提で進めます。


SSL/TLS 証明書の取得(前準備)

みんな大好きLet’s Encryptを使います。
注) ここからの手順は Nginx を稼働するマシン上で行います。docker ホストサーバーと Nginx マシンを分ける場合は注意してください。
もちろん固定IPの80番ポートも直接又はアドレス変換で Nginx マシンに割り当てられている必要があります。


SSL/TLS 証明書の取得

しばらく経つと Congraturations! と出て、発行された証明書のパスが出力されます。


Nginx への証明書の設定


Webからの接続テスト

Nginx の設定は一通り終わりました。
あとで Mastodon サーバーが整ってきたら少しnginxの .conf ファイルを設定しますが、ここれ移行は基本的に docker ホストサーバーでの作業が続きます。


Docker 環境の構築

  1. 公式リポジトリを yum へ追加
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  2. docker のインストールと有効化
    sudo yum install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl start docker
    sudo systemctl enable docker
    sudo docker version
    
  3. docker-compose のインストール(バイナリのDL) URL注のバージョン部分 x.xx.x は github記載のリリース を参考に書き換える。
    sudo curl -L https://github.com/docker/compose/releases/download/x.xx.x/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-comose
    docker-compose --version
    

Mastodon のソースコード取得

/var/mstdn というディレクトリを作り、そこに諸々を配置することにします。
また、一連の作業は mastodon 専用ユーザーで行います。


docker-compose の設定変更

docker-compose.yml を編集します。


SparkPost の設定

ビルド完了を待っている間に SparkPost の登録と設定をします。
Mastodon ではアカウント作成にメール送信による認証をするため、メッセージ送信用メールサーバーが必要です。自分のメールサーバーがあればいいですが、SparkPostにあやかるとメールサーバーがなくても大丈夫です。

  1. 登録 します。
  2. Configuration -> Sending Domains でドメイン(don.osu.si)を追加します。
  3. ドメインの認証をします。
    Sending Domains -> Set Up For Sending に表示されているTXTレコードを Route 53で登録し、DNS伝播の確認が取れたら Verify TXT Record をクリックします。
  4. Set Up For Sending の DNS Settings に緑のチェックが入り Status が Pending になればOKです。mastodon を起動する頃には Status が Verified になります。
  5. Configuration -> API Keys でAPIキーを取得します。後ほど .env.production の中に記入します。

nginx の追加設定

マシンの性能によっては SparkPost の作業が完了してもビルドが終わっていないかもしれません。この間に nginx の設定も終わらせてしまいます。
今すぐできない場合、mastodonサーバーの起動直前でも大丈夫です。


mastodon 環境設定

mastodon インスタンス起動前の設定を行います。


Eメール 送信設定

前の手順で保存した .env.production を一部編集し、SparkPost経由で通知メール等を送信できるようにします。

…

SMTP_SERVER=smtp.sparkpostmail.com
SMTP_PORT=587
SMTP_LOGIN=SMTP_Injection
SMTP_PASSWORD=xxxxxxxx ← SparkPost で取得したAPIキー
SMTP_FROM_ADDRESS=notifications@don.osu.si
…

起動!

お疲れ様でした。https://don.osu.si/ にアクセスし、動作を確認します。