概要
2023年の年末にNextcloudのメンテナンスを行った時に、version26~27のアップデートで難儀したので備忘録として対策をブログに残しておく。
発生した不具合一覧
- version26にアップデートするとNextcloudが起動しなくなる
- version26にアップデートするとブラウザのアップデートメニューが利用できなくなる
- version26にアップデートするとブラウザに何も表示されない状態になる(真っ白になる)
- version26にアップデートするとログインフォームが表示されない
- version26にアップデートするとNextcloudメールが読込み中(ローディングGifの表示)から進まなくなる
- version28にアップデートするとNextcloudのプラグインの一部が動作しなくなる(互換性に問題がある)
原因と対策
version26にアップデートするとNextcloudが起動しなくなる
- 原因:
Nextcloud version26からPHP8.xが必須になっていて、version25まで対応していたPHP7.x系では動作しなくなる。
- 対策:
Ubuntu18.04/20.04系を利用している場合はPHP8.1を標準リポジトリで導入するためにはUbuntu22.04へアップグレードする必要がある。Redhat/CentOSの場合もRedHat7系ではPHP8は対応していないのでRedhat8or9系にアップグレードする必要がある。
更に注意が必要なのは、Nextcloud version25.x系ではPHP8.1までしか対応していないのでPHP8.2以降にアップグレードしてはいけない。
PHP8.1にアップグレードした後、PHP7.x系でNextcloudを動作させるために設定した値を反映させる必要がある。(php.ini, php-fpm.conf, www.conf, nginx.confなど)
version26にアップデートするとブラウザのアップデートメニューが利用できない
- 原因:
ブラウザ側からログインができなくなると、Nextcloudをブラウザからアップデートすることができない
-
対策:
NextcloudのCLI用ツール「occ」を利用してアップグレードすることができる。
※公式OCC概要概要
https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html
※公式OCC upgrade手順
https://docs.nextcloud.com/server/latest/admin_manual/maintenance/update.htmlnextcloudのインストールディレクトリへ移動して以下のコマンドでアップグレードが可能
※nextcloudの実行ユーザーが www-data の場合sudo -u www-data php ./occ upgrade
※nextcloudの実行ユーザーが apache の場合
sudo -u apache php ./occ upgrade
version26にアップデートするとブラウザに何も表示されない状態になる(真っ白になる)
version26にアップデートするとログインフォームが表示されない
-
原因:
mysqlのinnodb_buffer_pool_size ,join_buffer_size, max_allowed_packetのキャッシュが足りない
-
対策:
mysqlのconfファイルで適切なキャッシュサイズを設定する。(以下は一例なので環境に適した値を設定する)
innodb_buffer_pool_size=512MB ## 512M以上の値 join_buffer_size=64M ## 64M以上の値 max_allowed_packet=256M ## 256M以上の値
phpのヒープ領域が足りない
php.iniのmemory_limitを適切な値に設定する。
公式では minimum 128MBで推奨512MB以上のメモリが必要と記述されているが、ヒープサイズは最低でも1GB確保できるようにした方がいい。
可能であれば物理メモリの半分程度、PCのメモリが4GBなら2GB程度を割り当てた方が良い。memory_limit = 2000M
古いバージョンのCookieが影響してWebフォームが正常に動作しない
ログイン情報等がCookieにキャッシュされたままアップグレードするので、Webフォームが正常に動かない場合はCookieを削除して、ブラウザを全て閉じてから開きなおすと動作が改善する場合がある。
Nextcloud version26以降ではマイナーブラウザでは正常に表示できないことがある。
メジャーなChrome,Firefox,BraveやEdgeはOKだったが、Chrome系ブラウザであってもマイナーブラウザだとプラグインのインストールが求められる場合がある。
(※プラグインをインストールしても動かないので、実行するブラウザを変更した方がいい)
version26にアップデートするとNextcloudメールがローディングGifの表示から進まなくなる
-
原因:
mysqlのtimeout設定が短いと、DBからデータ取得できず要求したまま進めなくなる現象が発生する
-
対策:
具体的には、wait_timeoutとinteractive_timeoutを適切な値に設定しなおす事で対策ができる。
wait_timeout=600 interactive_timeout=600
version28にアップデートするとNextcloudのプラグインの一部が動作しなくなる(互換性に問題がある)
- 原因:
プラグインが新しいバージョンに対応していない
-
対策:
残念ながら、プラグインが新しいバージョンに対応するまで待つか、自分で改造するなり対策するしかない。
Nextcloud version26以降はPHP7.x系では動作しなくなっているので、プラグインもPHP7.xまでしか対応していないものは動作しなくなる。NextcloudMail周りはフロントエンドも刷新されてVue.js依存になったので、プラグインが新バージョンに対応していないと動作しなくなっている。
恒久対策
Nextcloud version26系~27系は問題が多くアップデート後の不具合が頻発するので、速やかに version28系までアップグレードすることをオススメします。
(※Nextcloud version28が最新なので、以降のバージョンが安全かどうかは各自で要確認)
脆弱性情報
Nextcloud version 27.x以前のバージョンには、悪意のある攻撃者によってファイルストレージのパスを書換えられる脆弱性が存在する。
https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=nextcloud
PHP7.4で動作するNextcloud version27より古いバージョンで運用するのは脆弱性のリスクを抱えることになる。version27以前での運用は利用を限定して、早急にversion28へのアップグレードを検討することを推奨します。
まとめ
公式情報を網羅すれば情報は得られるのだが、公式の情報が雑
-
docs.nextcloud.comに公式ドキュメント
https://docs.nextcloud.com/ -
help.nextcloud.comに公式のコミュニティサポートあり
https://help.nextcloud.com/ -
各種バグトラッキング情報
https://docs.nextcloud.com/server/latest/developer_manual/prologue/bugtracker/ -
githubに報告されているissues
https://github.com/nextcloud/server/issues
不具合の発端
不具合の発端になるのはNextcloud version25からversion26へアップグレードした時に問題が多発する。
公式の情報を注意深く確認していれば、Nextcloud 26以降からはphp8以上でなければ動作しない旨が書かれているのだが、肝心のアップグレード画面にそのような注意書きはないので「動作しなくなるアップグレード」を決行してしまうのだと推測できる。
公式サポートが貧弱な理由
本件で紹介しているNextcloudのCommunity版は自己責任で無料で提供されているのだが、有料版のNextcloudは提携社が有料サブスクへ誘導したい意図が見える。
商売なので、無料版から有料版へ移行したくなる施策は仕方がないとは思うのだが、不具合やユーザービリティの悪化はユーザー離脱に繋がるのでOSSコミュニティ版の品質は順守してほしい。
Enterprise版 有料サブスクをのサービスが微妙
ちなみに、日本公式のNextcloud代理店のサブスクサービスを契約してもアップグレードのサポートは年に1回しか受けられない。
Nextcloudでのアップグレードの問題点を考慮しても、Microsoft365(Teams)やGoogle(Gmail)に依存せずインフラを自社で確保する事に大きな意義がある。
大手のSaaSに依存しないソリューションとしてNextcloudは最良
代替できる機能 | NextCloudの機能名 | 競合 | 利点 |
---|---|---|---|
Webストレージ | NextcloudFile | GoogleDrive,OneDrive | Googleに情報を盗まれない、検閲でのデータ消失を防ぐ、多重認証を無料で設定できる、コスト削減 |
オンライン通話 | NextcloudTalk | LINE,Zoom,Teams | 情報を盗まれない、多重認証を無料で設定できる、コスト削減 |
Webメール | NextcloudMail | Gmail | Googleに情報を盗まれない、検閲でのデータ消失を防ぐ、多重認証を無料で設定できる、コスト削減 |