【Docker】メジャーバージョンアップと警告対応【Nextcloud】

もくじ

はじめに

久々の連休で Nextcloud 更新しようと思いました。

29 で放っておいたら 31 になってしまったので、2段アップデートが必要です。

メジャーアップデートは順番に更新する必要がある

Nextcloud はメジャーアップデートは順番にアップデートしないとハマります。これが面倒と混乱のもとだと思うんですよね。

Docker を使っているので比較的簡単にアップデートできます。

順番にアップデートする

29 → 30

まず 29 から 30 にアップデートする必要があります。

一旦 Docker のコンテナを停止します。

$ docker-compose down

次に イメージをアップデートします。
docker-compose.yml のバージョンを30を指定して更新します。

image: nextcloud:latest

image: nextcloud:30

と変更して pull します。

$ docker-compose pull

一度起動して確認します。

$ docker-compose up -d

バージョンが 30.x.x になっていれば成功です。

30 → 31

また コンテナを停止して 31 に更新します

$ docker-compose down
image: nextcloud:31

ですが、現在の最新バージョンなので latest で問題ないです。

image: nextcloud:latest

イメージを更新します

$ docker-compose pull
$ docker-compose up -d

バージョンが 31.x.x で最新バージョンとなります。

いくつか警告が出たので対応します。

1つ以上のmimetypeマイグレーションが利用できます。時折、特定のファイルタイプをよりよく扱うために新しいmimetypesが追加されます。大規模なインスタンスではmimetypesの移行に時間がかかるため、アップグレード時には自動的には行われません。移行を行うには occ maintenance:repair --include-expensive コマンドを使用してください。

ファイルタイプが変更されたようでデータベースを更新する必要があるようです。指示通り実行します。

コンテナに侵入します。以前ユーザー名を 33 にしていたけど root で良いっぽい。

$ docker exec -u root -it コンテナ名 bash

コンテナ内 でコマンド実行

# php occ maintenance:repair --include-expensive

いくつかの欠落しているオプションのインデックスを検出しました。データベースのパフォーマンスを向上させるために、(Nextcloudまたはインストールされたアプリケーションによって)新しいインデックスが追加されることがあります。インデックスの追加には時間がかかり、一時的にパフォーマンスが低下することがあるため、アップグレード時には自動的には行われません。インデックスが追加されると、それらのテーブルへのクエリが速くなるはずです。インデックスを追加するには、occ db:add-missing-indices コマンドを使用してください。 インデックスが不足: “dav_shares_resourceid_type” テーブル内の “dav_shares”, “dav_shares_resourceid_access” テーブル内の “dav_shares”, “fs_name_hash” テーブル内の “filecache”, “schedulobj_lastmodified_idx” テーブル内の “schedulingobjects”, “systag_by_objectid” テーブル内の “systemtag_object_mapping”, “systag_objecttype” テーブル内の “systemtag_object_mapping”, “cards_prop_abid_name_value” テーブル内の “cards_properties” 詳細については、ドキュメントを参照してください。

データーベースのインデックスが不足しているらしい。指示通り実行します。

コンテナ内で実行します。

# php occ db:add-missing-indices

リバースプロキシヘッダの設定が正しくありません、または信頼できるプロキシからNextcloudにアクセスしています。そうでない場合、これはセキュリティ上の問題であり、攻撃者がNextcloudに表示されるIPアドレスを偽装することができます。 詳細については、ドキュメントを参照してください。

設定しているはずだがまた出やがった。よく見るやつ。

コンテナを更新 したので、vi が消えています。
再インストールします。

# apt update
# apt install vim

config.php を更新します。

# vi config/config.php

設定されているが警告が出ています。

999 はダミーです

'trusted_proxies' =>
    array (
        0 => '999.999.999.999',
        1 => '999.999.999.0/24',
        2 => '127.0.0.0/24',
    ),

しょうがないので、書き換えます。

一旦 Nextcloud から離れ リバースプロキシの IP を確認します。

プロキシのコンテナ名 nginx-proxy
プロキシの IP を確認します

$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'  nginx-proxy
172.19.0.3

うちのプロキシ IP は 172.19.0.3 らしい。公開しても問題ないはず。

Nextcloud のコンテナに戻り config.php を変更します。
一件だけ登録すると警告が出なくなりました。

CIDR表記で問題ないようです。

'trusted_proxies' => [ '172.19.0.0/24' ],

一旦コンテナから脱出して、コンテナを再起動します。

# exit
# docker-compose restart

スッキリ

警告がなくなると気分が良いですね