LoginSignup
5
5

More than 5 years have passed since last update.

GCEでMasotodonのインスタンスを作ってみた

Last updated at Posted at 2017-04-17

流行りに乗ってMasotodonのインスタンスを作成したときのメモです。
GCE(Google Compute Engine)とDockerを使いました。
VMさえ何とかなれば、大体は無料でできると思います。

大まかな流れは、

  1. GCEのVMを作る
  2. Freenomでドメインを取得する
  3. パッケージを導入する
  4. Mastodonをセットアップする
  5. Nginxをセットアップする
  6. Mastodonを起動する

という感じです。
初投稿の拙い記事ですがご容赦ください。

GCEのVMを作る

まずはMastodonのインスタンスを動かすマシンを用意します。Google Cloud Platform Consoleから適当にプロジェクトを作成し、コンピューティング>VMインスタンスを選択してください。なお、GCEを使うためにはクレジットカードの登録が必須だと思われます。無料試用枠が使えると良いですね。
さて、インスタンスを作成をクリックしたら、名前/ゾーン/マシンタイプ/ブートディスクを適宜指定しましょう。ここではそれぞれ、qiita/us-east1-c/micro/Ubuntu 16.04 LTSにしました。ブートディスクのサイズは30GBまで無料だそうです。(規約を確認してください)
その下のファイアウォールにてHTTPトラフィックを許可する HTTPSトラフィックを許可するの2つにチェックを入れ、管理、ディスク、ネットワーキング、SSH 認証鍵を展開します。ネットワーキングタブを開き、外部IP新しい静的IPアドレス...を選択し、適当な名前で予約しましょう。
ここまで来たら作成をクリックし、VMインスタンスを作成します。VMインスタンスが正常に作成されたことを確認したら、外部IPをしっかりメモってください。これから使います。

Freenomでドメインを取得する

次はFreenomでドメインを取得します。サイトを見れば使い方は何となくわかると思います。ここでは、example.tkとでもしておきましょう。
希望のドメインが見つかったら今すぐ入手!で選択し、下部のチェックアウトをクリックします。Use DNSをクリックしたら、Use Freenom DNS ServiceタブのIP address入力欄に先ほどの外部IPを入力してください。Period12 Months@FREEで良いと思います。
終わったらContinueをクリックしてください。サインインして終了です。なお、途中で個人情報の入力が求められますが、必須ではないです。
ドメインが有効になるまで時間がやや掛かるみたいなので、その間にVMを弄っていきましょう。

VMを整備する

sshでVMに接続できるようにしてください。公開鍵をプロジェクト(VMインスタンスではない!)に登録すれば良いようです。接続できたら、
$ sudo apt-get update && sudo apt-get upgrade -y
しておきましょう。
次に、必要なパッケージを導入していきます。まずはDockerです。次のコマンドを順に実行していってください。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update && sudo apt-get install docker-ce -y
$ sudo usermod -aG docker $USER
続けてDocker Composeも導入していきます。
$ sudo su
# curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose (最新のバージョンを使ってください)
# chmod +x /usr/local/bin/docker-compose
# exit
これでパッケージの導入はおしまいです。簡単ですね。一旦sshを終了し、再接続してください。

Mastodonをセットアップする

いよいよMastodon本体を触っていきます。
適当なディレクトリに移動したら、
$ git clone https://github.com/tootsuite/mastodon && cd mastodon
してください。
$ cp .env.production.sample .env.production
で.env.productionを作成したら、
$ vim .env.production
で編集していきます。LOCAL_DOMAINに先ほどFreenomで取得したドメインを入力し(ここではexample.tk)、:wqでvimから抜けてください。
次に、Mastodonをbuildしていくのですが、マシンタイプがmicroではメモリが足りないようです。そこで、swapの設定をしておきます。
$ sudo su
# fallocate -l 2G /swap
# chmod 0600 /swap
# mkswap /swap
# swapon /swap
# echo '/swap swap swap defaults 0 0' >> /etc/fstab
# exit
これでbuildの準備は整ったので、
$ docker-compose build
を実行しましょう。この過程でとても時間が掛かるので、半荘でも打っていてください。
buildが成功したら、
$ docker-compose run --rm web rake secret
でsecretを取得します。secretは最下行の長い文字列です。これをコピーしたら、
$ vim .env.production
で.env.productionを開き、PAPERCLIP_SECRET SECRET_KEY_BASE OTP_SECRETに設定します。
続いて、次の2つを実行してください。
$ docker-compose run --rm web rails db:migrate
$ docker-compose run --rm web rails assets:precompile
何が起こるか説明は省略します。
最後に、メール周りの設定とデータベースの永続化を施してMastodonのセットアップは終了です。この辺りは皆さんにお任せしたいと思います。(知識も経験もないので)

Nginxをセットアップする

上記まででMastodonをローカルで実行することはできますが、まだ外部からアクセスできません。そこで、Nginxを用いてアクセスを実現するのが主流みたいです。(要出典)
まず、必要なパッケージを入れていきます。
$ sudo add-apt-repository ppa:certbot/certbot -y
$ sudo apt-get update && sudo apt-get install certbot nginx -y
次に、証明書を取得します。
$ sudo certbot certonly --standalone --agree-tos -d example.tk (自分で取得したドメインに書き換えることを忘れずに)
上手くいったことが確認できたら、ここから設定をまるごとコピーしてください。そして、
$ sudo vim /etc/nginx/conf.d/mastodon.conf
にペーストし、example.comを自分のドメインに書き換えてください(ここではexample.tk)。保存し終了するコマンドは:wqです。書き換える場所は全部で4箇所あったはずです。そのうち2箇所はファイルのパスだと思いますが、きちんと存在することを確認すると良いと思います。

Mastodonを起動する

ここまでで自分のドメインにブラウザからアクセスしてみると、Nginxの初期画面(Welcome to nginx!)が出てくると思います。後は、
$ docker-compose up -d
でMastodonを起動し、
$ sudo systemctl restart nginx
でNginxを再起動してください。

お疲れ様でした。(覚え書きなので、どこかで間違っていたら超ごめんなさい)

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5