自分専用クラウド Nextcloud の更新

Nextcloud 15がリリースされたのでNextcloud 14から更新してみた。
Nextcloudはマイナーバージョンの更新はウェブUIでワンクリック更新が可能だが、メジャーバージョンの更新はそこまで簡単にはなっていない。とはいえ、ある程度は自動化されているので難しくはない。 更新方法はNextcloudの公式サイトにあるドキュメントを参照。一番確実なのは自分でファイルをダウンロードして展開する方法。この記事ではそれで。

Nextcloud 15に更新 1
以前からだけど、Nextcloudはメジャーバージョンを超えた更新はワンボタンではできないみたい。

2020年3月25日追記:
この記事に書いたNextcloud15以降はメジャーバージョンを超えた更新が可能になりました。ただし、複数のメジャーバージョンを一気に飛ばして最新版にすることはできないので、15→18のようなのは無理で、15→16→17→18のようにメジャーバージョンを一つずつ更新する必要があるようです。
なお、メジャーバージョンのを超える更新ではデータベースの変更を要することが多く、それはワンボタンではできません。更新時に表示されるコマンドをNextcloudのディレクトリで実行するだけなので難しくはありませんが、LinuxではなくxBSDの場合はパッケージ(やports)でsudoのインストールが必要です。

また、Nextcloudにアプリを追加していることがあるかと思うが、過去の経験では新しいメジャーバージョンがリリースされてから、アプリがそのバージョンに対応するまで結構かかることが多いかと。利用中のアプリが新しいバージョンに対応しているか対応する開発版が出るまでは迂闊に新しいメジャーバージョンには更新しない方が良いことも。

更新作業

FreeBSDのNginx上で動かしているということもあってNextcloud本体は/usr/local/www/nextcloudに、Nextcloudのデータは/usr/local/www/nextcloud_data (今回は触る必要無し)に置いているとする。

Nextcloud本体更新の為のコマンドラインの操作
# mv /usr/local/www/nextcloud /usr/local/www/nextcloud14
# cd /usr/local/www
# wget https://download.nextcloud.com/server/releases/nextcloud-15.0.0.zip
# unzip nextcloud-15.0.0.zip
# chown -R www:www nextcloud
# cp -p /usr/local/www/nextcloud ./nextcloud14/config/config.php ./nextcloud/config/

ようするに、これまで使っていたNextcloud本体のディレクトリを退避して新しいバージョンをダウンロードして展開する。古いNextcloudの config/config.php を新しいNextcloudディレクトリにコピー。ファイル/ディレクトリのオーナーを正しく指定することだけ忘れない。

アプリについては後回しとする。

