LoginSignup
18
18

More than 5 years have passed since last update.

GCPでMastodonを構築

Last updated at Posted at 2017-04-16

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

18
18
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
18
18