リモート開発メインのソフトウェア開発企業のエンジニアブログです

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 (作業開始時点)
Moba Pro

手順のメモ

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 の新しいバージョンに対応していなくて、今後問題となりそう。社内のユーザー認証は整理しないといけないなと思っている。

← 前の投稿

次の投稿 →

WP から始まる WordPress プラグイン名

コメントを残す