Skip to content

GET https://apps.nextcloud.com/api/v1/ apps.json resulted in a 429 Too Many Requests #1569

@xylo

Description

@xylo

How to use GitHub

  • Please use the 👍 reaction to show that you are affected by the same issue.
  • Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
  • Subscribe to receive notifications on status change and new comments.

Steps to reproduce

  1. Set up 24 Nextcloud instances on one server (with one static IP).
  2. Configure cron jobs for each Nextcloud.
  3. Use the clouds normally.

Expected behaviour

I would not expect to see hundreds of error messages saying that apps.nextcloud.com rejected normal requests because of "too many requests".

Actual behaviour

The logs of all 24 Nextcloud instances contains dozens of error messages of this form every day:

{"reqId":"ASMWZftBcAFHrxbg0t2P","level":2,"time":"2025-02-03T15:35:09+00:00","remoteAddr":"","user":"--","app":"appstoreFetcher","method":"","url":"--","message":"Client error: `GET https://apps.nextcloud.com/api/v1/
apps.json` resulted in a `429 Too Many Requests` response:\n<html>\r\n<head><title>429 Too Many Requests</title></head>\r\n<body>\r\n<center><h1>429 Too Many Requests</h1></center>\r\n<hr> (truncated...)\n","userAgen
t":"--","version":"29.0.11.1","exception":{"Exception":"GuzzleHttp\\Exception\\ClientException","Message":"Client error: `GET https://apps.nextcloud.com/api/v1/apps.json` resulted in a `429 Too Many Requests` respons
e:\n<html>\r\n<head><title>429 Too Many Requests</title></head>\r\n<body>\r\n<center><h1>429 Too Many Requests</h1></center>\r\n<hr> (truncated...)\n","Code":429,"Trace":[{"file":"/var/www/nextcloud/beispiel/3rdparty
/guzzlehttp/guzzle/src/Middleware.php","line":72,"function":"create","class":"GuzzleHttp\\Exception\\RequestException","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/nextcloud/beispie
l/3rdparty/guzzlehttp/promises/src/Promise.php","line":204,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/nextcloud
/beispiel/3rdparty/guzzlehttp/promises/src/Promise.php","line":153,"function":"callHandler","class":"GuzzleHttp\\Promise\\Promise","type":"::"},{"file":"/var/www/nextcloud/beispiel/3rdparty/guzzlehttp/promises/src/Ta
skQueue.php","line":48,"function":"GuzzleHttp\\Promise\\{closure}","class":"GuzzleHttp\\Promise\\Promise","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/var/www/nextcloud/beispiel/3rdparty/gu
zzlehttp/promises/src/Promise.php","line":248,"function":"run","class":"GuzzleHttp\\Promise\\TaskQueue","type":"->"},{"file":"/var/www/nextcloud/beispiel/3rdparty/guzzlehttp/promises/src/Promise.php","line":224,"func
tion":"invokeWaitFn","class":"GuzzleHttp\\Promise\\Promise","type":"->"},{"file":"/var/www/nextcloud/beispiel/3rdparty/guzzlehttp/promises/src/Promise.php","line":269,"function":"waitIfPending","class":"GuzzleHttp\\P
romise\\Promise","type":"->"},{"file":"/var/www/nextcloud/beispiel/3rdparty/guzzlehttp/promises/src/Promise.php","line":226,"function":"invokeWaitList","class":"GuzzleHttp\\Promise\\Promise","type":"->"},{"file":"/va
r/www/nextcloud/beispiel/3rdparty/guzzlehttp/promises/src/Promise.php","line":62,"function":"waitIfPending","class":"GuzzleHttp\\Promise\\Promise","type":"->"},{"file":"/var/www/nextcloud/beispiel/3rdparty/guzzlehttp
/guzzle/src/Client.php","line":189,"function":"wait","class":"GuzzleHttp\\Promise\\Promise","type":"->"},{"file":"/var/www/nextcloud/beispiel/lib/private/Http/Client/Client.php","line":230,"function":"request","class
":"GuzzleHttp\\Client","type":"->"},{"file":"/var/www/nextcloud/beispiel/lib/private/App/AppStore/Fetcher/Fetcher.php","line":112,"function":"get","class":"OC\\Http\\Client\\Client","type":"->","args":["*** sensitive
parameters replaced ***"]},{"file":"/var/www/nextcloud/beispiel/lib/private/App/AppStore/Fetcher/AppFetcher.php","line":78,"function":"fetch","class":"OC\\App\\AppStore\\Fetcher\\Fetcher","type":"->"},{"file":"/var/
www/nextcloud/beispiel/lib/private/App/AppStore/Fetcher/Fetcher.php","line":189,"function":"fetch","class":"OC\\App\\AppStore\\Fetcher\\AppFetcher","type":"->"},{"file":"/var/www/nextcloud/beispiel/lib/private/App/Ap
pStore/Fetcher/AppFetcher.php","line":179,"function":"get","class":"OC\\App\\AppStore\\Fetcher\\Fetcher","type":"->"},{"file":"/var/www/nextcloud/beispiel/lib/private/Installer.php","line":405,"function":"get","class
":"OC\\App\\AppStore\\Fetcher\\AppFetcher","type":"->"},{"file":"/var/www/nextcloud/beispiel/core/Command/App/Update.php","line":99,"function":"isUpdateAvailable","class":"OC\\Installer","type":"->"},{"file":"/var/ww
w/nextcloud/beispiel/3rdparty/symfony/console/Command/Command.php","line":298,"function":"execute","class":"OC\\Core\\Command\\App\\Update","type":"->"},{"file":"/var/www/nextcloud/beispiel/3rdparty/symfony/console/A
pplication.php","line":1040,"function":"run","class":"Symfony\\Component\\Console\\Command\\Command","type":"->"},{"file":"/var/www/nextcloud/beispiel/3rdparty/symfony/console/Application.php","line":301,"function":"
doRunCommand","class":"Symfony\\Component\\Console\\Application","type":"->"},{"file":"/var/www/nextcloud/beispiel/3rdparty/symfony/console/Application.php","line":171,"function":"doRun","class":"Symfony\\Component\\
Console\\Application","type":"->"},{"file":"/var/www/nextcloud/beispiel/lib/private/Console/Application.php","line":213,"function":"run","class":"Symfony\\Component\\Console\\Application","type":"->"},{"file":"/var/w
ww/nextcloud/beispiel/console.php","line":102,"function":"run","class":"OC\\Console\\Application","type":"->"},{"file":"/var/www/nextcloud/beispiel/occ","line":11,"args":["/var/www/nextcloud/beispiel/console.php"],"f
unction":"require_once"}],"File":"/var/www/nextcloud/beispiel/3rdparty/guzzlehttp/guzzle/src/Exception/RequestException.php","Line":113,"message":"Client error: `GET https://apps.nextcloud.com/api/v1/apps.json` resul
ted in a `429 Too Many Requests` response:\n<html>\r\n<head><title>429 Too Many Requests</title></head>\r\n<body>\r\n<center><h1>429 Too Many Requests</h1></center>\r\n<hr> (truncated...)\n","exception":{},"CustomMes
sage":"Client error: `GET https://apps.nextcloud.com/api/v1/apps.json` resulted in a `429 Too Many Requests` response:\n<html>\r\n<head><title>429 Too Many Requests</title></head>\r\n<body>\r\n<center><h1>429 Too Man
y Requests</h1></center>\r\n<hr> (truncated...)\n"}}

For me it looks like apps.nextcloud.com is configured to allow only a certain number of requests per IP and time interval. Is this the case?

Can you set this limit higher so that users with multiple Nextcloud instances do not run into this problem?

Or is there a workaround for this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions