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