[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
ファイルシステムが残り少なくなってたので、古いバックアップファイルの掃除をしたり。
公式ドキュメント↓を見ながら作業
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にするのはわりと素直にできた。
公式ドキュメント↓を見ながら作業
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 をどう設定するのが正しいのかは謎。
これも公式ドキュメント↓を見ながら作業
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 は動いてるのかな。
まあ検索できなくても困ることはないので、後で調べる方向で。
これも公式ドキュメント↓を見ながら作業
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
これも公式ドキュメント↓を見ながら作業
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
アップデート完了!!!
と思ったら、なんか変。
管理画面にログインできないし、ローカルタイムラインも流れてこない。
あれれ?
調べてみたら、ネットで同じような症状を見つけた。
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 もまた静かになったよ。