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