Cannot install apps or view the app store

I am running Nextcloud in a docker container, was on v29 but have just upgraded to the latest image on dockerhub (except it’s been updated yet again since I started this!). Also, it’s behind an nginx proxy, in case that’s an issue. Nevertheless, here is what I know:

Docker version: 27.2.1, build 9e34c9b
Docker image: "Created": "2024-09-27T03:21:15.238539109Z"
Nextcloud version (eg, 29.0.5): 30.0.0.14

I’ve turned off my adblocker, and browser extensions.

The issue you are facing:

When I go to the apps/Discover page, I get “Nothing to show”, “Could not load section content from app store”. I also see in the log:

{
  "reqId": "Py3wVUuNs9E6bZAevVIa",
  "level": 2,
  "time": "2024-09-27T09:45:58+00:00",
  "remoteAddr": "192.168.1.61",
  "user": "John",
  "app": "appstoreFetcher",
  "method": "GET",
  "url": "/settings/apps",
  "message": "Could not get apps from the appstore",
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
  "version": "30.0.0.14",
  "data": {
    "app": "appstoreFetcher"
  },
  "id": "66f67ee99c83a"
}

And if I try to install an app manually:

$ docker exec --user www-data nextcloud php occ app:install notes
Error: Could not download app notes

Is this the first time you’ve seen this error? (Y/N): It wasn’t working in 29 either, which is why I upgraded.

The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'apps_paths' =>
  array (
    0 =>
    array (
      'path' => '/var/www/html/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 =>
    array (
      'path' => '/var/www/html/custom_apps',
      'url' => '/custom_apps',
      'writable' => true,
    ),
  ),
  'instanceid' => 'ocrezcpmtdoe',
  'passwordsalt' => '<hidden>',
  'secret' => '<hidden>',
  'trusted_domains' =>
  array (
    0 => '192.168.1.10:8080',
    1 => 'nextcloud.mydoma.in',
  ),
  'datadirectory' => '/var/www/html/data',
  'dbtype' => 'mysql',
  'version' => '30.0.0.14',
  'overwriteprotocol' => 'https',
  'overwrite.cli.url' => 'http://192.168.1.10:8080',
  'dbname' => 'nextcloud',
  'dbhost' => 'db',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'nextcloud',
  'dbpassword' => '<hidden>',
  'installed' => true,
  'maintenance' => false,
  'loglevel' => 2,
  'appstoreenabled' => true,
  'appstoreurl' => 'https://www.orcy.net/ncapps/v1/',
);

Output errors in nextcloud.log in /var/www/ or as admin user in top right menu, filtering for errors. Use a pastebin service if necessary.

{"reqId":"dUqfC1GUaQJLWixDhJXw","level":3,"time":"2024-09-27T09:46:35+00:00","remoteAddr":"192.168.1.61","user":"John","app":"no app in context","method":"GET","url":"/settings/apps","message":"Failed to connect to the app store","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36","version":"30.0.0.14","exception":{"Exception":"GuzzleHttp\\Exception\\ConnectException","Message":"cURL error 28: Connection timed out after 60000 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://www.orcy.net/ncapps/v1//apps.json","Code":0,"Trace":[{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":158,"function":"createRejection","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":110,"function":"finishError","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":[["GuzzleHttp\\Handler\\CurlHandler"],"*** sensitive parameters replaced ***",["GuzzleHttp\\Handler\\CurlFactory"]]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlHandler.php","line":47,"function":"finish","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":[["GuzzleHttp\\Handler\\CurlHandler"],"*** sensitive parameters replaced ***",["GuzzleHttp\\Handler\\CurlFactory"]]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":142,"function":"__invoke","class":"GuzzleHttp\\Handler\\CurlHandler","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Http/Client/DnsPinMiddleware.php","line":146,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php","line":35,"function":"OC\\Http\\Client\\{closure}","class":"OC\\Http\\Client\\DnsPinMiddleware","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":31,"function":"__invoke","class":"GuzzleHttp\\PrepareBodyMiddleware","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":71,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":66,"function":"__invoke","class":"GuzzleHttp\\RedirectMiddleware","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php","line":75,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Client.php","line":333,"function":"__invoke","class":"GuzzleHttp\\HandlerStack","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Client.php","line":169,"function":"transfer","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Client.php","line":189,"function":"requestAsync","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Http/Client/Client.php","line":205,"function":"request","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***","https://www.orcy.net/ncapps/v1//apps.json",["/var/www/html/resources/config/ca-bundle.crt",60,[["Closure"]],[false],["Nextcloud Server Crawler","gzip"],"And 1 more entries, set log level to debug to see all entries"]]},{"file":"/var/www/html/lib/private/App/AppStore/Fetcher/Fetcher.php","line":87,"function":"get","class":"OC\\Http\\Client\\Client","type":"->","args":["https://www.orcy.net/ncapps/v1//apps.json",[60]]},{"file":"/var/www/html/lib/private/App/AppStore/Fetcher/AppFetcher.php","line":54,"function":"fetch","class":"OC\\App\\AppStore\\Fetcher\\Fetcher","type":"->","args":["",""]},{"file":"/var/www/html/lib/private/App/AppStore/Fetcher/Fetcher.php","line":164,"function":"fetch","class":"OC\\App\\AppStore\\Fetcher\\AppFetcher","type":"->","args":["","",false]},{"file":"/var/www/html/lib/private/App/AppStore/Fetcher/AppFetcher.php","line":155,"function":"get","class":"OC\\App\\AppStore\\Fetcher\\Fetcher","type":"->","args":[false]},{"file":"/var/www/html/lib/private/Installer.php","line":381,"function":"get","class":"OC\\App\\AppStore\\Fetcher\\AppFetcher","type":"->","args":[false]},{"file":"/var/www/html/apps/settings/lib/Controller/AppSettingsController.php","line":192,"function":"isUpdateAvailable","class":"OC\\Installer","type":"->","args":["text"]},{"file":"/var/www/html/apps/settings/lib/Controller/AppSettingsController.php","line":89,"function":"getAppsWithUpdates","class":"OCA\\Settings\\Controller\\AppSettingsController","type":"->","args":[]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":208,"function":"viewApps","class":"OCA\\Settings\\Controller\\AppSettingsController","type":"->","args":[]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":114,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[["OCA\\Settings\\Controller\\AppSettingsController"],"viewApps"]},{"file":"/var/www/html/lib/private/AppFramework/App.php","line":161,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[["OCA\\Settings\\Controller\\AppSettingsController"],"viewApps"]},{"file":"/var/www/html/lib/private/Route/Router.php","line":302,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Settings\\Controller\\AppSettingsController","viewApps",["OC\\AppFramework\\DependencyInjection\\DIContainer"],["","","settings.appsettings.viewapps"]]},{"file":"/var/www/html/lib/base.php","line":1001,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/settings/apps"]},{"file":"/var/www/html/index.php","line":24,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","Line":210,"message":"Failed to connect to the app store","exception":[],"CustomMessage":"Failed to connect to the app store"},"id":"66f68132482b9"}

That is not the official appstore url - we can’t you help there, sorry.

That was a hangover from another thread with a similar problem. I’ve remove that line and still have the same issue. It also wasn’t there when I was using v29.

But it is also in the exception? Can you post the current exceptions?

Also after changing, the error might still be cached, it might take a bit until the request is retried.

Gotcha! This is after a restart of the container:

{"reqId":"WbV5pYfF4UEPA7uFcPAh","level":2,"time":"2024-09-27T11:29:38+00:00","remoteAddr":"","user":"--","app":"appstoreFetcher","method":"","url":"--","message":"Could not get apps from the appstore","userAgent":"--","version":"30.0.0.14","data":{"app":"appstoreFetcher"},"id":"66f697a3f3b95"}

and

{"reqId":"NUMGt9UQ3fHyFeopsaRt","level":3,"time":"2024-09-27T11:28:34+00:00","remoteAddr":"192.168.1.61","user":"John","app":"no app in context","method":"GET","url":"/settings/apps","message":"Failed to connect to the app store","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36","version":"30.0.0.14","exception":{"Exception":"GuzzleHttp\\Exception\\ConnectException","Message":"cURL error 28: Connection timed out after 60000 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://apps.nextcloud.com/api/v1/apps.json","Code":0,"Trace":[{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":158,"function":"createRejection","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":110,"function":"finishError","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":[["GuzzleHttp\\Handler\\CurlHandler"],"*** sensitive parameters replaced ***",["GuzzleHttp\\Handler\\CurlFactory"]]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlHandler.php","line":47,"function":"finish","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":[["GuzzleHttp\\Handler\\CurlHandler"],"*** sensitive parameters replaced ***",["GuzzleHttp\\Handler\\CurlFactory"]]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":142,"function":"__invoke","class":"GuzzleHttp\\Handler\\CurlHandler","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Http/Client/DnsPinMiddleware.php","line":146,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php","line":35,"function":"OC\\Http\\Client\\{closure}","class":"OC\\Http\\Client\\DnsPinMiddleware","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":31,"function":"__invoke","class":"GuzzleHttp\\PrepareBodyMiddleware","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":71,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":66,"function":"__invoke","class":"GuzzleHttp\\RedirectMiddleware","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php","line":75,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Client.php","line":333,"function":"__invoke","class":"GuzzleHttp\\HandlerStack","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Client.php","line":169,"function":"transfer","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Client.php","line":189,"function":"requestAsync","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/html/lib/private/Http/Client/Client.php","line":205,"function":"request","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***","https://apps.nextcloud.com/api/v1/apps.json",["/var/www/html/resources/config/ca-bundle.crt",60,[["Closure"]],[false],["Nextcloud Server Crawler","gzip"],"And 1 more entries, set log level to debug to see all entries"]]},{"file":"/var/www/html/lib/private/App/AppStore/Fetcher/Fetcher.php","line":87,"function":"get","class":"OC\\Http\\Client\\Client","type":"->","args":["https://apps.nextcloud.com/api/v1/apps.json",[60]]},{"file":"/var/www/html/lib/private/App/AppStore/Fetcher/AppFetcher.php","line":54,"function":"fetch","class":"OC\\App\\AppStore\\Fetcher\\Fetcher","type":"->","args":["",""]},{"file":"/var/www/html/lib/private/App/AppStore/Fetcher/Fetcher.php","line":164,"function":"fetch","class":"OC\\App\\AppStore\\Fetcher\\AppFetcher","type":"->","args":["","",false]},{"file":"/var/www/html/lib/private/App/AppStore/Fetcher/AppFetcher.php","line":155,"function":"get","class":"OC\\App\\AppStore\\Fetcher\\Fetcher","type":"->","args":[false]},{"file":"/var/www/html/lib/private/Installer.php","line":381,"function":"get","class":"OC\\App\\AppStore\\Fetcher\\AppFetcher","type":"->","args":[false]},{"file":"/var/www/html/apps/settings/lib/Controller/AppSettingsController.php","line":192,"function":"isUpdateAvailable","class":"OC\\Installer","type":"->","args":["text"]},{"file":"/var/www/html/apps/settings/lib/Controller/AppSettingsController.php","line":89,"function":"getAppsWithUpdates","class":"OCA\\Settings\\Controller\\AppSettingsController","type":"->","args":[]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":208,"function":"viewApps","class":"OCA\\Settings\\Controller\\AppSettingsController","type":"->","args":[]},{"file":"/var/www/html/lib/private/AppFramework/Http/Dispatcher.php","line":114,"function":"executeController","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[["OCA\\Settings\\Controller\\AppSettingsController"],"viewApps"]},{"file":"/var/www/html/lib/private/AppFramework/App.php","line":161,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[["OCA\\Settings\\Controller\\AppSettingsController"],"viewApps"]},{"file":"/var/www/html/lib/private/Route/Router.php","line":302,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OCA\\Settings\\Controller\\AppSettingsController","viewApps",["OC\\AppFramework\\DependencyInjection\\DIContainer"],["","","settings.appsettings.viewapps"]]},{"file":"/var/www/html/lib/base.php","line":1001,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/settings/apps"]},{"file":"/var/www/html/index.php","line":24,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","Line":210,"message":"Failed to connect to the app store","exception":[],"CustomMessage":"Failed to connect to the app store"},"id":"66f697a3f3dd2"}

Hm, can you try to manually test the request? Is the container able to connect externally?

Something like curl https://apps.nextcloud.com/api/v1/apps.json ?

Pretty sure this is a docker networking issue now:

$  docker exec -it --user www-data nextcloud bash
www-data@<container>:~/html$ curl https://apps.nextcloud.com/api/v1/apps.json
curl: (28) Failed to connect to apps.nextcloud.com port 443 after 131168 ms: Couldn't connect to server

OK - it isn’t Docker; the host can’t access that URL either…but my Windoze PC (sitting on the same lan) can…I’ve definitely got some weird networking config issue.

OK - maybe a little paranoid of me, but I have geoIP blocking set up on my server; I only allow connections to/from a limited set of countries; Nextcloud’s app server is in Finland. Adding FI to my allow list fixed the problem!

This topic was automatically closed 8 days after the last reply. New replies are no longer allowed.