マストドン(Mastodon)のDockerインスタンスをさくらVPSに設置してみた

スポンサーリンク

マストドン(Mastodon)のインスタンスを、さくら VPS に Docker を用いて設置してみました。この記事は、その作業を行った際の備忘録です。公式 README にも書いてありますが、Mastodon のインスタンスを立てるには、Docker を用いる方法が比較的簡単です。設置してみてやはり Docker 便利だな〜!ってなりました。

事前に、ご利用のドメインサービスでドメインを取得して、サーバーの IP アドレスに対する DNS レコードの設定を済ませておきます。既にドメインをお持ちの方はそれを利用してもOKです。

Screen Shot 2017-05-03 at 11.10.43

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

CentOS 7 をインストール

さくら VPS で、CentOS 7 をインストールします。OS の選択はお好みでご自由にどうぞ。コントロールパネルからログイン後、各種設定 – 標準OSインストール – CentOS 7 を選択してインストールします。root ユーザー用に設定するパスワードを控える。

CentOS 7 のインストールが終了したらアップデートしておきます。root ユーザーで SSH ログイン。

CentOS のバージョン確認。

続いてアップデート。

アップデート後にもう一度 CentOS のバージョン確認。CentOS 7.3 に上がりました。

続いて、作業ユーザー作成、公開鍵認証による SSH 接続設定、root ログインの制限、ネットワーク設定などを行っていきます。

作業ユーザーの作成と sudo 設定

作業用のユーザーを作成して、パスワードを設定します。

user_name ユーザーが sudo できるようにする。user_name を sudoers.d に追加します。

user_name を wheel グループに追加。

最後に、作成した作業用ユーザー が sudo できるか確認です。

公開鍵認証による SSH 接続設定

ローカルマシン(私の場合 Mac)で鍵を作成後、公開鍵をアップロードします。パスワードを入力して scp で転送。

user_name ユーザーでサーバーにログイン後、authorized_keys を設定します。

続いて、ローカルマシンで ~/.ssh/config の設定。

SSH接続テスト。

root ログインの禁止

サーバーに SSH でログイン後、sshd_config を編集します。root によるログイン、およびパスワード認証によるログインを拒否する設定を行います。

上記を設定したら sshd をリスタート。

ターミナルの別タブから、root でログインできないことを確認。

作業ユーザーでは SSH ログインできることを確認。

SSH 接続での root によるログイン禁止と公開鍵認証を強制 〜 CentOS6 | EasyRamble

以降は、サーバー側での作業です。

Firewall の設定

続いて http, https の firewall 設定を行い、http, https による通信ができるようにします。

確認。

必要なライブラリをインストール

事前に必要となるライブラリをインストールしておく。

SELinux の無効化

SELinux を無効化しておきます。

Nginx のインストール

続いて、Nginx のインストールとバージョン確認。

Nginx の起動、およびサービスとして自動起動の設定。

ブラウザからアクセスして、Nginx の初期画面が表示されればOKです。

Docker のインストール

Docker をインストールします。

docker-engine のインストールと、docker 自動起動の設定です。

docker-compose のインストール。

ユーザーを docker グループに追加。

Mastodon インストール

任意の場所で git clone で mastodon をインストールします。

docker-compose.yml を編集してビルド

コンテナを破棄しても DB データが吹っ飛ばないように、docker-compose.yml を編集します。

続いて、docker-compose.yml で設定された Docker イメージを pull してビルドします。

pull した docker イメージを確認。mastodon, postgres, redis のイメージが pull されました。

ビルド。かなり時間がかかります。

設定ファイル .env.production の編集

次に、設定ファイル .env.production の編集です。secret キーを設定する箇所が3箇所あるので、事前に rake secret を3回実行してキーを控えておく。

.env.production.sample をコピーして設定ファイルを編集します。

メールサーバー(SparkPost)の設定

SparkPost で、GET STARTED FOR FREE からアカウントを作成します。登録したら、「What domain will you be sending email from?」と入力を促されるので、取得済みのドメイン名を入力して CREATE。「Send with SMTP」または「Send with REST」から、Password もしくは API KEY(両者とも同じ)を取得して控えておきます。

その後、「Go to Dashboard」からダッシュボードへと移動。ACCOUNT – SENDING DOMAINS – DKIM Record – Settings をクリックします。表示された DNS 設定を、ご利用サーバーで Type を TXT にして DNS レコードとして追加します。DNS レコードの反映には時間がかかる場合があります。DNS レコードが反映された後、Test をクリックしてOKが確認できたら SparkPost での設定は終了です。

SparkPost の設定が終了したら、メール送信のための .env.production 編集。

設定する情報は、API Reference – SparkPost Developer Hub を参考。

DB の作成

Docker コンテナを立ち上げて、DB を作成します。

コンテナ一覧を確認。

DB コンテナに入って、データベースを作成します。.env.production に設定した、DB 情報を元に入力を進める。

Rails のセットアップ

Rails アプリケーションのセットアップのため、マイグレーションや Asset Precompile を行います。

コンテナの再起動。

Let’s Encrypt 証明書の作成

HTTPS(SSL)のために、Let’s Encrypt を用いて SSL 証明書を作成します。

Let’s Encrypt の証明書を自動更新するために、cron を設定します。

Nginx 設定

nginx の conf ファイル設定。Mastodon 用の Nginx 設定を、documentation/Production-guide.md からコピペしました。

コンテナを再起動して、Nginx のリスタート。

ブラウザから動作確認して、マストドンの画面が表示されればOKです。

Screen Shot 2017-05-03 at 11.10.43

管理者権限の設定

ブラウザから通常のユーザー登録を行います。その後、管理者にするユーザー名を指定して以下コマンドを実行。

シングルユーザーモードにする

最初に登録したアカウント以外に登録を許可せずに、シングルユーザーで運用する場合は次の設定を行います。

「管理画面 – サイト設定 – 新規登録を受け付ける」を無効にする。

その後、以下のように .env.production を編集。

Docker コンテナと Nginx を再起動。

以上で、Docker を用いたマストドンインスタンスの設置は終了です。Docker を使うと Mastodon インスタンスを比較的楽に立てられます。とは言え、この記事くらいの作業量はありますので、初回だと2〜3時間程度はかかりますね。以上、Docker を使ってマストドンのインスタンスを設置する手順でした!

スポンサーリンク
 
スポンサーリンク

Leave Your Message!