NextCloudPiのバージョンアップ

先日、Raspberry Pi OS + Nextcloud -> NextCloudPi にしてから、ますます Nextcloud 生活が順調です。

そんな中、何気なく管理画面を空けてみたら、バージョンアップのお知らせが!
(今まで、都度入れ替えてしまっていたのでバージョンアップしたことがありませんでした)。

  • 19.0.2 -> 19.0.4 へのバージョンアップのお知らせ

目次

バージョンアップ

早速、バージョンアップすることにしました。

準備

管理画面からバージョンアップの準備をします。

アップデーターを開く

管理画面の左ペイン 概要 にある、水色ボタン アップデーターを開く をクリックすると、更新画面が開きます。

Start update

画面にある Start update ボタンを押下すると、バージョンアップ処理が始まります。
※画面上に、順に実行される処理の大枠が書いてあるので、分かりやすく親切。

ダウンロード中にエラーになりました!?
Curl error: Failed writing body (12288 != 16384)

確認してみたら、データディレクトリが一杯になっていました(空き容量 0)。

$ df -lh 
/dev/sdb1        466M  171M  267M   40% /media/usb512
/dev/sda1        927M  864M     0  100% /media/usb1024

データディレクトリと同じ場所にバックアップが作成されるため(データディレクトリに)空き容量が半分以上無いとパンパンになってしまう模様。

Nextcloud を 1年半ほど稼働していますが、当初はどの程度使うのか分からなかったので、データディレクトリは 1GB の USB メモリで運用していました。

データディレクトリが 1GB しかなかったので、まぁ〜パンクしますよね・・・ということで、データのデバイスを変更することにしました。

しかたがないので、バージョンアップを中断して、データディレクトリをもう少し大きいデバイスへ変更することにしました。

データディレクトリの変更

NextCloudPi 管理画面から、データディレクトリの変更が出来ます。

  • NextCloudPi 管理画面
    {IPADDR}:4443 ※通常はポート 4443 です。

nc-datadir を開きます。

  • 左ペイン
    • CONFIG
      nc-datadir

画面を開けると、現行の設定値が表示されます(変更前:/media/usb1024/nc-datadir)。

移行したいディレクトリ /media/usb80gb/nc-datadir を入力すると、path dosen't exist と表示されてしまいました。
ディレクトリを事前に作っておかないといけないようです。

ディレクトリを作成してから入力すると path exists で OK となります。

ボタン Apply をクリックすると、設定値の変更(とデータのコピー)が始まります。

しばらく待つと、処理が完了します。 ※結構時間かかりました(500MB 程度で 15分くらい)。

[ nc-datadir ] (Tue Nov 3 09:37:15 JST 2020)
INFO: /media/usb80gb/nc-datadir is not empty. Creating backup /media/usb80gb/nc-datadir-11-03-20
Maintenance mode enabled
moving data directory from /media/usb1024/nc-datadir to /media/usb80gb/nc-datadir...
Nextcloud is in maintenance mode - no apps have been loaded

System config value tempdirectory set to string /media/usb80gb/nc-datadir/tmp
Nextcloud is in maintenance mode - no apps have been loaded

System config value datadirectory set to string /media/usb80gb/nc-datadir
Nextcloud is in maintenance mode - no apps have been loaded

System config value logfile set to string /media/usb80gb/nc-datadir/nextcloud.log
Maintenance mode disabled

上手く行かなかったら

改めて、Nextcloud 画面を空けてみると、エラーメッセージが表示されました...
データディレクトリが無効です データディレクトリの直下に ".ocdata" ファイルがあるのを確認してください。

なんかデータコピーに失敗したみたいなので、手動コピーしました。

$ sudo cp -ap /media/usb1024/nc-datadir /media/usb80gb/

cp コマンドのオプションは以下のとおり。

  • cp オプション
    -a -dR --preserve=all と同じ(可能な限り属性を維持する、シンボリックリンクをたどらない、再帰的にコピー)。
    -p パーミッション・所有者・タイムスタンプを保持したままコピーする。

権限付与

ファイルはあるのに、エラーメッセージが消えません。
データディレクトリが無効です データディレクトリの直下に ".ocdata" ファイルがあるのを確認してください。

確認すると、上位階層の権限が足りない模様。

$ sudo ls -lha /media/usb1024/nc-datadir/

drwxr-x--- 11 www-data www-data 4.0K 11月  3 09:20 .
drwxrwxrwx  4 pi       pi       4.0K  9月  5 06:27 ..
-rw-r--r--  1 www-data www-data  542  9月  4 22:22 .htaccess
-rw-r--r--  1 www-data www-data    0  9月  4 22:22 .ocdata
drwxr-xr-x  3 www-data www-data 4.0K  9月  4 22:15 .opcache

$ sudo ls -lha /media/usb80gb/nc-datadir/

drwxr-x--- 11 www-data www-data 4.0K 11月  3 09:20 .
drwx------  4 pi       pi       4.0K 11月  3 10:18 ..
-rw-r--r--  1 www-data www-data  542  9月  4 22:22 .htaccess
-rw-r--r--  1 www-data www-data    0  9月  4 22:22 .ocdata
drwxr-xr-x  3 www-data www-data 4.0K  9月  4 22:15 .opcache

