長らく自鯖を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へのアップデート
リリースノート。
毎回うっかり忘れるけど、リリースノートの 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}
こちらはスムーズでした。
おわり
もうちょっと頻繁に更新しないとな~と思いつつ、手が回ってませんでした。
おひとりさまサーバーとはいえ、たまにはメンテナンスしてあげなきゃ。
コメント