Mastodonが流行ってるので、自分でインスタンス(鯖)を立ててみました。Mastodonというのは超ざっくり言うとオープンソースな分散型Twitterみたいなものです。
いまは特に制限を設けてないので、ご自由に登録してください。私のアカウントは https://mastodon.yumulab.org/@yumu です。
インスタンスを立てるのは、この記事の通り作業すればできます。私は Ubuntu 16.04 LTS on Google Compute Engine だったのですが、docker-composeが使える環境であれば基本的な手順は同じです。
構築自体はスムーズに行ったのですが、メール周りで2点ほどハマったので共有します。
Google Compute Engineがポート587を通さない
メール送信のためにSparkPostというサービスを使用していて、SMTP AUTHを利用してポート587宛に送るのですが、Google Compute Engineでは25,465,587はブロックされているのでした。
SparkPostのサポートページにも “Alternately, port 2525 can be used in environments where port 587 is blocked (such as Google Compute Engine).” ってちゃんと書いてました。
SparkPostのメール上限
立ち上げ時にはちゃんと飛んでいたメールが、ある時から突然飛ばなくなりました。原因は、SparkPostのメール送信上限値に達していたからでした。SparkPostは1日あたりメール5,000通送れるはずで、全然上限に達してないはずだけどなんでだろう?と思ったら、この上限値は、送信元メールアドレスに独自ドメインを設定した場合で、SparkPostのドメイン( sparkpostbox.com )を利用して送信した場合にはもっと少なくなるようです(アカウントで最大50通という情報も見かけましたが、何もしてないのに途中で送信できたりしたので、1日の上限値がある気がします)。SparkPostを利用する場合にはきちんと独自ドメインを設定しましょう。 それにしてもこのエラー、SparkPostのダッシュボードに何か表示してほしかった。。。
メール周りのエラーログはSidekiqで
上記のトラシューのためにコンテナの中を見てみたりしてもどこにログが吐かれているのか全然わからなくて作業が全然進まなかったのですが、メール周りのエラーはSidekiqで見ることができました。 Sideqikは非同期処理のジョブを管理してくれるRuby gemで、インスタンス管理者の人は、ブラウザの設定画面から「ユーザ設定」→「Administration」→「Sidekiq」で管理画面を見ることができます。
さいごに
Mastodonのインスタンス設置、初心者ならローカル環境で手順通りdockerで立ち上げるだけでも勉強になるし、それで物足りなかったらクラウドに移設して役割ごとにサーバを分けたりチューニングして負荷分散したり無限にやることあるので、インフラ構築のチュートリアルとしてとても優秀。
— mastodon.yumulab.org (@yumu19) 2017年4月15日