Edited at

AWSでマストドンインスタンスを立てる

More than 1 year has passed since last update.


マストドンインスタンスを立てた。

筋トレやダイエットに関するコミュニティになれば良いと思って筋肉インスタンスを立てました。

Muscledon

AWSの無料期間が終わるので閉鎖しました。


AWSでマストドンを立てる

という記事を書こうかと思ったが既に完璧な手順があった。同じ内容の記事はフヨウラ!

マストドンAWS構築チュートリアル完全版|初心者から大規模運用まで

とはいえこの記事通りに進めているうちにつまったところがあるので解決法を提示する。


docker-compose buildに失敗する。

apt-getでdockerを入れるとバージョンが古く、buildに失敗してしまう。

新しいバージョンのdocker及びdocker-composeの入れ方は以下の兄貴の記事を参考にしてほしい。

DockerとDocker Composeをインストール


docker-compose buildに失敗する。

上記の対応を行っても以下のようなエラーで失敗してしまった。

ERROR: https://nl.alpinelinux.org/alpine/edge/main: operation timed out

WARNING: Ignoring APKINDEX.65bdaf85.tar.gz: No such file or directory
OK: 21 MiB in 29 packages
WARNING: Ignoring APKINDEX.65bdaf85.tar.gz: No such file or directory
WARNING: The repository tag for world dependency 'nodejs@edge' does not exist
WARNING: The repository tag for world dependency 'nodejs-npm@edge' does not exist
WARNING: The repository tag for world dependency 'imagemagick@edge' does not exist
ERROR: Not committing changes due to missing repository tags. Use --force to override.
ERROR: Service 'streaming' failed to build: The command '/bin/sh -c echo "@edge https://nl.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories && BUILD_DEPS=" postgresql-dev libxml2-dev libxslt-dev python build-base" && apk -U upgrade && apk add $BUILD_DEPS nodejs@edge nodejs-npm@edge git libpq libxml2 libxslt ffmpeg file imagemagick@edge ca-certificates && npm install -g npm@3 && npm install -g yarn && update-ca-certificates && rm -rf /tmp/* /var/cache/apk/*' returned a non-zero code: 255

原因としては*.alpinelinux.orgのサーバがダウンしているためだ。

この記事を書いている現在2017/05/05 20:00もアクセス出来ない状態になっている。

2017/05/05 22:40現在復活している。

https://alpinelinux.org/

リポジトリの向き先をalpineのCDNに変更してやるとよい。

cloneしてきたmastodonディレクトリ直下にあるDockerfileを編集する。


Dockerfile

- RUN echo "@edge https://nl.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories \

+ RUN echo "@edge http://alpine.gliderlabs.com/alpine/edge/main" >> /etc/apk/repositories \


ユーザー数が0人と表示される。

何故か「このインスタンスについて」のユーザー数が0人と表示されていた。

原因はMastodonアプリとDBのタイムゾーンが異なっているためだった。

DBは日本時間だったがEC2インスタンスはUTCだったので日本時間に合わせる。


mastodon/config/application.rb

-    # config.time_zone = 'Central Time (US & Canada)'

+ config.time_zone = 'Tokyo'


HTTP/2に対応させる。

nginxでもいじってHTTP/2に対応させてやるか!

と思っていたら既にHTTP/2になっていた。どうやらAWSのロードバランサでapplicationを選択するとHTTP/2になるようだ。


サイトの管理画面を出す。

ここに書いてある通りなのだが、

まずユーザーを作って(ここではaliceというユーザとしよう)メール認証を済ませる。

そして以下のコマンドを打ち込むのだが



RAILS_ENV=production bundle exec rails mastodon:make_admin USERNAME=alice



では上手くいかなかった。

かわりに

sudo docker-compose run --rm web rails mastodon:make_admin USERNAME=alice

ならうまくいった。:relaxed:


mastodonのdaily taskを追加する。

こちらの兄貴が書いている通りmastodon:dailyを実行してやらないと

国交を断絶されてしまうらしい。cronにタスクを追加してカイコクシテクダサーイ


Postgres Redis ストレージを切り離す。


投稿画像、動画をS3に保存するように変更する。

こちらの兄貴のやり方に従って作業すれば良い。

ただしS3を使っているのであれば以下の設定は不要(検証済み)

S3の代わりに別のサーバを使う場合は必要らしい。


.env.production

# S3_PROTOCOL=

# S3_ENDPOINT=


mastodonは変化し続ける可能性の獣

mastodonのGithubを見ると最終コミットが数時間前だったりする。

頻繁に変化し続けているのでちょいちょいバグる。二回ほど構築してみたが、一回目は管理画面からサイトの編集が出来なかったが、二回目は出来るようになった。

今のところCloneするタイミングによってかなり挙動が変わるようだ。

とかUCな気持ちに浸っていたら公式にはこう書いていた。



Please note: It is highly recommended to run a tagged release of Mastodon and not run off the current master branch.



訳:間違ってもMasterのブランチからクローンなんかすんじゃねーぞ。