ChatGPTと一緒にConoHa WINGの古いNextcloudを安全にアップデート【第1回】
はじめに
Namiki Associatesでは、ConoHa WING上にNextcloudを構築し、クラウドストレージとして利用しています。
Nextcloudは、自分で管理できるクラウドストレージ環境を構築できるオープンソースのソフトウェアです。
ファイル保存だけでなく、カレンダー、連絡先、メールなど様々な機能を追加でき、非常に便利です。
「このNextcloudをConoHa WINGへ導入したのは約3年前でした」
しかし、長期間運用しているうちにNextcloudのバージョンが古くなっていました。
「そろそろアップデートしなければ」
と思う一方で、すでに約20GBのデータが保存されています。
しかもNextcloudだけではなく、PHPやMySQLのバージョン、アプリの互換性なども考える必要があります。
安易にアップデートを実行して、長年保存してきたデータに問題が起きることだけは避けたいところです。
そこで今回、ChatGPT(OpenAI)に相談しながら、一つ一つ結果を確認して慎重にアップデートを進めることにしました。
このシリーズでは、ConoHa WING上で実際に行ったNextcloudのアップデートについて、成功した手順だけではなく、途中で発生した問題や、その際にどのようにChatGPTと相談して判断したのかも含めて記録していきます。
私はNextcloudの専門家ではありません
最初に書いておきたいのですが、私はNextcloudやMySQLを専門としているサーバーエンジニアではありません。
Linuxやネットワークについてはある程度触っていますが、今回のようなNextcloudの大規模なバージョンアップについて、すべての手順を自分だけで判断できるわけではありません。
そこで今回、大いに活用したのがChatGPTです。
実際の作業は、おおむね次のように進めています。
現在のNextcloudやサーバーの状態をChatGPTに伝える
↓
次に何を確認すべきか相談する
↓
教えてもらったコマンドを私自身がSSHで実行する
↓
実行結果をそのままChatGPTへ伝える
↓
その結果が正常なのか確認する
↓
問題がなければ次の作業へ進む
エラーが表示された場合は、そこで作業を止めます。
そしてエラー内容や画面をChatGPTへ見せ、
「これは何を意味しているのか」
「このまま次へ進んで大丈夫なのか」
「何を確認すればよいのか」
を相談しました。
つまり、ChatGPTにすべてを自動で任せたわけではありません。
人間が実際の操作を行い、その結果をAIと一緒に確認しながら次の判断をする。
この方法が、今回の作業では非常に有効でした。
アップデート開始時の環境
作業開始時点の環境は、おおむね次のようなものでした。
- サーバー:ConoHa WING
- Nextcloud:26.0.2
- データベース:MySQL 5.7系
- Nextcloudデータ:約18~20GB
- 同じサーバー上でWordPressも運用
- SSH接続可能
- 長期間運用している実環境
これはテスト用のNextcloudではありません。
すでに日常的に使用しているデータが入っています。
そのため今回の最大の目的は、
「できるだけ早く最新版にすること」ではなく、「現在のデータを失わずに安全にアップデートすること」
としました。
ChatGPTと決めた基本方針 ― 一気に最新版へ行かない
相談しながら最初に決めた重要な方針が、
「急がない」
ということでした。
Nextcloud 26から何世代も先のバージョンへ一気に更新するのではなく、
Nextcloud 26
↓
Nextcloud 27
↓
Nextcloud 28
というように、一つずつメジャーバージョンを上げていきます。
さらにNextcloud 26.0.2から、すぐに27へ進むのではなく、まず26系の最終リリースまでアップデートしてから次のメジャーバージョンへ進むことにしました。
少々時間はかかります。
しかし約20GBの既存データを守ることを考えれば、数時間を節約することよりも、問題が発生したときに戻れる状態を維持する方が重要です。
もう一つのルール ― 分からなければ止まる
今回、ChatGPTと作業していて特に良かったと思うのが、
「分からない状態のまま次のコマンドを実行しない」
という進め方です。
ターミナルに見慣れないメッセージが表示された場合、
「たぶん大丈夫だろう」
と判断して次へ進むことは極力避けました。
表示された結果をChatGPTへ伝え、
「これは正常ですか?」
と確認します。
必要であれば、さらに状態確認用のコマンドを実行します。
その結果も伝えてから、次へ進みます。
非常に地味な方法ですが、今回のような実際に使用しているサーバーのメンテナンスでは、この慎重さがとても重要だと感じました。
最初にやったことは「アップデート」ではなく「バックアップ」
いよいよ作業開始です。
しかし、最初に実行したのはNextcloudのアップデートではありません。
バックアップです。
Nextcloudを復旧するためには、単純に保存されているファイルだけをコピーしておけばよいわけではありません。
主に、
- Nextcloud本体
- config.phpなどの設定
- Nextcloudのデータディレクトリ
- MySQLデータベース
を考える必要があります。
特にデータベースには、Nextcloudを動作させるための様々な情報が保存されています。
そのため、データファイルだけではなく、データベースも必ずバックアップしてから作業を開始しました。
MySQLデータベースをバックアップ
ConoHa WINGへSSHでログインし、mysqldumpを利用してNextcloudのデータベースをバックアップしました。
実際のデータベース名、ユーザー名、サーバー名などはセキュリティ上公開できませんので、以下は一般化した例です。
mysqldump -h [DBサーバー] \
-u [DBユーザー名] \
-p \
--single-transaction \
--default-character-set=utf8mb4 \
[NextcloudのDB名] \
| gzip > nextcloud_backup.sql.gz
この作業も、コマンドを実行して終わりではありません。
「バックアップを作った」=「安心」ではない
ChatGPTと相談しながら確認したことの一つが、
作成したバックアップが正常なのか確認すること
でした。
例えばgzipファイルについては、
gzip -t nextcloud_backup.sql.gz
でチェックできます。
さらに、
ls -lh nextcloud_backup.sql.gz
でファイルサイズも確認しました。
バックアップファイルが存在していても、中身が壊れていたり、何らかの理由で0バイトになっていたりすれば、いざという時に役に立ちません。
今回の作業では、
バックアップを取る
だけではなく、
バックアップが正常に作成されたことを確認する
ところまでを一つの作業として考えるようにしました。
occでNextcloud自身にも状態を聞いてみる
Nextcloudにはoccというコマンドライン管理ツールがあります。
SSHが利用できる環境では非常に便利です。
例えば、
php occ status
を実行すると、Nextcloudの現在の状態を確認できます。
表示される情報には、
installed: true
version: xx.x.x
maintenance: false
needsDbUpgrade: false
などがあります。
WebブラウザでNextcloudが開けるから大丈夫、と判断するのではなく、Nextcloud自身の状態をコマンドでも確認することができます。
今回のアップデートでは、このoccに何度も助けられることになります。
config.phpの扱いには注意
Nextcloudの、
config/config.php
も非常に重要なファイルです。
ここにはデータベースへの接続情報など、Nextcloudを動かすための重要な設定が含まれています。
当然、バックアップ対象です。
一方、このファイルには外部へ公開してはいけない情報も含まれています。
そのため、このシリーズで実際のコマンドや設定例を紹介する場合でも、
- サーバー名
- データベース名
- DBユーザー名
- パスワード
- secret
- 個人を特定できる情報
などは伏せて掲載します。
ChatGPTへ画面やターミナルの情報を見せながら作業する場合も、パスワードや秘密鍵、2段階認証のバックアップコードなどの機密情報については、自分自身で注意する必要があります。
ChatGPTを使って感じたこと
今回の作業を通して感じたのは、ChatGPTは単に、
「このコマンドを入力してください」
と教えてくれるだけの存在ではない、ということです。
私にとって特に役に立ったのは、
「今の状態なら、まだ次へ進まない方がよい」
「先にバックアップを取りましょう」
「その結果を確認してから次へ進みましょう」
といった、作業手順そのものを一緒に整理できることでした。
また、コマンドを実行して予想と違う結果が出ても、その結果を見せて改めて相談できます。
従来であれば、エラーメッセージを検索して、似たような事例を探し、自分の環境にも当てはまるのか判断する必要がありました。
今回は、自分の環境と直前までの作業内容を説明したうえで相談できるため、非常に助かりました。
もちろん、AIの回答が常に正しいと考えて無条件にコマンドを実行するべきではありません。
だからこそ今回、
バックアップ → 実行 → 結果確認 → ChatGPTへ相談 → 次へ
という進め方を徹底しました。
AIに「任せる」というより、AIを技術的な相談相手として使う。
今回のNextcloudアップデートは、その良い実例になったように思います。
第1回のまとめ
まだ、この段階ではNextcloudのメジャーアップデートは始まっていません。
しかし、今回振り返ってみると、この最初の準備が一番大切だったように思います。
基本方針は次の通りです。
急いで最新版にしない。
メジャーバージョンを飛ばさない。
作業前に必ずバックアップする。
バックアップが正常か確認する。
一つ作業したら、その結果を確認する。
分からないことがあれば、そこで止まってChatGPTに相談する。
この方針で、一つずつ慎重に進めていくことにしました。
そして次の段階で、Nextcloud本体とは別の大きな課題に取り掛かります。
MySQLデータベースの移行です。
次回予告
【第2回】ConoHa WINGのNextcloudをMySQL 5.7からMySQL 8系へ移行
長期間使用していたため、Nextcloudだけではなくデータベース環境も古くなっていました。
そこで次回は、ChatGPTと相談しながら実際に行った、
MySQL 5.7系 → MySQL 8系
への移行について紹介します。
旧データベースをバックアップし、新しいデータベースへ移行し、Nextcloudの接続先を変更する。
そして、
「本当に新しいデータベースでNextcloudが正常に動いているのか?」
を一つずつ確認していきます。
途中の実際の確認方法や、ChatGPTとどのように相談しながら進めたのかについても記録する予定です。
免責事項
この記事は、Namiki Associatesで実際に使用しているConoHa WINGおよびNextcloud環境で行った作業をもとにした記録です。
Nextcloud、PHP、MySQL、ConoHa WINGなどの仕様や対応バージョンは変更される可能性があります。また、サーバー環境によって必要な手順は異なります。
同様の作業を行う場合は、Nextcloudおよび各サービスの最新の公式情報を確認し、データベース、設定ファイル、データディレクトリなどのバックアップを取得したうえで、ご自身の環境に合わせて慎重に作業してください。
また、ChatGPTを含むAIの回答についても、常に正しいことを保証するものではありません。重要なサーバー操作では、AIの回答をそのまま実行するのではなく、バックアップを取得し、一つずつ実行結果を確認しながら作業することをおすすめします。


