Updation - kmycode/mastodon GitHub Wiki

Mastodon(kmyblue)を新しいバージョンにアップデートする

以下に紹介するのはkmyblueフォークのアップデート手順です。Mastodon本家がアップデートしても、kmyblueをすぐにアップデートできるわけではありません。kmyblue独自のリリースが必要なので、数日くらい待ってください。(kmyblueにはMastodon本家由来のアップデートチェック機能が搭載されていますが、アップデート確認先はデフォルトでkmyblueのほうを向いていますのでご安心ください)

アップデートするバージョン番号を控えておきます

sudo su - mastodon
cd live
git fetch --tags

# LTSをアップデートしたい場合、バージョン名の後に「-lts」がつきます
git checkout kb5.0-lts

# LTSではない最新バージョンにアップデートしたい場合
git checkout kb6.0

# なんかエラーが出る時はこれを試してから再チャレンジ
git stash push      <-- ソースをいじったとか心当たりのある人向け。後でgit stash popで戻せます
git reset --hard @  <-- 心当たりのない人向け

上で新しくなるのはソースコードだけです。サーバーの再起動、場合によってはライブラリのアップデートやアセットのプリコンパイルが必要です。リリースノートも参照して、必要な作業を特定してください。

以下、アップデート作業で使用する代表的なコマンドです。これ以外にも別途、リリースノートでコマンドが指定されている場合があります。

# とりあえず最初にサーバー止める
sudo systemctl stop mastodon-web mastodon-sidekiq

# Rubyパッケージアップデート
bundle install

# JSパッケージアップデート
yarn install

# DBマイグレーション
RAILS_ENV=production bin/rails db:migrate

# プリコンパイル
# うまくいかない場合(エラーは出ないのにWeb表示が崩れる)はclobberしてからprecompile
# それでもうまくいかない場合はsudo systemctl stop mastodon-webしてから試す
# それでもうまくいかない場合はサーバーOSを再起動してから試す
RAILS_ENV=production bin/rails assets:clobber # プリコンパイルがうまくいかない場合
RAILS_ENV=production bin/rails assets:precompile

# サーバー再起動
sudo systemctl start mastodon-web mastodon-sidekiq
sudo systemctl restart mastodon-streaming

また、以下にそうそう使わないコマンドを置いておきます。

# アップデート後、Webの表示がおかしい時に確認する
journalctl -r -u mastodon-web

# アップデート後、Sidekiqでエラーが出る時に確認する
# エラー自体は、管理者のユーザー設定画面のメニューに「Sidekiq」が出るので、そこから調べることができます
journalctl -r -u mastodon-sidekiq

# Rubyのバージョンアップ
# たまにgitリポジトリのpullが必要だと言われることがあるので
# その時は画面に書いてあるコマンドを実行する
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 3.3.0
rbenv global 3.3.0

# 動作がおかしい時、変なエラーが出る時、いっぺん試してみる
RAILS_ENV=production bin/rails cache clear

# 検索機能の変更を伴うアップデートの時
# ElasticSearchサーバーを移転した時
RAILS_ENV=production bin/rails search deploy

# 以下は、kmyblue独自機能である検索許可を考慮した上で、
# 本家Mastodonよりも広い範囲の投稿を取り込みます。
# ただし処理に非常に時間がかかります。
# 必要に応じて「--from 2023-09-01 --to 2023-09-10」といったオプションを検討してください
RAILS_ENV=production bin/rails search deploy --full true

# yarn installでbufferutil、utf-8-validateがエラーになる場合
sudo npm update -g node-gyp

# SSL証明書の更新
# certbotでSSL証明書を取得した場合、90日ごとに行う必要があります
# 多くの人はCronで自動化しているようです
sudo certbot renew