元のディレクトリ権限に合わせます(0755)。

$ sudo ls -lhd /media/usb80gb/
drwx------ 4 pi pi 4.0K 11月  3 10:18 /media/usb80gb/

$ sudo chmod 0755 /media/usb80gb/

$ sudo ls -lhd /media/usb80gb/
drwxr-xr-x 4 pi pi 4.0K 11月  3 10:18 /media/usb80gb/

バージョンアップ(再度)

無事、画面表示されたので NextCloudPi 管理画面で Start update ボタンをクリックして更新をかけます。

メンテナンスモード

処理後半で、メンテナンスモードを維持するか否か確認されます。

  • Keep maintenance mode active?
    • Yes (for usage with command line tool)
      はい(コマンドラインツールで使用する場合)
    • No (for usage of the web based updater)
      いいえ(Webベースのアップデーターの使用用)

※私は(画面上で完結したいので)いいえ をクリックしました。

処理完了

Go back to your Nextcloud instance to finish the update ボタンをクリックして、Nextcloud アップデート画面に遷移します。

  • Done
    • Go back to your Nextcloud instance to finish the update
      Nextcloudインスタンスに戻って更新を完了します

アップデートを開始

上記のボタン Go back to your Nextcloud instance to finish the update をクリックすると、下記画面が表示されます。
アップデートを開始 ボタンをクリックして、処理を開始します。

準備は終わっているからでしょうか。さほど時間がかからずに終了しました。

メンテナンスモードに移行した後、しばらく待ちます。

メンテナンスモードが解除されない場合

更新処理が完了しても、メンテナンスモードが解除されないことがあるようです。 ※私がそうでした。

メンテナンスモード
このサーバー Nextcloud は現在メンテナンスモードです。しばらくお待ちください。 この画面は、サーバー の再起動後に自動的に更新されます。

このメッセージが引き続き、または予期せず現れる場合は、システム管理者に問い合わせてください。

確認

更新が終わっているかログ updater.log を見て確認してみます。
※ファイルは、データディレクトリ直下にあります。

$ sudo cat /media/usb80gb/nc-datadir/updater.log | grep endStep
2020-11-03T09:20:42+0900 pL2JLc6ONr [info] endStep("1")
2020-11-03T09:20:42+0900 9ZOxzmfP2T [info] endStep("2")
2020-11-03T09:21:45+0900 FzDkw6Sfmv [info] endStep("3")
2020-11-03T10:49:05+0900 H54VR5bPXd [info] endStep("1")
2020-11-03T10:49:05+0900 zSZ0fYHJIF [info] endStep("2")
2020-11-03T10:50:16+0900 iTWdNqsVq3 [info] endStep("3")
2020-11-03T10:51:01+0900 pRRN9ZaBQ8 [info] endStep("4")
2020-11-03T10:51:04+0900 CZXHQmqCcG [info] endStep("5")
2020-11-03T10:51:22+0900 ENOBKADbqO [info] endStep("6")
2020-11-03T10:51:22+0900 Co3jfoF3R0 [info] endStep("7")
2020-11-03T10:51:22+0900 dz9K5TztTP [info] endStep("8")
2020-11-03T10:51:27+0900 yALjQTxodJ [info] endStep("9")
2020-11-03T10:52:44+0900 Miyg3bTZLa [info] endStep("10")
2020-11-03T10:53:13+0900 JLfidSd0p1 [info] endStep("11")
2020-11-03T10:53:13+0900 THuhPyZg4b [info] endStep("12")

12ステップまで完了していれば OK な様です。

なお、ログファイル上部にバージョンの記載があります。

$ sudo cat /media/usb80gb/nc-datadir/updater.log | head -n 18 | tail -n 7
    [version] => 19.0.4.2
    [versionstring] => Nextcloud 19.0.4
    [url] => https://download.nextcloud.com/server/releases/nextcloud-19.0.4.zip
    [web] => https://docs.nextcloud.com/server/19/admin_manual/maintenance/upgrade.html
    [changes] => https://updates.nextcloud.com/changelog_server/?version=19.0.4
    [autoupdater] => 1
    [eol] => 0

解除

設定ファイルを確認してみると、メンテナンスモードが有効(true)になっていました。

$ sudo cat /var/www/nextcloud/config/config.php | grep maintenance
  'maintenance' => true,

メンテナンスモードを無効(false)にします。

$ sudo diff -u /root/config.php /var/www/nextcloud/config/config.php
--- /root/config.php    2020-11-03 11:18:16.621975099 +0900
+++ /var/www/nextcloud/config/config.php    2020-11-03 11:18:30.411839313 +0900
@@ -42,7 +42,7 @@
   'preview_max_y' => '2048',
   'jpeg_quality' => '60',
   'overwriteprotocol' => 'https',
-  'maintenance' => true,
+  'maintenance' => false,
   'logfile' => '/media/usb80gb/nc-datadir/nextcloud.log',
   'updater.secret' => '$2y$10$O4OZYOXkGud7OdYSIFElCuMl7ZAgeMSX33bCtnHjWEUr.kHIJ7/A2',
   'loglevel' => 2,

reboot

再起動すると、Nextcloud 画面にアクセスできるようになりました。
(画面リロードではダメでした)。