Edited at
MastodonDay 23

全くの素人がConoHaとS3でMastodonインスタンスを立ててみたお話

More than 1 year has passed since last update.

これはQiita Mastodon Advent Calendar23日目の記事になります。

お一人様インスタンスmimikun丼の管理人をしているmimikunと申します。

普段はPythonやJavaでプログラムを書いています。

今回僕がMastodonを立てるにあたって躓いたところなどを書いていきます。

作業内容をメモしていなかったので忘れている部分もありますがご了承ください。


環境など


  • macOS 10.13

  • ConoHa VPS 1GB (Ubuntu16.04)

  • Amazon S3

  • Mailgun

  • スタードメイン


手順

ちなみに、今回はConoHa公式のMastodonイメージは使っていません。


1. ドメインの設定

インスタンスを立てるにあたってドメインが必要なのですが、持っていなかったので取得しました。

whois情報が出ないところが良かったのでスタードメインで取得しました。


2. DNSレコードの設定

スタードメインの場合、自分には分かりにくかったのでちょっと詰まりました。

(お名前やムームーはもう少し分かりやすいんでしょうか?)

ドメインのDNSレコード設定

上から、例えば自分だったら

項目名
入力値

ホスト名
mstdn.(mimikun.jp)

タイプ
タイプA

コンテンツ
ConoHaのVPSのIPアドレス

優先度
(MXレコードではないので、空白)

といった感じに設定しました。


3. VPSへのSSHログイン設定

ここで1〜2日かかってしまいました。

ファイルのパーミッション周りの設定が分かってなかったことが原因でした。

最終的にはこんな感じになりました。


  1. ホスト(Mac)の~/.ssh/configファイルを以下のようにして簡単に接続できるようにする

#ConoHa

Host conoha.hogefuga
HostName 123.456.789.012
User hogefuga
Port 22
IdentityFile ~/.ssh/id_rsa


  1. パーミッションを適切に設定する

僕の場合はユーザをrootの他にも作ったのでそのユーザのssh鍵に対しても行いました。

$ sudo chmod -R 700 ~/.ssh/

$ sudo chmod 600 ~/.ssh/authorized_keys


4. VPS(Ubuntu)の更新

いつものようにコマンドを入力します。

$ sudo apt-get update

言語設定も日本語にしておきましょう。僕は後から行ったので英語が読めず、エラーメッセージをその都度Google翻訳にかけるなど無駄な時間を過ごしてしまいました。

(他、certbotを入れる時、python virtualenv作成がうまく行かなかったりしました。)

$ sudo apt-get install language-pack-ja

$ sudo update-locale LANG=ja_JP.UTF-8

入力後、Cmd+Dでログアウト、再ログインします。

エラーsudo: unable to resolve host 123-456-789-012 が起きないようにする

/etc/hosts に以下のように追記します。

127.0.0.1   localhost     # 元からあった

127.0.1.1 ubuntu # 元からあった
127.0.0.1 123-456-789-012 # 追記した


5. オブジェクトストレージ(Amazon S3)の設定

ConoHaのオブジェクトストレージを使うという手もありましたが、公式にある通りAmazon S3を使いました。

AWSの設定方法や登録方法はググればたくさん出てくると思うので省きます。

終わったら、.env.productionのS3の部分を以下のように編集します。


6. Mailgunの設定

ConoHaのメールサーバを使うという手もありましたが、公式の.env.productionにある通り、Mailgunを使いました。

Mailgunの設定をします。


  1. 登録

  2. メール認証

  3. ドメイン設定

  4. DNSレコード設定

  5. 1~2日待機

  6. ドメイン認証

という順番で行いました。

DNSレコード設定は以下のような感じにしました。

そして、.env.productionのmail部分を以下のように編集します。


7. SSL証明書の取得

certbotで取得しました。

証明書が切れそうになった時、メールで通知が来るのでよく使うメールアドレスを設定しておくといいです。

生成にはこのコマンドを使います。



./certbot-auto certonly --standalone -d [Mastodonのドメイン] -m [よく使うメアド] --agree-tos -n


8. nginxの設定

以下の通り作業します。

cd /etc/nginx/sites-available

nano /etc/nginx/sites-available/example.com.conf

そして、公式Productionガイド nginxのCopy and paste the following and make edits as necessary:以下にあるテキストをコピペします。

この時、serverディレクティブに以下の7行を追加します。何故かProductionガイドから消されていたようです。

ssl_protocols TLSv1.2;

ssl_ciphers HIGH:!MEDIUM:!LOW:!aNULL:!NULL:!SHA;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

詳しくは公式Productionガイド nginxの方を見てください。


9. dockerイメージ作成

Mastodon公式のDockerガイドを見てやりました。


終わりに

今回、Mastodonインスタンスを立ててみて、サーバへの理解度が少し深まった気がします。

今度はPleromaインスタンス作成に挑戦してみようと思います。