Nextcloud 26から27へ ― CLIで慎重にメジャーバージョンアップ【第3回】

はじめに

前回は、ConoHa WING上で約3年間運用してきたNextcloudをアップデートする準備として、データベースを

MySQL 5.7.44-log → MySQL 8.4.4

へ移行した作業を紹介しました。

データベース移行後もすぐにNextcloud本体のアップデートへ進まず、Nextcloud 26のまま、

  • ログイン
  • ファイル閲覧
  • アップロード
  • ファイル名変更
  • 削除
  • データベースへの書き込み

などを確認しました。

そして、新しいMySQL 8.4環境でNextcloud 26が正常に動作していることを確認してから、いよいよ今回、

Nextcloud 26.0.13 → Nextcloud 27.1.11

へのメジャーバージョンアップを行いました。

今回もこれまでと同じく、

ChatGPTに相談 → 私自身が実行 → 結果をChatGPTに伝える → 一緒に確認 → 次へ進む

という方法で、一工程ずつ進めました。


まず現在の状態を再確認

アップデートを始める前に、現在の環境をもう一度確認しました。

作業時点では、

  • Nextcloud:26.0.13
  • PHP CLI:8.2.31
  • MySQL:8.4.4
  • MySQL移行後のNextcloud動作確認:完了済み

という状態でした。

まずPHPを確認します。

php -v

続いてNextcloudの状態を確認しました。

php occ status

ここでNextcloudが26.0.13であることや、データベースアップグレードが保留になっていないことなどを確認しました。

前回MySQLを変更したばかりなので、

「データベースが新しくなった直後の正常な状態」

を確認してから次へ進んでいます。


Nextcloud 27へ進む前に、もう一度バックアップ

第2回でもデータベースのバックアップを取得しましたが、Nextcloud本体を変更する前に、改めて復旧ポイントを作りました。

今回はデータベースだけではなく、Nextcloudのディレクトリ全体もSynology NASへバックアップしました。

Nextcloudをメンテナンスモードにした状態で、Synology側からConoHa WINGへSSH接続し、rsyncを利用して取得しています。

実際のサーバー名、アカウント名、ディレクトリ構成などはセキュリティ上、公開していません。

今回取得したNextcloud全体のバックアップは約20.32GBでした。

rsyncがエラーなく終了したことを確認し、さらにファイルへの書き込みが行われない状態で、最終的なデータベースdumpも取得しました。

圧縮後のデータベースバックアップは約6.9MBでした。

つまり、Nextcloud 27へ進む直前の時点で、

  • Nextcloud本体
  • データディレクトリ
  • 設定ファイル
  • アプリ関連ファイル
  • MySQL 8.4のデータベースdump

を含む復旧ポイントを別のストレージに確保しました。

ここでも、

「アップデートに成功すること」より「失敗しても戻せること」

を先に確認しています。


Web画面ではなくCLIからアップデート

今回のNextcloudアップデートでは、ブラウザの管理画面ではなく、SSHでConoHa WINGへ接続してコマンドラインから作業しました。

Nextcloudのインストールディレクトリへ移動した後、Nextcloudに付属するCLIアップデーターを利用しました。

php --define apc.enable_cli=1 updater/updater.phar

今回はCLI実行時にもAPCuを有効にした状態でアップデーターを動かしています。

アップデーターを実行すると、

現在:

26.0.13

更新先:

27.1.11

と表示されました。

stable channelのNextcloud 27.1.11が選択されていることを確認してから作業を続けました。

アップデーターでは、

  • 更新ファイルのダウンロード
  • ダウンロード内容の検証
  • 既存コードの置き換え
  • 新しいコードの配置
  • occ upgrade
  • データベーススキーマの更新

などが順番に実行されました。


Nextcloud本体だけでなく、アプリも確認

Nextcloudのメジャーバージョンを上げる際に注意が必要なのが追加アプリです。

今回の環境では、Nextcloud本体以外にも複数のアプリを利用していました。

アップデート中には、Nextcloud OfficeやTalkなど一部のアプリを一時的に無効化し、Nextcloud 27に対応するバージョンへ更新した後、再び有効化しました。