Nextcloud 15に更新 2
コマンド打ちの作業が終わったらブラウザで更新するNextcloudのトップURLを開く。 (例: https://nextcloud.example.com/)
ここまで間違っていなければ上の画像のような更新画面が表示される筈なので「アップデートを開始」ボタンを押す。

Nextcloud 15に更新 3
更新が完了するとこの画面が表示されるので「Nextcloudに進む」ボタンを押す。このとき、ボタンの上にアプリが無効だとか表示されるが基本的に無視で問題なし。

Nextcloud 15に更新 4
右上のから「 アプリ」を選択。

Nextcloud 15に更新 5
いわゆるNextcloudの標準アプリであれば、左列から「アプリバンドル」を選択。右列に表示されるアプリ名を確認してこれまで使っていたアプリの「ダウンロードして有効にする」ボタンを押す。 上の画像ではCalendar (GoogleカレンダーのようなやつのNextcloud用、Googleにカレンダーを預けたくない人に)と Contacts (Googleの連絡帳のようなやつのNextcloud用、Googleに連絡帳を預けたくない人に)をダウンロードして有効にする。
これらはCalDav, CardDAVに対応しているのでPCやスマートフォンから使うことができるのでオススメ。がとらぼの中の人はDavdroidを利用することで、Androidスマホの標準のカレンダーと連絡帳をGoogleではなくNextcloudにしているのでGoogleにはデータを預けていない。

こんな感じで公式に近いアプリはアプリリストから有効にするだけで更新前と同様にそのアプリが使用可能になる。もちろん、更新前のデータはそのまま利用可能。(この更新の仕方で問題ないか事前に確認した方が安全ではある。)
次は完全なサードパーティアプリで、しかもNextcloud 15にはまだ完全対応していないという場合。
http://apps.nextcloud.com/で目的のアプリを検索する。

Nextcloud 15に更新 6
ここではパスワード管理アプリのPasswordsをこれまで利用していたとする。2018年12月18日の時点ではPasswordsはNextcloud 15には完全対応していないが、「不安定版」とされるNightly版がNextcloud 15対応として提供されているのでダウンロードする。(ダウンロードリンクをコピーして実際のダウンロードは次の手順)

Passwordsの場合
# cd /usr/local/www/nextcloud/apps
# wget https://git-中略-/passwords.tar.gz
# tar zxvf passwords.tar.gz
# chown -R www:www passwords

wgetで目的のアプリをダウンロードして解凍してNextcloudのappsディレクトリの下に置く。ファイルのオーナーを正しく指定する。
ブラウザに戻り、一度念の為にNextcloudをログアウトして再度Nextcloudの「管理者」アカウントで再ログインする。 (でないと、インストールしたアプリがアプリリストに表示されない場合がある。)

Nextcloud 15に更新 7
再び管理者としてログインして、右上のから「 アプリ」を選択。
左列から「 無効なアプリ」を選択。
右列で有効にしたいアプリ(今回はPasswords)の「有効にする」を押す。

Nextcloud 15に更新 8
Nextcloudの管理者をログアウトしてユーザーアカウントでログインする。
Passwordsアプリを有効にしたので一番上のメニューにPasswordsタブ?が表示されている。それを押すと上の画面のようにNextcloud更新前に利用していたのと同じ状態(更新前のデータが生きた状態)で表示される。一安心。

同様にカレンダーや連絡先も確認し、異常がなければNextcolud 15への更新は完了。

おまけ

メジャーバージョンの更新では自動ですべてを完璧に完了してくれないかもしれない。
管理者でログインして右上から「設定」「概要」を選択する。少し待たされてシステムの状態を診断が完了するのを待つ。「あなたのセットアップに関するいくつかの警告があります。」が表示された場合はその下をよく読む。殆どは適切な対処方法が表示されているのでそれに従えば良い。occ hogeしろと書いてある場合はコマンドを実行する。このときoccはウェブ用のユーザーで実行しないと怒られるのでユーザーを切り替えるのをお忘れなく。

Linuxでは表示されるコマンドを実行するだけ。xBSDでは、常識的にはウェブ用システムユーザー(www)はホームディレクトリもシェルも使えない状態の筈なので一時的に変更するなりしてウェブ用ユーザーに切り替えられるようにする。

occの実行。wwwがウェブ用のシステムユーザーとする。「occ db:convert-filecache-bigint」を実行するよう指示されたとする。
$ su -
# chpass www
#Changing user information for www.
Login: www
Password: *
Uid [#]: 80
Gid [# or name]: 80
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /usr/local/www
Shell: /bin/csh
Full Name: World Wide Web Owner
Office Location:
Office Phone:
Home Phone:
Other information:
#赤字の部分を変更する。
#viエディタのキー操作なので注意。変更したら[Esc][Z][Z]で保存終了

$ su www
% cd /usr/local/www/nextcloud
% php occ db:convert-filecache-bigint
The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see http://php.net/manual/en/book.pcntl.php
Following columns will be updated:

* filecache.mtime
* filecache.storage_mtime

This can take up to hours, depending on the number of files in your instance!
Continue with the conversion (y/n)? [n] y

occはそれ自体が実行可能なコマンドではないのでphpで実行する。

終わったら再びrootになってwwwユーザーのホームディレクトリとシェルを元に戻す。FreeBSDの一般的な作法ではホームディレクトリを/nonexistent、シェルを/usr/sbin/nologinにする。

ここではchpassを使ってホームディレクトリとシェルを変更したがvipwなどでも可。

これは面倒なので一時的にでもsudoをパッケージなりports等でインストールした方が簡単。

クラウドにデータを置くのは良いが、そうしたが最後そのデータがどう使われるかどこに流出してしまうかわからない怪しい企業に個人情報を含むデータを預けるのは絶対に嫌だという場合は、やはり自分で管理する自分専用のクラウド?が良い。 個人的にはファイルをネットに置くということはしないのでそういう使い方は未だにNextcloudでも殆ど行わないが、パスワード、ブックマーク、連絡先、カレンダーが完全に自分の管理下で、しかもPCやスマホと連携して使えるというのは凄く良い。Nextcloudは今後も使い続けるつもりなのでメジャーバージョンの更新がもっと簡単になって欲しいところ。また、サードパーティのアプリの新しいバージョンへの対応が遅いのももう少しなんとか・・・というか、対応するバージョンの制限をもう少し緩くして欲しい。

関連記事: