Nextcloud 18から19にbeta channel でアップグレード

Nextcloud 19が06/03にリリースされました．

Nextcloud Hub brings productivity to home office – Nextcloud

未だ18からのアップデートは来ていませんが一時的に beta channel にして 19 にアップグレードしてみました．

$ sudo -u www-data php ./updater/updater.phar
Nextcloud Updater - version: v16.0.3-3-ga0c2b25 dirty

Current version is 18.0.5.

No update available.

Nothing to do.

先ずはバックアップをとっておきます．Nextcloudのディレクトリ以下とデータベースをバックアップしておけば最悪データが壊れたり消えてしまって復元できます．データが多いと時間がかかるので日頃取得して差分バックアップするようにしておくといいです．

次にscript コマンド等でログを取っておきます．リモートでssh経由の場合などはGNU screen やtmux などで切断されても復帰出来るようにしておきます．

準備が出来たら先ずは Nextcloud を18 の最新にしておきます．

$ cd $(NEXTCLOUDPATH}
$ sudo -u www-data php ./occ app:update --all
$ sudo -u www-data php ./updater/updater.phar
$ sudo -u www-data php ./occ app:update --all

Nextcloud の update channel を stable から beta にします．

$ sudo -u www-data php ./occ config:system:set updater.release.channel --value 'beta'
System config value updater.release.channel set to string beta

channel はすぐには反映されません．今回は20分ほどで反映されました数時間掛かることもあるよう．
19 が降りてきたら後は普通にアップグレードします．

$ sudo -u www-data php ./updater/updater.phar
Nextcloud Updater - version: v16.0.3-3-ga0c2b25 dirty

Current version is 18.0.5.

Update to Nextcloud 19.0.0 available. (channel: "beta")
Following file will be downloaded automatically: https://download.nextcloud.com/server/releases/nextcloud-19.0.0.zip
Open changelog ↗

Steps that will be executed:
[ ] Check for expected files
[ ] Check for write permissions
[ ] Create backup
[ ] Downloading
[ ] Verify integrity
[ ] Extracting
[ ] Enable maintenance mode
[ ] Replace entry points
[ ] Delete old files
[ ] Move new files in place
[ ] Done

Start update? [y/N] y
Info: Pressing Ctrl-C will finish the currently running step and then stops the updater.

[✔] Check for expected files
[✔] Check for write permissions
[✔] Create backup
[✔] Downloading
[✔] Verify integrity
[✔] Extracting
[✔] Enable maintenance mode
[✔] Replace entry points
[✔] Delete old files
[✔] Move new files in place
[✔] Done

Update of code successful.

Should the "occ upgrade" command be executed? [Y/n]
:
:
Keep maintenance mode active? [y/N]
Maintenance mode disabled

Maintenance mode is disabled

Nextcloud 19 になりました :)

$ sudo -u www-data php /var/www/files.matoken.org/updater/updater.phar
Nextcloud Updater - version: v16.0.3-3-ga0c2b25 dirty

Current version is 19.0.0.

No update available.

Nothing to do.

channel を stable に戻しておきます．一旦19に上げていれば18に戻りません．

$ sudo -u www-data php /var/www/files.matoken.org/occ config:system:set updater.release.channel --value 'stable'
System config value updater.release.channel set to string stable
$ sudo -u www-data php /var/www/files.matoken.org/updater/updater.phar
Nextcloud Updater - version: v16.0.3-3-ga0c2b25 dirty

Current version is 19.0.0.

No update available.

Nothing to do.

https://$NEXTCLOUDURL/index.php/settings/admin/overview の「セキュリティ＆セットアップ警告」を確認するといくつかメッセージが出ているので修正します．

セキュリティ＆セットアップ警告
サーバーのセキュリティとパフォーマンスにとって重要なことは、すべてが正確に設定されていることです。あなたの助けとなるよう、Nextcloudでは一部の自動チェックを行っています。詳細な情報は、リンク先のドキュメントを参照してください。

セットアップに関して警告がいくつかあります。
データベースにいくつかのインデックスがありません。 大きなテーブルにインデックスを追加すると、自動的に追加されないまでに時間がかかる可能性があるためです。 “occ db：add-missing-indices”を実行することによって、インスタンスが実行し続けている間にそれらの欠けているインデックスを手動で追加することができます。 インデックスが追加されると、それらのテーブルへのクエリは通常はるかに速くなります。
テーブル “oc_properties”のインデックス “properties_path_index”が見つかりません。
データベースにはオプションのカラムがいくつかありません。大きなテーブルにカラムを追加するには時間がかかるため、オプションのカラムは自動的に追加されませんでした。”occ db:add-missing-columns”を実行することで、不足しているカラムはインスタンスの実行中に手動で追加することができます。カラムが追加されると、応答性や使い勝手が改善される可能性があります。
テーブル “oc_comments” にオプションのカラム “reference_id” が存在しません。
このインスタンスには推奨されるPHPモジュールがいくつかありません。 パフォーマンスの向上と互換性の向上のために、それらをインストールすることを強くお勧めします。
bcmath
gmp
インストールガイド を再確認して、 ログ にあるすべてのエラーや警告を確認してください。

Nextcloudのセキュリティは、セキュリティスキャン でチェックしてください。

と言っても基本的にメッセージに従うだけです．

データベースにいくつかのインデックスがありません。

$ sudo -u www-data php ./occ db:add-missing-indices
Check indices of the share table.
Check indices of the filecache table.
Check indices of the twofactor_providers table.
Check indices of the login_flow_v2 table.
Check indices of the whats_new table.
Check indices of the cards table.
Check indices of the cards_properties table.
Check indices of the calendarobjects_props table.
Check indices of the schedulingobjects table.
Check indices of the oc_properties table.
Adding properties_path_index index to the oc_properties table, this can take some time...
oc_properties table updated successfully.

データベースにはオプションのカラムがいくつかありません。

$ sudo -u www-data php ./occ db:add-missing-columns
Check columns of the comments table.
Adding additional reference_id column to the comments table, this can take some time...
Comments table updated successfully.

このインスタンスには推奨されるPHPモジュールがいくつかありません。

これは環境によって少し代わります．対応パッケージを導入してhttpdを再起動して反映します．以下はDebian Buster amd64 でのパッケージ名．そしてApache httpd でホストしている場合の例です．

$ sudo apt install php7.3-bcmath php7.3-gmp
$ sudo service apache2 reload

これで「セキュリティ＆セットアップ警告」ページを再読込すると，「すべてのチェックに合格しました。」となりました :)

古いバックアップの削除

これは必須ではないのですが，この環境はディスクの空き領域が少ないのでリモートにバックアップした上で最新以外のバックアップは削除しています．以下の updater-ocws62au2wl3 部分は環境によって変わると思います．

$ rm -rf ./data/updater-ocws62au2wl3/backups/nextcloud-18.0.4.2

環境

$ dpkg-query -W php7.3 php7.3-bcmath php7.3-gmp apache2
apache2 2.4.38-3+deb10u3
php7.3 7.3.14-1~deb10u1
php7.3-bcmath 7.3.14-1~deb10u1
php7.3-gmp 7.3.14-1~deb10u1