
Nextcloud 23 -> 30 のメモ
目次
大分前に以下のような記事を書いた。
Dropbox 代替の Nextcloud を ConoHa VPS で使用する – もばらぶエンジニアブログ
その後も、細々と仕事用のファイル置き場に使っていて、画面からアップグレード出来るときはしていたんだけど、バージョン23で止まっていてそこからしばらく放置していた。
今回、時間を取ってバージョンアップしたので、そのメモ。
バージョンアップの方法
画面からやる方法
基本的にはボタンを押すだけで済む。ただし、多分、以下のような場合にはこのボタンが表示されない
- 現在の PHP バージョンは、新しいバージョンの Nextcloud ではサポートされていない
- 現在使っている App (Nextcloud におけるプラグインのようなもの)で、新しいバージョンの Nextcloud ではサポートされていないものがある(※)
※: Nextcloud のバージョンによって挙動が異なるようで、以前は Nextcloud のバージョンを上げると互換性のない App は勝手に無効化された
コマンドからやる方法
こんな感じ。ユーザー名は Ubuntu とかだと www-data
だと思う。
sudo -u apache php updater/updater.phar
サポートされている PHP バージョン
以下のページに簡潔にまとまっている。
Releases and PHP versions · nextcloud/server Wiki
環境
- ConoHa VPS
- Rocky Linux 8.10
- PHP 7.3 (作業開始時点)

手順のメモ
PHP 7.3 -> 7.4 & 23 -> 24
Nextcloud 24 では PHP 7.3 がサポートから外された。そのため、24へのアップデートボタンが表示されていなかった。
PHP は Remi を使っていたので、以下に従ってまずは PHP 7.4 に上げた。
Install PHP 7.4 on CentOS, RHEL or Fedora – Remi’s RPM repository – Blog
コマンドは以下の通り。
dnf module reset php
dnf module install php:remi-7.4
ちなみに、一気に8系に上げてしまうと、今度はインストール済の Nextcloud 23 が動かなくなってしまう。
PHP 7.4に上げた後、画面から24に上げた。
24 -> 25
画面から上げた。
PHP 7.4 -> 8.1 & 25 -> 26
Nextcloud 26 で PHP 7系のサポートが終了したので、まずはPHP 8.1に上げる。
dnf module reset php
dnf module install php:remi-8.1
その後、画面から26に上げようとしたが、何度やってもファイルのダウンロードのところでエラーになる。多分、Nextcloud のフロントエンドから API を呼び出している部分のタイムアウト設定が短いのだと思う。諦めて以下のコマンドでアップデート。
cd /path/to/nextcloud
sudo -u apache php updater/updater.phar
26 -> 27 & 27 -> 28
26 -> 27, 27 -> 28どちらも、25 -> 26と同じ所でエラーとなるので、コマンドラインでアップデート。
28にアップデートした後、画面で警告が出ていたので、画面の指示に従って以下のコマンドを実行。
sudo -u apache ./occ maintenance:repair --include-expensive
28 -> 29 & 29 -> 30
画面上で問題無くアップデートできた。
が、30に上げた後、管理画面からログアウトさせられた。理由としては、認証で使っている External user authentication app (プラグインのようなもの)が Nextcloud 30 には対応していないため、無効化されたため。
とりあえず、外部認証ではない通常の管理者ユーザーでログインし直した。
External user authentication (user_external) が放置されている問題
External user authentication とは
Nextcloud は、標準では内部のデータベースにユーザー情報を保存するが、外部のユーザー情報を使う事も可能。LDAP とかは標準機能に組み込まれているけど、IMAP, SMB, FTP などのユーザーアカウント情報を使いたい場合にこの機能を使う。ソースは以下。
nextcloud/user_external: 👥 External user authentication methods like IMAP, SMB and FTP
自分の場合は、とある業務で、ユーザーにメアドと Nextcloud アカウントだけ渡せば良いという状況があり、その時にメアドはレンタルサーバーでメアドを作成し、Nextcloud はそのメールサーバーに認証しに行く設定とした。
PR は出ているが不完全
さて、この機能だが、Nextcloud 30 はサポートされていなかった。その後30には対応したが、Nextcloud 31が出たら同じ問題が発生した。
30への対応に必要な修正は、バージョン番号の修正だけだった模様。
Make NC30 compatible by ervee · Pull Request #261 · nextcloud/user_external
31への対応も PR が出ている。
Make NC31 compatible. by beanjammin · Pull Request #273 · nextcloud/user_external
ただ、コメントにあるとおり、それ以外にも修正が少し必要らしい。とはいえ、そこまで大きな修正ではないはず。
メンテナーが忙しいのか、動きが遅い
先ほどの PR に別のコメントがあり、この機能のメンテナーが忙しいのか、放置に近い状態になっている。
コントリビュートしたい気もするけど、プロセスがよく分からない。OSS プロジェクトは、そういったところも大事だと思う。
まとめ
Nextcloud のバージョンアップ方法を備忘録的に書いた。
自分たちが使っている External user authentication app というものが Nextcloud の新しいバージョンに対応していなくて、今後問題となりそう。社内のユーザー認証は整理しないといけないなと思っている。
コメントを残す