nextcloudでアプリ一覧が表示されない場合の対処方法

nextcloud

約 7 分で読めます。



nextcloudでアプリ入れようとしたら、

一覧に何も表示されない…

今までこんなことなかったのに、なぜ?

こんな悩みを解決します。

具体的にはこんな現象

私の環境でもたまに起きています。
 アプリ画面で左ペインある項目が明らかに少ない。

image.png



ちなみに通常時はこう。
左側の項目数が多いことがわかります。

Screenshot 2021-06-27 11.50.11.png



私は二要素認証であるTOTPを入れようとしたときにこの現象に出くわしました。

TOTPについては↓の記事を参照ください。

原因と対策①

アプリ一覧を表示させる際に元データをnextcloudの本家サーバーに取りに行っているのですが、60秒のタイムアウトが発生していることが原因でした。

具体的にはこの部分。
 管理者アカウントでログインし、「ログ」に移動。



Could not connect to appstore: cURL error 28: Operation timed out after 60000 milliseconds with 1314068 bytes received (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://apps.nextcloud.com/api/v1/apps.json

とあり、apps.jsonのデータをGETするなかで60秒のタイムアウトが発生したことがわかります。

これはnextcloud本家と、自分が立てているnextcloudサーバー、どちらが悪いということはなく、

・通信条件が良くなかった
・たまたまnextcloud本家が混んでいた

といろいろ原因は考えられます。

いずれにしろ私たちの方がやれることは何もないので、素直にしばらく待ってリトライするくらいしか効果的な対策はないと思います。

少し脱線 – タイムアウトについて –

このタイムアウト60秒はソースコードにハードコードされていました。
そのため、値を変更することはできません。

ここにタイムアウトの設定があります。

lib/private/App/AppStore/Fetcher/Fetcher.php
  fetch($ETag, $content)

ソースコードを直接編集しない限りタイムアウト時間を変更することはできなさそうです。



原因と対策② – 2021/11/02更新-

この記事のコメントでhiro-matsumotoさんから

NextcloudをホスティングしているOSによっては、Nextcloudが内部で使用しているcurlがhttps証明書検証でエラーになり、同じ現象が発生することがある

というアドバイスをいただきました。

要因はこの本家フォーラムに書いてある通りで、

The idea of two chains: one is valid and the other remain for higher compatibility with older android devices (older android devices do not check the expiration date of the root certificate if the intermedia is still valid)
But older Linux distros are bothered (with newer ones this is no longer a problem) when a chain leads to an expired root although another chain leads to a correct root. In this case, you can simply remove the expired root certificate.

というコメントの通り、

・新しめのデバイスやOS
 証明書チェーンが複数ある場合にどれか1つでも有効なら有効となる
・古めのデバイスやOS
 証明書チェーンが複数ある場合にどれか1つでも無効なら無効となる

と、振る舞いが異なるようで、

これにより、
Nextcloudのアプリ一覧が表示されない不具合が起こることもある
とのことでした。



自分のコンテナ環境ではこのケースに当てはまりませんでしたが、もしこれが疑われる場合、

rm /etc/ssl/certs/DST_Root_CA_X3.pem

として期限切れの証明書を削除することで解決できるようです。
 ホスティングサービスを使っている場合は、管理会社にお願いする必要がある。

終わりに

いかがでしたか。

あまり直面することはないと思いますが、
もし現象発生してしまったら、前記2つを疑ってみてください!

nextcloudサーバーの立て方はこちらの記事をどうぞ!



コンテナ化したい?
そんな方はこちらの記事がオススメです!

この記事を書いた人
yatch

組込ソフト歴15年の外資系エンジニア。
前職で組込Linuxを使った商品設計/品質確保の業務に従事。
Raspberry Piが好き。
株式投資で年100万円を稼ぐ。
妻は香港人(国際結婚)。

Please follow me
nextcloud
Please follow me
世界Linux新聞

Comments

  1. hiro-matsumoto より:

    こんにちは、はじめまして。
    私もこの事象になりましてこちらを拝見していました。

    私の環境はさくらのレンタルで無料SSL(LetsEncrypt)だったのですが、
    何か解決方法がないかと探していましたら以下の情報がありました。
    ********************************
    https://help.nextcloud.com/t/app-store-missing/125729/12

    >問題はあなたではなく、NextcloudサーバーからのLetsEncrypt証明書でした。
    >この場合、サーバー上のDSTルートCA X3 vom LetsEncryptを削除する必要があります。
    >https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/

    >共有ホスティング業者のみが削除できると思いますDST_Root_CA_X3。
    >( rm /etc/ssl/certs/DST_Root_CA_X3.pem)

    >問題が解決しました。
    >…/ nextcloud / resources / config / ca-bundle.crtファイルからDSTルートCAX3セク>ションを削除しました。
    ********************************

    上記Nextcloudコミュニティ情報から「ca-bundle.crt」ファイルの「DST Root CA X3
    」部分を削除しましたら、アプリストアが表示できるようになりました!

  2. yatch yatch より:

    コメントありがとうございます。

    ご提示のURLを読んでみました。
    ご指摘の通り、
     Nextcloud公式サーバーに使われているLet’s Encryptの証明書が問題を起こしている、
    と読めました。

    Nextcloudはアプリ一覧を表示するときにcurlを使っているので、確かに辻褄が合いますね!
    私の環境でもやってみます、ありがとうございます!

タイトルとURLをコピーしました