Mastodonをv2.5.0にするためv2.3.3からv2.4.0に上げたらエラー画面になった話

Sep 27, 2018

先日、私が運営しているMastodonインスタンス「マストどす」を最新のv2.5.0にすべく、まずはv2.3.3からv2.4.0にアップデートしたところエラー画面(We’re sorry, but something went wrong on our end.)になり、クライアントアプリからは使えるのにWebブラウザからだと使えない、摩訶不思議な状態に陥りました。

※当インスタンスはさくらのクラウドのスタートアップスクリプトで作成したものです

結論からお話すると

(最終的にエラー画面すら出なくなり)502エラーになっている状態でv2.4.0からv2.4.1にアップデートしたら直りました。その後(v2.4.2とv2.4.3を飛ばして)v2.4.4→v2.5.0とアップデートすることができました。

私はv2.4.4のリリースノートを確認せずに、「いまv2.3.3だから、v2.4.0から順にアップデートすれば安心だ」と思い込んで今回のトラブルに見舞われました。アップデートが追いつかないまま本家のバージョンがいくつか上がった場合は、 リリースノートを最新から順に一読すべきだった と反省しています。

今回のことで、沢山の方々から応援やアドバイスをいただきました。また、多くのブログ記事にも助けられました。ありがとうございます。

解決まで延べ3日と時間を要してしまいましたが、教わったことを忘れないためにも、ここに書き記しておきます。

解決までの道のり

nginxのエラーログを確認

/var/log/nginx/error.log

[error] 1014#0: *5302 connect() failed (111: Connection refused) while connecting to upstream, client: XXX.XXX.XXX.XXX, server: mastodos.com, request: “GET /api/v1/streaming/?stream=user&access_token=ホニャララ HTTP/1.1”, upstream: “http://[::1]:4000/api/v1/streaming/?stream=user&access_token=ホニャララ”, host: “mastodos.com”

アプリからは使えていた

mstdn.jpのアカウントを使って状況をトゥートしていると、他の運営者の方から「アプリからなら使用できているみたい」と教えていただき、確認してみるとユーザーの皆さんは普段通りワイワイとやり取りを楽しまれていました。

ひとまず安心し、事情を報告できたものの、一体どこをどう対処すれば良いのかわかりません。v2.4.0のアップデートではPostgreSQLを9.6に、Rubyを2.5.1にアップデートする必要がありますが、終始エラーなどは出ていませんでした。v2.3.3時点で改造していた場所は無く、ヴァニラのままです。

どこに問題があるのか見当がつかないと、相談のしようもありません。自分なりに調べながら、多くの方々からも助言をいただきつつ、以下のことを試しました。

ディスク全体の容量を確認

# df -h

どのディレクトリに一番容量を使っているか確認

# du -sh /*

nginx.confのproxy_passを書き換えてみる

proxy_pass http://localhost:4000;

proxy_pass http://127.0.0.1:4000;
※今は戻しています

nginxを再起動

# systemctl restart nginx

pumaの確認

# ps ax
「puma: cluster worker」を見つける

Mastodonのサービス群を再起動

# systemctl restart mastodon-web
# systemctl restart mastodon-sidekiq
# systemctl restart mastodon-streaming

Mastodonのサービス群が起動しているか確認

# systemctl status mastodon-web
# systemctl status mastodon-sidekiq
# systemctl status mastodon-streaming

Redisが起動しているか確認

# systemctl status redis

Redisが停止していたので起動

# systemctl start redis
# systemctl enable redis

サーバを再起動

# reboot

mastodon-webのログを確認する

# journalctl -xf -u mastodon-web.service
「status=500」がないか確認。

恐らくここで見落としがあったんじゃないかと思っています。

Ruby Gem を再インストール

# bundle exec gem uninstall -aIx
# bundle install

アセットをゼロから作り直す

/home/mastodon/live
$ RAILS_ENV=production bundle exec rails assets:clobber
$ RAILS_ENV=production bundle exec rails assets:precomplie

Node.jsをv8.X系までアップデートする

Mastodon v2.4.0でこの作業は必要ないはずなんですが、node_modulesでエラーが出ていたので下記のページを参考にNode.jsをアップデートしました。
Mastodon地域インスタンス「箕面どん」をv.2.5.0にアップデートしました – tonetalk

この時点でエラー画面すら出なくなり、502エラーになってしまいました。上記のコマンドを再度試したりもしましたが原因がわからず八方塞がりになり、思い切ってv2.4.1へのアップデートを試してみると、無事Webブラウザでアクセスできるようになりました。

v2.5.0になったマストどす

参考記事

今回の笑ったで賞