(メモ)Mastodonを4.2系から4.3系に上げた

テクノロジーMastodon/Misskey

長らく自鯖をMastodon 4.2.10で放置していたので、
いまさらながら今般Mastodon4.3.3にアップデートすることにしました。

この記事はインストール時の作業メモです。何の面白みもない。
地味~に引っかかったポイントがあるので、その記録も兼ねて。

二段階アップデート

メジャー(マイナー?)バージョンアップは急いでもロクなことは起きないので、
4.2.10→4.3.0→4.3.3の2段階アップデートとした。

あと変に不整合とか起きても悲しいので、Mastodonのシステムは完全に止めておいた。

1段目が一番大変だった。
2段目はいつも通りスムーズにアップデートできた。

4.2系から4.3.0へのアップデート

Release v4.3.0 · mastodon/mastodon
Upgrade overviewThis release contains upgrade notes that deviate from the norm:‼️ Requires new encryption secrets enviro...

リリースノート。

毎回うっかり忘れるけど、リリースノートの Upgrade notes にアップデート方法のコマンドが全部載っているので、それに従えば問題ない。

Ruby・PostgreSQLバージョン確認とRubyアップデート

今回は注意書きが多いけど、とりあえずRubyとPostgreSQLのバージョンだけ気にしておいた。

PostgreSQLのバージョンはすでに17系だったので問題なしとしてスルー。
Rubyも問題なかったんだけど、念のため以下コマンドでアップデートした。
公式のDockerなしインストール手順に従っている場合、これで最新のRubyになるはず。

sudo su - mastodon
cd ~/live/

# 事前確認
ruby -v

pushd ~/.rbenv/plugins/ruby-build && git pull && popd
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install

# 事後確認
ruby -v

Yarnアップデート

Yarn 1系からYarn 4系に乗り換えないといけない。

これが一番の落とし穴だった。Yarnに全く詳しくないので、迷った~~。

何回やっても1系しか入らないな~って思ってたら、
Mastodonインストール時yarn set version classic をしていたのが原因だった。
この記事はもう古い。

というわけで、それの是正も込みで、これで解決。

# mastodonユーザーではなく、一般ユーザーまたはrootで叩く
corepack enable
yarn set version stable

# ここからmastodonユーザー
sudo su - mastodon
cd ~/live/
corepack prepare

# 確認
yarn --version

このあとはいつものバージョンアップと同じで、これも叩く。

bundle install
yarn install --immutable

DB暗号化

Active RecordというRoRの機能でDBを暗号化するらしい。
そのために暗号化キーを発行してもらい、それを.env.production に設定する必要があるとのこと。

# mastodonユーザー
cd ~/live/
RAILS_ENV=production bin/rails db:encryption:init

Add the following secret environment variables to your Mastodon environment (e.g. .env.production)… というメッセージと共に、

ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY と、
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT と、
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY が表示されるので、

触らないように気を付けながらコピーして、 ~/live/.env.production の最後の行に追記する。
なお、暗号鍵なので、一度設定したら二度と変えてはいけない。

プリコンパイルとlibvips関係

バージョンアップでいつもやるやつ

# mastodonユーザー
cd ~/live/
RAILS_ENV=production bundle exec rails assets:precompile

今回のバージョンアップノートに
「画像処理にImageMagicじゃなくてlibvipsを使えるようにするよ!
希望する人は環境変数を足してね!」と書いてあって唆されたので、
事前に MASTODON_USE_LIBVIPS=true を設定しておいたのですが…
それが原因でうまくいかず。

よく読むと libvips 8.13以降を入れないといけないのですが、
調べたところ、Ubuntu22.04以前のバージョンでは、
aptでインストールできるlibvipsは8.11まで

素直にインストールすると、libvipsのバージョンが古いよと言われてprecompileが通りませんでした。

libvipsをローカルでビルドすればいいんですが…
億劫なのと、ImageMagicが即座に廃止されるわけでもなさそうなので、
MASTODON_USE_LIBVIPSを削除してプリコンパイルしなおしました。

DBマイグレーションと起動

今回はDBマイグレーションが2段階。
旧バージョン起動中に叩くマイグレーションと、新バージョン起動後に叩くマイグレーションがあるようです。

# mastodonユーザー
cd ~/live/
# 事前マイグレーション
SKIP_POST_DEPLOYMENT_MIGRATIONS=true RAILS_ENV=production bundle exec rails db:migrate

# 今回自分は事前に全部止めていたので全部起動する
sudo systemctl start mastodon-{web,sidekiq,streaming}

# 事後マイグレーション
RAILS_ENV=production bundle exec rails db:migrate

4.3.0から4.3.3へのアップデート

こちらの内容が、普通のマイナー(ビルド?)バージョンアップ手順です。

sudo su - mastodon
cd ~/live/
git fetch

# ↓restoreがいるかどうかは環境次第 うちはいる
git restore .

git checkout v4.3.3
bundle install
yarn install --immutable
RAILS_ENV=production bundle exec rails assets:precompile

# mastodonユーザーから抜ける
exit

sudo systemctl restart mastodon-{web,sidekiq,streaming}

こちらはスムーズでした。

おわり

もうちょっと頻繁に更新しないとな~と思いつつ、手が回ってませんでした。

おひとりさまサーバーとはいえ、たまにはメンテナンスしてあげなきゃ。

コメント

タイトルとURLをコピーしました