GCPでMastodonを構築

  • 16
    Like
  • 0
    Comment

Mastodon公式ページQiitaの記事「AWSのEC2で最小限の努力でmastodonを構築する」を参考にGCP(Google Cloud Platform)でMastodonを構築してみた。

手順

GCE(Google Compute Engine) 構築

  • GCEにアクセス
  • インスタンスを作成をクリック
    • 名前を適当に
    • OSはUbuntu 16.04 LTS
    • ファイアウォールでHTTP, HTTPS両方にチェックを入れて作成
    • mastodonはけっこうリソースを食うらしいのでmicroでは物足りないかも。今回この記事を書くときはmicroでやってみる。
  • ファイアウォールルールにて「ファイアウォールルールを作成」をクリック
    • 名前を適当に
    • ソースIPの範囲を0.0.0.0/0へ
    • プロトコルとポートをtcp:3000へ

GCE上で必要なモジュールのインストール

  • GCEにアクセス
  • 先程作ったインスタンスの「接続」でSSHをクリックしてリモートログイン
  • コマンドを打つ(docker.io, docker-composeのインストール)
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python3-pip docker.io
$ sudo pip3 install docker-compose
  • Mastodonを持ってくる
$ git clone https://github.com/tootsuite/mastodon.git

SendGridの設定

  • 公式ページに従って設定を行う
  • 「インスタンス上で Postfix を使用してメールを送信する」ができればOK、以降は実施不要

Mastodonの設定

  • 鍵を3回生成(1回目だけすごく時間かかる。出力結果をどこかにメモしておくこと)
$ sudo docker-compose run --rm web rake secret
$ sudo docker-compose run --rm web rake secret
$ sudo docker-compose run --rm web rake secret

microだとおそらくOut of memoryが出る。その場合、スワップファイルを作るんじゃ.sh
を参考に以下のコマンドを打つ。

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  • 設定ファイルを作る
$ cd  /home/${ユーザ名}/mastodon
$ cp .env.production.sample .env.production
$ vi .env.production

変更点だけ記載

LOCAL_DOMAIN=${GCEの外部IPアドレス}
LOCAL_HTTPS=false

PAPERCLIP_SECRET=${鍵の内容}
SECRET_KEY_BASE=${鍵の内容}
OTP_SECRET=${鍵の内容}

DEFAULT_LOCALE=ja

SMTP_SERVER=smtp.sendgrid.net
SMTP_PORT=2525
# ここAPIキーを使えそうな気もするけど、どうすれば良いのかわからなかった
SMTP_LOGIN=${SendGridのログイン名}
SMTP_PASSWORD=${SendGridのパスワード}
  • DBの構築
$ sudo docker-compose run --rm web rails db:migrate
  • コンパイル(時間かかる)
$ docker-compose run --rm web rails assets:precompile
  • 実行(実行方法は2種類)
$ sudo docker-compose up # これで実行するとログが見れる
$ sudo docker-compose up -d # これで実行するとデーモン実行

http://${GCEの外部IPアドレス}:3000 で接続可能。
このままだと使いづらいので80番からアクセスされた時に3000番に割り振るようフロントエンドサーバを立てる。

念のためMastodonを止めておく。

$ sudo docker-compose down # デーモン実行時もこのコマンドでOK

lighttpdの設定

  • インストール
$ sudo apt-get install lighttpd
  • プロキシの設定
$ sudo lighty-enable-mod
→「Enable module:」が出てきたら「proxy 」と打つ
$  sudo vi /etc/lighttpd/conf-enabled/10-proxy.conf
→末尾に「proxy.server = ("" => (( "host" => "127.0.0.1", "port" => 3000)))」追加。
$ sudo service lighttpd restart

この後にMastodonを実行すれば80番ポートでアクセスできる。
(httpsで運用する方法は分からなかったので勉強中)

参考URL

Mastodon
https://github.com/tootsuite/mastodon
Qiita(AWSのEC2で最小限の努力でmastodonを構築する)
http://qiita.com/tsuitta_dayo/items/dfd659ec68435653d16a
GCP
https://console.cloud.google.com
SendGrid
https://cloud.google.com/compute/docs/tutorials/sending-mail/using-sendgrid
lighttpd
https://help.ubuntu.com/community/lighttpd