[Bug]: Nextcloud Server gets unusably slow if external services like Collabora Server are not reachable
⚠️ This issue respects the following points: ⚠️
- [X] This is a bug, not a question or a configuration/webserver/proxy issue.
- [X] This issue is not already reported on Github OR Nextcloud Community Forum (I've searched it).
- [X] Nextcloud Server is up to date. See Maintenance and Release Schedule for supported versions.
- [X] I agree to follow Nextcloud's Code of Conduct.
Bug description
Nextcloud Server gets unusably slow if external services like Collabora Server are not reachable. I am not 100% if this belongs here on in the Collabora issues, but i guess NC itself should have measures to function when external services and plugins are not reachable.
- We have a instance of NC (PHP8) on a webspace provider (all-inkl.com), its federated with an instance on my Homeserver, but especially it is using the collabora server on my Homeserver. The ISP Provider (PYUR) has a routing problem atm, so my homeserver is not reachable from the outside.
This causes the the hosted Nextcloud to be basically unreachable. Just loading the Homepage takes 2-3 minutes. Loading any other page again takes 2-3 minutes.
Steps to reproduce
- Point an NC server to a remote collabora instance
- Make that Collabora Server unreachable
- Try to connect to the NC Server
Expected behavior
I guess there should be a resonable timeout handling in NC when it comes to externally connected services, no matter if connected through plugins or from NC itself. Unreachable external services should not slow NC to a halt.
Installation method
Community Web installer on a VPS or web space
Nextcloud Server version
27
Operating system
Debian/Ubuntu
PHP engine version
PHP 8.0
Web server
Apache (supported)
Database engine version
MySQL
Is this bug present after an update or on a fresh install?
None
Are you using the Nextcloud Server Encryption module?
None
What user-backends are you using?
- [X] Default user-backend (database)
- [ ] LDAP/ Active Directory
- [ ] SSO - SAML
- [ ] Other
Configuration report
webspace provider, no shell access
List of activated Apps
webspace provider, no shell access, nc doesnt load
Nextcloud Signing status
no shell access, nc doesnt load
Nextcloud Logs
no shell access, nc doesnt load
Additional info
No response
I remember a similar report at help.nextcloud.com a while ago.
Back then, I could trace it down to https://github.com/nextcloud/richdocuments/blob/64045b587666530b7fa3d8894a2c78d50f1faa72/lib/AppInfo/Application.php#L98-L101 and https://github.com/nextcloud/richdocuments/blob/64045b587666530b7fa3d8894a2c78d50f1faa72/lib/Service/CapabilitiesService.php#L160-L190
The app is already using the capabilities service in the app boostrapping. By default, we have a timeout of 45 seconds for the collabora capabilties endpoint. If we cannot fetch the capabilities, we keep the current state only for 60 seconds instead of one hour. All together, that's not ideal.
What could help, here in server, is to extend TemplateManager.getTypes to handle a null value from the registerTemplateFileCreator callback. Therefore, we could move the "expensive" capabilties query to the actual moment when we need to register the template file creator.
Sorry, I had in mind to send a pull request or write a proper bug ticket for the office team but forgot it.
Are you using the built-in code server? I'm wondering if running that might be something that is blocked by the hosting provider. Or are you using an external collabora server.
Ah sorry just noticed that you use an external collabora server. Can you check the log if there is any error trace mentioning the request to the COllabora server? Would be curious where that is triggered then, as far as I remember we should only perform those queries for the built-in server on page load (which is also something that should be fixed)
{"reqId":"xxx923j4upHanEX0QAAJCg","level":3,"time":"December 08, 2023 22:18:56","remoteAddr":"89.0.y.x","user":"user.name","app":"richdocuments","method":"GET","url":"/index.php/apps/files/api/v1/stats","message":"Failed to fetch the Collabora capabilities endpoint: cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities","userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0","version":"27.1.3.2","exception":{"Exception":"GuzzleHttp\\Exception\\ConnectException","Message":"cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities","Code":0,"Trace":[{"file":"/www/htdocs/user/domains/server.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":158,"function":"createRejection","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/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":"/www/htdocs/user/domains/example.de/nextcloud/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":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":137,"function":"__invoke","class":"GuzzleHttp\\Handler\\CurlHandler","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/Http/Client/DnsPinMiddleware.php","line":114,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php","line":35,"function":"OC\\Http\\Client\\{closure}","class":"OC\\Http\\Client\\DnsPinMiddleware","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":31,"function":"__invoke","class":"GuzzleHttp\\PrepareBodyMiddleware","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":71,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":63,"function":"__invoke","class":"GuzzleHttp\\RedirectMiddleware","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php","line":75,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":331,"function":"__invoke","class":"GuzzleHttp\\HandlerStack","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":168,"function":"transfer","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":187,"function":"requestAsync","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/Http/Client/Client.php","line":230,"function":"request","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***","https://office.example.de/hosting/capabilities",["/www/htdocs/w00d77ee/Owncloud_DATA/files_external/rootcerts.crt",45,[true],["Nextcloud Server Crawler","gzip"],true]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/Service/CapabilitiesService.php","line":135,"function":"get","class":"OC\\Http\\Client\\Client","type":"->","args":["https://office.example.de/hosting/capabilities",[45,[true]]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/Service/CapabilitiesService.php","line":73,"function":"refetch","class":"OCA\\Richdocuments\\Service\\CapabilitiesService","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/AppInfo/Application.php","line":90,"function":"getCapabilities","class":"OCA\\Richdocuments\\Service\\CapabilitiesService","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/AppFramework/Bootstrap/FunctionInjector.php","line":45,"function":"OCA\\Richdocuments\\AppInfo\\{closure}","class":"OCA\\Richdocuments\\AppInfo\\Application","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/AppFramework/Bootstrap/BootContext.php","line":50,"function":"injectFn","class":"OC\\AppFramework\\Bootstrap\\FunctionInjector","type":"->","args":[["Closure"]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/AppInfo/Application.php","line":89,"function":"injectFn","class":"OC\\AppFramework\\Bootstrap\\BootContext","type":"->","args":[["Closure"]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/AppFramework/Bootstrap/Coordinator.php","line":200,"function":"boot","class":"OCA\\Richdocuments\\AppInfo\\Application","type":"->","args":[["OC\\AppFramework\\Bootstrap\\BootContext"]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/App/AppManager.php","line":437,"function":"bootApp","class":"OC\\AppFramework\\Bootstrap\\Coordinator","type":"->","args":["richdocuments"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/App/AppManager.php","line":216,"function":"loadApp","class":"OC\\App\\AppManager","type":"->","args":["richdocuments"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/legacy/OC_App.php","line":126,"function":"loadApps","class":"OC\\App\\AppManager","type":"->","args":[[]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/base.php","line":1048,"function":"loadApps","class":"OC_App","type":"::","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/index.php","line":36,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","Line":210,"message":"Failed to fetch the Collabora capabilities endpoint: cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities","exception":{},"CustomMessage":"Failed to fetch the Collabora capabilities endpoint: cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities"}}
{"reqId":"xxz5POrZBJLiOArEgAAAEI","level":3,"time":"December 09, 2023 02:33:57","remoteAddr":"192.144.y.x","user":"--","app":"richdocuments","method":"GET","url":"/index.php/login","message":"Failed to fetch the Collabora capabilities endpoint: cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities","userAgent":"--","version":"27.1.3.2","exception":{"Exception":"GuzzleHttp\\Exception\\ConnectException","Message":"cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities","Code":0,"Trace":[{"file":"/www/htdocs/user/domains/server.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":158,"function":"createRejection","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/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":"/www/htdocs/user/domains/example.de/nextcloud/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":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":137,"function":"__invoke","class":"GuzzleHttp\\Handler\\CurlHandler","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/Http/Client/DnsPinMiddleware.php","line":114,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php","line":35,"function":"OC\\Http\\Client\\{closure}","class":"OC\\Http\\Client\\DnsPinMiddleware","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":31,"function":"__invoke","class":"GuzzleHttp\\PrepareBodyMiddleware","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":71,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":63,"function":"__invoke","class":"GuzzleHttp\\RedirectMiddleware","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php","line":75,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":331,"function":"__invoke","class":"GuzzleHttp\\HandlerStack","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":168,"function":"transfer","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":187,"function":"requestAsync","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/Http/Client/Client.php","line":230,"function":"request","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***","https://office.example.de/hosting/capabilities",["/www/htdocs/w00d77ee/Owncloud_DATA/files_external/rootcerts.crt",45,[true],["Nextcloud Server Crawler","gzip"],true]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/Service/CapabilitiesService.php","line":135,"function":"get","class":"OC\\Http\\Client\\Client","type":"->","args":["https://office.example.de/hosting/capabilities",[45,[true]]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/Service/CapabilitiesService.php","line":73,"function":"refetch","class":"OCA\\Richdocuments\\Service\\CapabilitiesService","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/Capabilities.php","line":106,"function":"getCapabilities","class":"OCA\\Richdocuments\\Service\\CapabilitiesService","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/CapabilitiesManager.php","line":74,"function":"getCapabilities","class":"OCA\\Richdocuments\\Capabilities","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/Template/JSConfigHelper.php","line":166,"function":"getCapabilities","class":"OC\\CapabilitiesManager","type":"->","args":[false,true]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/TemplateLayout.php","line":240,"function":"getConfig","class":"OC\\Template\\JSConfigHelper","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/legacy/OC_Template.php","line":182,"function":"__construct","class":"OC\\TemplateLayout","type":"->","args":["guest","core"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/public/AppFramework/Http/TemplateResponse.php","line":213,"function":"fetchPage","class":"OC_Template","type":"->","args":[[[],"Login"]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":182,"function":"render","class":"OCP\\AppFramework\\Http\\TemplateResponse","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/AppFramework/App.php","line":183,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[["OC\\Core\\Controller\\LoginController"],"showLoginForm"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/Route/Router.php","line":315,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OC\\Core\\Controller\\LoginController","showLoginForm",["OC\\AppFramework\\DependencyInjection\\DIContainer"],["core.login.showLoginForm"]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/base.php","line":1068,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/login"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/index.php","line":36,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","Line":210,"message":"Failed to fetch the Collabora capabilities endpoint: cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities","exception":{},"CustomMessage":"Failed to fetch the Collabora capabilities endpoint: cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities"}}
{"reqId":"xxx6GBz5sJLiOArEgAAAEI","level":3,"time":"December 09, 2023 02:34:42","remoteAddr":"192.144.y.x","user":"--","app":"richdocuments","method":"GET","url":"/index.php/login","message":"Failed to fetch the Collabora capabilities endpoint: cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities","userAgent":"--","version":"27.1.3.2","exception":{"Exception":"GuzzleHttp\\Exception\\ConnectException","Message":"cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities","Code":0,"Trace":[{"file":"/www/htdocs/user/domains/server.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","line":158,"function":"createRejection","class":"GuzzleHttp\\Handler\\CurlFactory","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/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":"/www/htdocs/user/domains/example.de/nextcloud/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":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":137,"function":"__invoke","class":"GuzzleHttp\\Handler\\CurlHandler","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/Http/Client/DnsPinMiddleware.php","line":114,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php","line":35,"function":"OC\\Http\\Client\\{closure}","class":"OC\\Http\\Client\\DnsPinMiddleware","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":31,"function":"__invoke","class":"GuzzleHttp\\PrepareBodyMiddleware","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/RedirectMiddleware.php","line":71,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Middleware.php","line":63,"function":"__invoke","class":"GuzzleHttp\\RedirectMiddleware","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/HandlerStack.php","line":75,"function":"GuzzleHttp\\{closure}","class":"GuzzleHttp\\Middleware","type":"::","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":331,"function":"__invoke","class":"GuzzleHttp\\HandlerStack","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":168,"function":"transfer","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***","*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Client.php","line":187,"function":"requestAsync","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/Http/Client/Client.php","line":230,"function":"request","class":"GuzzleHttp\\Client","type":"->","args":["*** sensitive parameters replaced ***","https://office.example.de/hosting/capabilities",["/www/htdocs/w00d77ee/Owncloud_DATA/files_external/rootcerts.crt",45,[true],["Nextcloud Server Crawler","gzip"],true]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/Service/CapabilitiesService.php","line":135,"function":"get","class":"OC\\Http\\Client\\Client","type":"->","args":["https://office.example.de/hosting/capabilities",[45,[true]]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/Service/CapabilitiesService.php","line":73,"function":"refetch","class":"OCA\\Richdocuments\\Service\\CapabilitiesService","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/Service/CapabilitiesService.php","line":89,"function":"getCapabilities","class":"OCA\\Richdocuments\\Service\\CapabilitiesService","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/apps/richdocuments/lib/Capabilities.php","line":110,"function":"hasDrawSupport","class":"OCA\\Richdocuments\\Service\\CapabilitiesService","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/CapabilitiesManager.php","line":74,"function":"getCapabilities","class":"OCA\\Richdocuments\\Capabilities","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/Template/JSConfigHelper.php","line":166,"function":"getCapabilities","class":"OC\\CapabilitiesManager","type":"->","args":[false,true]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/TemplateLayout.php","line":240,"function":"getConfig","class":"OC\\Template\\JSConfigHelper","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/legacy/OC_Template.php","line":182,"function":"__construct","class":"OC\\TemplateLayout","type":"->","args":["guest","core"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/public/AppFramework/Http/TemplateResponse.php","line":213,"function":"fetchPage","class":"OC_Template","type":"->","args":[[[],"Login"]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/AppFramework/Http/Dispatcher.php","line":182,"function":"render","class":"OCP\\AppFramework\\Http\\TemplateResponse","type":"->","args":[]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/AppFramework/App.php","line":183,"function":"dispatch","class":"OC\\AppFramework\\Http\\Dispatcher","type":"->","args":[["OC\\Core\\Controller\\LoginController"],"showLoginForm"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/private/Route/Router.php","line":315,"function":"main","class":"OC\\AppFramework\\App","type":"::","args":["OC\\Core\\Controller\\LoginController","showLoginForm",["OC\\AppFramework\\DependencyInjection\\DIContainer"],["core.login.showLoginForm"]]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/lib/base.php","line":1068,"function":"match","class":"OC\\Route\\Router","type":"->","args":["/login"]},{"file":"/www/htdocs/user/domains/example.de/nextcloud/index.php","line":36,"function":"handleRequest","class":"OC","type":"::","args":[]}],"File":"/www/htdocs/user/domains/example.de/nextcloud/3rdparty/guzzlehttp/guzzle/src/Handler/CurlFactory.php","Line":210,"message":"Failed to fetch the Collabora capabilities endpoint: cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities","exception":{},"CustomMessage":"Failed to fetch the Collabora capabilities endpoint: cURL error 28: Connection timed out after 45001 milliseconds (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://office.example.de/hosting/capabilities"}}
If there is no more elegant way to solve this problem, the bare minimum should be to (temporarily) auto disable the document server to at least be able to login and use the rest of nextcloud again.