Prev / Next / /home/pochi/ChangeLog

Mastodon バージョンアップ (2.0→2.4.3)[mastodon]

2018-07-25

[2018-07-24-2]のスパム対策もあり、久しぶりに janogdon をバージョンアップ。
2.0に上げてから、放置しすぎてたせいで、いろいろとハマった。

やり方等



Mastodonは一気にバージョンを上げてもわりと大丈夫な作りになってる感じだけど、
ちょっとずつ上げるほうが安全な気がしたので、

2.0 → 2.1 → 2.2 → 2.3 → 2.4 → 2.4.3

という順番で上げていく。

ただ、このやり方ではうまくいかなくて、正しくは

2.4 → 2.4.1 → 2.4.3

のように、2.4.1 を間に挟むのが正解だった模様。

janogdonはDockerを使わずにインストールしてるんだけど、
Rubyのバージョンアップとかが意外と面倒なので、
Dockerを使うほうが楽だったかなあ、とは思う。

バックアップ



作業前にデータのバックアップ。
ディレクトリ丸ごととデータベースをバックアップ。

sudo su - mastodon
cp -rp live live.20180725
pg_dump mastodon > pg-dump-mastodon-20180725



ファイルシステムが残り少なくなってたので、古いバックアップファイルの掃除をしたり。

2.0→2.1



公式ドキュメント↓を見ながら作業

https://github.com/tootsuite/mastodon/releases/tag/v2.1.0

まずはソースを更新

su - mastodon
cd /home/mastodon/live
git describe --tags
git fetch
git stash
git checkout v2.1.0



アップデート

bundle install
yarn install
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:precompile
RAILS_ENV=production bundle exec rails mastodon:maintenance:migrate_photo_preview_cards 



root権限で再起動。

sudo systemctl restart mastodon-sidekiq.service mastodon-web.service mastodon-streaming.service redis-server.service nginx.service 



2.1にするのはわりと素直にできた。

2.1→2.2



公式ドキュメント↓を見ながら作業

https://github.com/tootsuite/mastodon/releases/tag/v2.2.0

Ruby 2.5 が必要とのことなので、インストール。

cd /home/mastodon/.rbenv/plugins/ruby-build/
git pull
rbenv install 2.5.0
rbenv global 2.5.0
rbenv rehash
gem update --system
gem update 
gem install bundler



yarnも変なとこにインストールされるけど、うまく動かないので、これはエイヤで消しちゃう。
これを消しても /usr/local/bin/yarn があれば問題ない。

rm /home/mastodon/.rbenv/shims/yarn



ソースを更新

su - mastodon
cd /home/mastodon/live
git describe --tags
git fetch
git stash
git checkout v2.2.0



アップデート

bundle install
yarn install
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:precompile
RAILS_ENV=production bundle exec rails mastodon:maintenance:remove_regeneration_markers



root権限で再起動。

sudo systemctl restart mastodon-sidekiq.service mastodon-web.service mastodon-streaming.service redis-server.service nginx.service 



yarn をどう設定するのが正しいのかは謎。

2.2→2.3



これも公式ドキュメント↓を見ながら作業

https://github.com/tootsuite/mastodon/releases/tag/v2.3.0

Elasticsearchが使えるようになるらしい。
いちおうElasticsearchインストールしてみる。
以下の通りに実行。

https://github.com/tootsuite/documentation/blob/master/Running-Mastodon/Elasticsearch-guide.md

sudo apt install openjdk-8-jre-headless
sudo apt install apt-transport-https 

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

sudo apt update && sudo apt install elasticsearch



メモリを1Gしか積んでないので、jvm.optionsも修正しておく。

sudo vi /etc/elasticsearch/jvm.options



systemctlの設定をして起動。

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
sudo /bin/systemctl start elasticsearch.service
sudo /bin/systemctl status elasticsearch.service



ソースを更新。

su - mastodon
cd /home/mastodon/live
git describe --tags
git fetch
git stash
git checkout v2.3.0



アップデート

bundle install
yarn install
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:precompile
RAILS_ENV=production bundle exec rails chewy:deploy



Elasticsearchを使うように .env.production を修正

vi /home/mastodon/live/.env.production



root権限で再起動。

sudo systemctl restart mastodon-sidekiq.service mastodon-web.service mastodon-streaming.service redis-server.service nginx.service 



なんか Web UI から Elasticsearch がうまく動いてないような感じ。
アプリからは検索できるので、Elasticsearch と API は動いてるのかな。
まあ検索できなくても困ることはないので、後で調べる方向で。

2.3→2.4



これも公式ドキュメント↓を見ながら作業

https://github.com/tootsuite/mastodon/releases/tag/v2.4.0

Ruby 2.5.1 が必要とのことなので、インストール。

cd /home/mastodon/.rbenv/plugins/ruby-build/
git pull
rbenv install 2.5.1
rbenv global 2.5.1
rbenv rehash
gem update --system
gem update 
gem install bundler



今回も yarn が変なとこにインストールされるけど、うまく動かないので、エイヤで消しちゃう。
消しても /usr/local/bin/yarn があれば問題ない。

rm /home/mastodon/.rbenv/shims/yarn



ソースを更新。

su - mastodon
cd /home/mastodon/live
git describe --tags
git fetch
git stash
git checkout v2.4.0



アップデート

bundle install
yarn install
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:precompile



root権限で再起動。

sudo systemctl restart mastodon-sidekiq.service mastodon-web.service mastodon-streaming.service redis-server.service nginx.service 




2.4→2.4.3



これも公式ドキュメント↓を見ながら作業

https://github.com/tootsuite/mastodon/releases/tag/v2.4.3

ソースを更新。

su - mastodon
cd /home/mastodon/live
git describe --tags
git fetch
git stash
git checkout v2.4.3



アップデート

bundle install
yarn install
RAILS_ENV=production bundle exec rails db:migrate
RAILS_ENV=production bundle exec rails assets:precompile



root権限で再起動。

sudo systemctl restart mastodon-sidekiq.service mastodon-web.service mastodon-streaming.service redis-server.service nginx.service 



アップデート完了!!!
と思ったら、なんか変。
管理画面にログインできないし、ローカルタイムラインも流れてこない。
あれれ?

2.4.1 の db:migrateをやりなおし



調べてみたら、ネットで同じような症状を見つけた。

https://www.webdb.co.jp/~atsumi/skimemo/index.php?skimemo%20-%20%C6%FC%B5%AD%2F2017-04-20

ただし、v2.4.1以降はv2.4.1の状態に依存しているらしく、2.4.1をまたげない。
つまり、2.4.1以前から2.4.1以降にバージョンアップする場合、
一旦v2.4.1のdb:migrateを実行してから最新版のmigrateを実行する必要がある。


とりあえず、db:migrateだけやり直して

cd /home/mastodon/live
git checkout v2.4.1
RAILS_ENV=production bundle exec rails db:migrate
git checkout v2.4.3
RAILS_ENV=production bundle exec rails db:migrate



再起動

sudo systemctl restart mastodon-sidekiq.service mastodon-web.service mastodon-streaming.service redis-server.service nginx.service 



とりあえず動いたぞ。

スパムアカウントのブロックと停止



モデレーション→メールブラックリストに、mxsrv.mailasrvs.pwを登録。

2日で18個のスパムアカウントが作られてたので、管理画面から停止処理。
ちょっとにぎわっていた janogdon もまた静かになったよ。

permlink