Slide 1

Slide 1 text

Nextcloud 28 upgrade で失 敗 Kenichiro Matohara(matoken) 1

Slide 2

Slide 2 text

matoken @ 鹿児島の右下の山奥から参加 好きなLinuxディストリビューションはDebian map: © OpenStreetMap contributors Kenichiro Matohara(matoken) https://matoken.org [email protected] 2

Slide 3

Slide 3 text

Nextcloud 28 upgrade で失敗 😑 3

Slide 4

Slide 4 text

Nextcloud ownCloud からフォークしたファイル共有ソフトウェア FileDrop 機能に釣られて移行した ウェブ,デスクトップ,モバイルクライアント,WebDav にも対応 アプリケーションにより様々な機能を追加できる Calender, Mail, Office, News, VideoMeeting, Forms, MaindMap, Map, Social(ActivityPub), Chat, PasswordManager, CMS…… https://apps.nextcloud.com/ 4

Slide 5

Slide 5 text

Nextcloud 28 新しいNextcloud 28.0.0 が出たのでアップデートを…… 5

Slide 6

Slide 6 text

アプリアップデート アップデート前にアプリのアップデートをしておく Nextcloud のバージョンに追従していない場合無効にされるの で最新にしておく 管理者のウェブインターフェイスかcli のocc コマンドからアップデー ト アップデート確認 アップデート $ sudo -u www-data php ${NEXTCLOUD_PATH/occ app:update --all --showonly $ sudo -u www-data php ${NEXTCLOUD_PATH/occ app:update --all 6

Slide 7

Slide 7 text

Nextcloud アップデート 管理者のWeb インターフェイスかcli でアップデートが可能 Web だとタイムアウトすることがあるのでcli のほうが確実 確認だけ cli でのアップグレード  アップデートチャンネルには,「法人向け」,「安定版」,「ベータ」が あり,アップデートタイミングはそれぞれ違う $ sudo -u www-data php ${NEXTCLOUD_PATH}/updater/updater.phar --no-upgrade $ sudo -u www-data php ${NEXTCLOUD_PATH/occ update:check $ sudo -u www-data php ${NEXTCLOUD_PATH}/updater/updater.pha $ sudo -u www-data php ${NEXTCLOUD_PATH/occ upgrade 7

Slide 8

Slide 8 text

Error db が当たってるぽい? Nextcloud or one of the apps require upgrade - only a limited number of commands are available You may use your browser or the occ upgrade command to do the upgrade Setting log level to debug Turned on maintenance mode Updating database schema Exception: Database error when running migration 28000Date20230906104802 for app core Index name "in_reply_to_prim" for table "oc_social_stream" collides with the constraint on tab Update failed Maintenance mode is kept active Resetting log level 8

Slide 9

Slide 9 text

一旦アップグレードを取りやめ たい…… 以前は ${NEXTCLOUD_PATH}/data/updater-${hashstring}/.step を消せばアップグレードが止まっていたが今はこのファイルがない? バックアップから戻すしか無さそう? 諦める 9

Slide 10

Slide 10 text

db backup バックアップに失敗! デイリーで動かしているフルバックアップは成功している フルバックアップを手動で動かしてみる → 成功 再度Nextcloud のdb backup → 成功 あれ? $ mysqldump -unextcloud -p nextcloud | xz -9 > ~/tmp/nextcloud-`date +%F_%T_$$`.mysql.xz mysqldump: Error 2013: Lost connection to server during query when dumping table `oc_mail_mess 10

Slide 11

Slide 11 text

バックアップ確認 ざっと中身を見た感じ取れていそう $ xzcat ~/tmp/nextcloud-2023-12-14_15\:53\:26_263487.mysql.xz | pee 'head -6' 'tail -1' -- MariaDB dump 10.19 Distrib 10.11.4-MariaDB, for debian-linux-gnu (x86_64) -- -- Host: localhost Database: nextcloud -- ------------------------------------------------------ -- Server version 10.11.4-MariaDB-1~deb12u1 -- Dump completed on 2023-12-14 20:22:58 11

Slide 12

Slide 12 text

db 内容確認&drop source を読んで確認したほうがいいだろうけどbackup あるしとり あえずdump 内容などから要らなそうな方をdrop していく 2回目以降のupdate時に出たError,同様に確認&drop MariaDB [nextcloud]> show index from oc_social_stream; MariaDB [nextcloud]> show index from oc_social_3_stream; MariaDB [nextcloud]> drop table oc_social_stream; Index name "sa" for table "oc_social_stream_act" collides with the constraint on table "oc_soc Index name "sh" for table "oc_social_stream_tag" collides with the constraint on table "oc_soc Index name "ts" for table "oc_social_3_stream_dest" collides with the constraint on table "oc_ Index name "afoa" for table "oc_social_follow" collides with the constraint on table "oc_socia 12

Slide 13

Slide 13 text

最後までアップデート動いた :) 1 Nextcloud upgrade 2 メンテナンスモード有効のまま 3 アプリを再度最新に 4 メンテナンスモードをoff に $ sudo -u www-data php /var/www/files.matoken.org/occ upgrade Update successful Maintenance mode is kept active Resetting log level $ sudo -u www-data php /var/www/files.matoken.org/occ app:update --all $ sudo -u www-data php /var/www/files.matoken.org/occ maintenance:mode --off 1 2 3 4 13

Slide 14

Slide 14 text

セキュリティ&セットアップ警 告 https://${NEXTCLOUD_URL}/index.php/settings/admin/over サーバーのセキュリティとパフォーマンスにとって 重要なことは、すべてが正確に設定されているこ とです。あなたの助けとなるよう、Nextcloudで は一部の自動チェックを行っています。詳細な情報 は、リンク先のドキュメントを参照してください。 14

Slide 15

Slide 15 text

15

Slide 16

Slide 16 text

セキュリティ&セットアップ警 告を解決していく とはいえ大抵ドキュメントへのリンクがあるのでそのとおりにしていけ ばいい 設定変更 → 再読込で確認を繰り返す 16

Slide 17

Slide 17 text

一部のファイルは整合性チェッ クに合格していません。 アプリの twofactor_gateway のhash がおかしいので一旦消してイ ンストールし直す 1 twofactor_gateway アプリを削除 2 twofactor_gateway アプリをインストール…… 3 NC28 に追従できていなくてインストールに失敗 → 後で WebUI から強制的に有効にした(動かないこともある) - INVALID_HASH: - vendor/composer/platform_check.php: - expected: c88ecdd67613dbf10c51945a4c4e4447f7ee8c929920395b08f6c1d1f6fa599245a22f3da8f3 - current: 6040bf202702599d5a5a07f76c3a9aed5fcc76313261e37c8d7df6a0ca284685214075b68566f $ sudo -u www-data php /var/www/files.matoken.org/occ app:remove twofactor_gateway $ sudo -u www-data php /var/www/files.matoken.org/occ app:install twofactor_gateway Error: App "Two-Factor Gateway" cannot be installed because it is not compatible with this ver 1 2 17

Slide 18

Slide 18 text

PHPのメモリ制限が推奨値の512 MB 以下です。 現在128MB だが,既にswap を結構使ってしまっているのでペンディ ングに $ grep ^memory_limit\ /etc/php/8.2/apache2/php.ini memory_limit = 128M 18

Slide 19

Slide 19 text

PHP OPcacheモジュールが正しく設定 されていません。 よくわかっておらずドキュメント丸写し $ diff -u config/config.php-2023-12-15 config/config.php --- config/config.php-2023-12-15 2023-12-15 05:29:36.919611846 +0900 +++ config/config.php 2023-12-15 18:00:31.483939649 +0900 @@ -26,13 +26,15 @@ 'log_type' => 'file', 'logfile' => '/var/log/nextcloud.log', 'loglevel' => 0, - 'memcache.local' => '\\OC\\Memcache\\Redis', + 'filelocking.enabled' => true, + 'memcache.locking' => '\OC\Memcache\Redis', + 'memcache.distributed' => '\OC\Memcache\Redis', + 'memcache.local' => '\OC\Memcache\\Redis', 'redis' => array ( 'host' => '127.0.0.1', 'port' => '6379', - 'dbindex' => 1, - 'timeout' => 1.5, + 'timeout' => 0.0, ), 'versions_retention_obligation' => '14,auto', 'updater.release.channel' => 'stable', ; Only numbers between 200 and 1000000 are allowed. 19

Slide 20

Slide 20 text

OPcacheのインターン化文字列バッ ファーがまもなく一杯になりま す。 1つづつ上げていって10で一旦出なくなったがまた出たので現在11に 全てのスクリプトをキャッシュに保管できるように するには、 opcache.interned_strings_bufferの値を8 より多い値で、PHP設定に適用することを推奨し ます。 $ grep ^opcache.interned_strings_buffer= /etc/php/8.2/apache2/php.ini opcache.interned_strings_buffer=11 20

Slide 21

Slide 21 text

テーマ別アプリは有効ですが、 PHPモジュール「imagick」が有効で はありません。ファビコン生成 を正しく行うには、このモジュ ールをインストールし、有効化 する必要があります。 $ sudo apt install php-imagick $ sudo service apache2 reload 21

Slide 22

Slide 22 text

PHP モジュール "gmp" および "bcmath" が有効になっていない。WebAuthn パスワードレス認証を利用する 場合は、これらのモジュールが 必要です。 $ sudo apt install php-gmp php-bcmath $ sudo service apache2 reload 22

Slide 23

Slide 23 text

データベース内の一部のカラム で、大きなint型への変換が欠落し ています。 大きなテーブルのカラムタイプの変更には時間が かかるため、それらは自動的に変更されませんでし た。occ db:convert-filecache-bigint" を実 行することで、それらの保留中の変更を手動で適 用することができます。この操作は、インスタンス がオフラインの時に行う必要があります。 23

Slide 24

Slide 24 text

$ sudo -u www-data php /var/www/files.matoken.org/occ maintenance:mode --on $ sudo -u www-data php /var/www/files.matoken.org/occ db:convert-filecache-bigint Following columns will be updated: * files_trash.auto_id This can take up to hours, depending on the number of files in your instance! Continue with the conversion (y/n)? [n] y $ sudo -u www-data php /var/www/files.matoken.org/occ maintenance:mode --off 24

Slide 25

Slide 25 text

このインスタンスには、いくつ かの推奨 PHP モジュールがありま せん。パフォーマンスと互換性 を向上させるために、これらを インストールすることを強くお 勧めします: intl, bz2. $ sudo apt install php-intl php-bz2 $ sudo service apache2 reload 25

Slide 26

Slide 26 text

互換性のないアプリを有効にす る 「テストされていないアプリを許可する」 → 「許可」 Nextcloud 自体が動かなくなってしまうこともある その場合は occ app:disable ${APP_NAME} で無効にする https://${NEXTCLOUD_URL}/index.php/settings/apps 26

Slide 27

Slide 27 text

まとめ いつもはさくっとアップデートできていたが今回は少し嵌った db の整合性の問題は恐らくNC のbug とりあえずいつもどおりに動く感じにはなった 28.0.0 とメジャーバージョンアップ直後で非対応アプリも多かった のでもう少し待ってから上げたほうが良かったかも メモリが足りなくなってきたのでどうにかしたいところ…… ownCloud Go実装のownCloud Infinite Scale も気になり ます https://owncloud.com/infinite-scale/ 27

Slide 28

Slide 28 text

さくらのVPS価格 — https://vps.sakura.ad.jp/specification/ 今使っているのはVPS v3 でマイグレーションに非対応(v4, V5が対 応)のようなので解約&新規契約になりそう? 28

Slide 29

Slide 29 text

奥付 発表 2023-12- 17(sun) 発表者 利用ソフトウェア ライセンス 鹿児島Linux勉強会 2023.12(オンライン開催) Kenichiro Matohara(matoken) Asciidoctor Reveal.js CC BY 4.0 29

Slide 30

Slide 30 text

No content