Nextcloud、Webからアップグレードすることはできますが下位のメジャーバージョンにダウングレードすることはできません。

アップグレードの失敗ならびにアプリの相性などで元のバージョンに戻したい場合は以下のように切り戻しを行います。

(今回の筆者のパターンは前者です)

前提

アップグレード前のnextcloudのDBを取っていること

これがなければそもそも成り立ちません。この方法で日次のバックアップを取っていました

取っていなかった場合は別のサイトをお探しください。

nextcloud_backup.sql等のSQLを任意のディレクトリに格納してください。

環境

  • Ubuntu 24.04
  • Apache2.4
  • php 8.3
  • MySQL 8.0.39
  • Nextcloud 29.0.8

特記事項

データ格納ディレクトリを別パーティションにしています。

さっくりとした手順

  1. 切り戻し前のプログラムを退避させます。
  2. 切り戻しを行いたいプログラムをダウンロードします。
  3. プログラムを解凍して再配置します。
  4. コンフィグやアプリデータなどを再配置します。
  5. DBをリストアします。
  6. 切り戻しを確認します。

Nextcloudの退避

  • プログラム退避
sudo mv /home/www-data/nextcloud /path/to/backup/directory/nextcloud.$(date +%Y%m%d)

退避前、退避先はそれぞれ自分の環境に合わせます。

  • 退避確認
ls -l /path/to/backup/directory/nextcloud.$(date +%Y%m%d)

退避先にディレクトリファイル一式があることを確認します。

切り戻し対象前のプログラムをダウンロード

  • 作業用ディレクトリに移動
cd /hoge && pwd

任意のディレクトリを指定します。

  • wgetによるダウンロード
wget https://download.nextcloud.com/server/releases/nextcloud-29.0.8.zip

切り戻しを行う(アップグレード前)のバージョンを指定します。

  • 解凍
unzip nextcloud-29.0.8.zip
  • 所有者変更
sudo chown -R www-data:www-data nextcloud

Nextcloud(Webサービス)実行ユーザーに合わせます。

  • Nextcloud再配置
sudo mv nextcloud /home/www-data/

元々Nextcloudが配置されていたディレクトリに再配置します。

  • 再配置確認
ls -l nextcloud /home/www-data/nextcloud

ディレクトリ・ファイル一式があることを確認します。

Nextcloud復旧

  • 退避させた元のNextcloudからコンフィグをコピー
sudo cp -pi /path/to/backup/directory/nextcloud.$(date +%Y%m%d)/config/config.php /home/www-data/nextcloud/config/
  • 退避させた元のNextcloudからアプリ一式をコピー
sudo -u www-data cp -r /path/to/backup/directory/nextcloud.$(date +%Y%m%d)/apps/* /home/www-data/nextcloud/apps/
  • 退避させた元のNextcloudからデータ一式をコピー
sudo -u www-data cp -r /path/to/backup/directory/nextcloud.$(date +%Y%m%d)/data/* /home/www-data/nextcloud/data/

※データ格納ディレクトリを別のパーティションにしている場合は不要です。ディスクサイズによってはcp -rの代わりにmvを用いてください。

  • DBからリストア
mysql -u nextcloud -p nextcloud < /path/to/directory/nextcloud_backup.sql

-u nextcloudのDBユーザ名-p nextloudDB名です。バックアップのSQLファイルは自分の環境に合わせます。

  • Webサービス再起動(Apacheの場合)
sudo systemctl restart apache2.service
  • Webサービス再起動(nginxの場合)
sudo systemctl restart nginx.service

切り戻し確認

  1. Nextcloudに管理者権限でログインします。
  2. バージョンが切り戻し前に戻っていることを確認します。
  3. 主要な機能が使えることを確認します。

切り戻し後のデータ削除(必要に応じて)

  • 退避させたプログラムの削除
sudo rm -rf /path/to/backup/directory/nextcloud.$(date +%Y%m%d)
  • バックアップのSQLファイルの削除
rm /path/to/directory/nextcloud_backup.sql