MailやOneDrive連携アプリについても、この時点ではNextcloud 27対応版への更新と動作を確認しました。

ここでも、

「Nextcloud本体が27になったから終了」

とはせず、普段利用しているアプリまで確認しています。

※この記事はNextcloud 27へのアップデート時点の記録です。その後のアップデートではOneDrive連携アプリで問題が発生したため、現在は同アプリを無効化しています。この点については、必要に応じて別の記事で紹介したいと思います。


アップデート後も、すぐには通常利用へ戻さない

アップデーターによる処理が完了しても、すぐに通常利用状態には戻しませんでした。

メンテナンスモードを維持したまま、まず状態を確認しました。

php occ status

ここでNextcloudが、

27.1.11

になっていることを確認しました。

さらにコアファイルの整合性を確認します。

php occ integrity:check-core

この確認では問題は検出されませんでした。


データベースの状態も確認

Nextcloudではアップデート後、データベースに不足しているインデックスなどが見つかることがあります。

そこで次のコマンドも実行しました。

php occ db:add-missing-indices

今回、この確認によって不足していたインデックスが一つ追加されました。

続いて、

php occ db:add-missing-primary-keys

さらに、

php occ db:add-missing-columns

も実行しました。

不足しているPrimary Keyやカラムがないことを確認しました。

こうした確認を行うことで、

「画面が開くからアップデート成功」

ではなく、

Nextcloud内部のデータベース構造までアップデート後の状態になっているか

を見ることができます。


すぐにはメンテナンスモードを解除しなかった理由

今回も、一工程ずつ確認することを重視しました。

もしアップデート直後にメンテナンスモードを解除して、スマートフォンやPCのNextcloudクライアントが一斉に同期を始めた後で問題が見つかると、原因の切り分けが難しくなります。

そこで、

① Nextcloud 27への更新

occ statusで状態確認

③ コアファイルの整合性確認

④ DBインデックス等の確認

⑤ アプリの状態確認

⑥ 問題がないことを確認

という順番で進めました。


確認後、メンテナンスモードを解除

必要な確認が終わったところで、メンテナンスモードを解除しました。

php occ maintenance:mode --off

ここから、実際のWeb画面での確認へ進みました。


ブラウザから実際の操作を確認

第2回と同じように、コマンドの結果だけではアップデート完了とは判断しませんでした。

実際にブラウザからNextcloudへアクセスし、

  • ログインできるか
  • ファイル一覧が正常に表示されるか
  • ファイルを開けるか
  • アップロードできるか
  • ファイル名を変更できるか
  • 削除できるか
  • 利用している主要アプリが開くか

などを確認しました。

これらが正常に動作し、新しいデータベースエラーやコアファイルの整合性エラーも発生していないことを確認しました。

ここまで確認して、ようやく、

「Nextcloud 26から27へのアップデートは完了」

と判断しました。


Nextcloud 28が表示されても、すぐには進まない

Nextcloud 27.1.11へのアップデートが完了すると、次のメジャーバージョンであるNextcloud 28への更新が利用可能になりました。

しかし、この時点では続けてNextcloud 28へ進みませんでした。

Nextcloud 26から27へ上げたばかりです。

まず27.1.11の状態で、

  • Web画面
  • PCからのアクセス
  • スマートフォン
  • ファイル同期
  • Mail
  • Calendar
  • Contacts
  • その他の普段の操作

などを実際に使い、問題がないことを確認することにしました。

今回の一連の作業で繰り返し意識しているのが、

一度に複数の大きな変更をしない

ということです。

26から27へ上げてすぐに28へ進み、そこで問題が発生すると、

「27へのアップデートに問題があったのか」

それとも、

「28へのアップデートが原因なのか」

が分かりにくくなります。

そのため、一つのバージョンを正常な状態として確認してから、次へ進むことにしました。


今回使った主な確認コマンド

今回使用した主なコマンドをまとめると、次のようになります。

現在の状態確認:

php occ status

CLIアップデーター:

php --define apc.enable_cli=1 updater/updater.phar

コアファイルの整合性確認:

php occ integrity:check-core

不足インデックスの確認・追加:

php occ db:add-missing-indices

不足Primary Keyの確認・追加:

php occ db:add-missing-primary-keys

不足カラムの確認・追加:

php occ db:add-missing-columns

最後にメンテナンスモードを解除:

php occ maintenance:mode --off

実際には、これらをまとめて一気に実行したわけではありません。

一つ実行 → 結果確認 → ChatGPTに結果を伝える → 次へ進む

という方法を取りました。


ChatGPTと一緒に作業して感じたこと

今回のNextcloud 27へのアップデートでは、第1回、第2回で準備してきたことがかなり役立ちました。

特に大きかったのは、

「何を実行するか」だけではなく、「どこまで確認できたら次へ進んでよいか」を相談できること

です。

アップデート自体は、コマンドを実行すれば進みます。

しかし本番サーバーでは、

この表示は正常なのか?

この警告は無視してよいのか?

ここでメンテナンスモードを解除してよいのか?

もうバックアップを取り直した方がよいのか?

といった判断が何度も必要になります。

その都度、実際の出力をChatGPTへ伝え、一緒に確認しながら進めました。

AIがあることで作業のハードルはかなり下がったと思います。

ただし、今回も、

AIに言われたコマンドをそのまま連続して実行する

という使い方はしていません。

重要なのは、

実行するのは自分

結果を確認するのも自分

判断に迷ったら止まる

ということだと思います。


第3回のまとめ

今回は、

Nextcloud 26.0.13

から、

Nextcloud 27.1.11

へのメジャーバージョンアップを行いました。

作業の流れは、

現在の状態を確認する

Nextcloud全体とデータベースをバックアップする

別ストレージ側のバックアップを確認する

CLIアップデーターを実行する

Nextcloud 27.1.11へ更新する

アプリの互換性を確認する

occでNextcloudの状態を確認する

コアファイルの整合性を確認する

データベースのインデックス等を確認する

メンテナンスモードを解除する

ブラウザで実際の操作を確認する

という流れでした。

そして今回も、

分からない結果が出たら、そこで止まる。

このルールを守りながら進めました。

Nextcloudのように実際の業務データを保管しているシステムでは、アップデートを早く終わらせることよりも、

問題が起きたときに戻せる状態を維持しながら、一段ずつ進めること

の方が重要だと感じています。


Nextcloudアップデート編は、ここで一旦一区切り

実際のNextcloudのアップデート作業は、この後も続いています。

Nextcloud 27から28へ、さらに29へと順番にアップデートを進めました。

基本となる考え方は今回までと同じで、

バックアップ → 一段階ずつ変更 → コマンドで確認 → 実際の操作で確認

を繰り返しています。

そのため、このアップデート記録シリーズはいったん第3回で一区切りとしたいと思います。

今後、アップデート中に発生したトラブルや、バックアップ、セキュリティ、アプリの互換性など、個別に紹介する価値がある内容については、改めて記事にしていく予定です。

Namiki AssociatesではNextcloud以外にも、古いPCやMacへのLinux Mint導入、Synology NAS、Tailscale、Raspberry PiやOdroidなどを組み合わせながら、小規模な会社なりのIT環境を整えてきました。

そうした実際のIT環境についても、今後少しずつ紹介していきたいと思います。


免責事項

この記事は、Namiki Associatesで実際に使用しているConoHa WINGおよびNextcloud環境で行った作業をもとにした記録です。

Nextcloud、PHP、MySQL、ConoHa WINGなどの仕様や対応バージョンは変更される可能性があります。また、サーバー環境によって必要な手順や使用できるコマンド、権限などは異なります。

同様の作業を行う場合は、Nextcloud、MySQL、ConoHa WINGなどの最新の公式情報を確認し、データベース、設定ファイル、データディレクトリなどのバックアップを取得したうえで、ご自身の環境に合わせて慎重に作業してください。

また、ChatGPTを含むAIの回答が常に正しいことを保証するものではありません。重要なサーバー操作では、AIの回答をそのまま無条件に実行するのではなく、バックアップを取得し、一つずつ実行結果を確認しながら作業することをおすすめします。

\ 最新情報をチェック /

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA