KUSANAGIでmastodon動かしてみた

ますとどん!


今流行の分散型のSNSmastodonを、KUSANAGIで入れてみました。
手順は、さくらのクラウドに追加されたスタートアップスクリプトを参考にしています。

kusanagi設定


インスタンスとして2GBメモリのものを用意して、普通にkusanagi initとkusanagi provision までを実行します。
これで、Let’s Encrypt SSL証明書取得とNGINXの設定ができました。
provision は、LAMPを指定しますが、使用するのはNGINXの設定だけで、PHP7とmysqlは停止します。

追加パッケージインストール


以下のように、パッケージを追加インストールします。
nux-desktopは、ffmpeg関連のインストールに、nodesouce はnode.jsのインストールに必要なようです。

Postgresql/Redisの設定


Postgresql の初期設定と起動をします。KVSのRedisもここで起動しておきます。

Ruby on Rails と Mastodonの設定


ユーザ mastdon を作成し、ここにRubyをインストールし、RailsとMastdonの構築を行います。
以下の手順では、renv でRuby2.4.1をインストールし、依存ライブラリをインストールします。
また、さくらのクラウドのスタートアップスクリプトでは、localhostのpostfixの設定をしますが、ここではGmailのメールサーバを使用しています。
事前に、Gmailアカウントの設定でアプリパスワードの発行が必要で、ここで発行したパスワードをSMTP_PASSWORDに設定します。また、SMTP_LOGINとSMTP_PASSWORDはパスワードを発行した際のGmailのメールアドレスを指定します。
この手順は、http://qiita.com/ymmtmdk/items/aa0d300450d370a1eca0の記事を参考にしています

Mastodon サービスの定義と起動

以下のように、mastodonのサービスを定義し、起動・有効化します。Rails、Sidekick、Streamingの3つのサービスが必要になります。

NGINX設定

KUSANAGIで生成したNGINXの設定は、LAMPつまりPHPを使うことを想定しています。そこで、上記で作成したサービスを使うように設定を変更します。

設定変更後、NGINXの再起動を行います。

マストドン!


これで、mastdon が起動しました。
KUSANAGIのSSLの設定をそのまま活かし、http/2で接続可能な状態です。

あとは mastodon ユーザの権限で以下のcron 実行を仕掛けています。

mackerelでの監視も行っています。nginx、postgresql、redis あたりはプラグインがあるのですが、Railなどはどうやって監視するのがいいのか検討中です。