[Bug]: file upload slows down and timeout
⚠️ 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
When uploading a file, the upload speed slows down up to a few bytes then timeouts.
Steps to reproduce
- Upload any file (select or drop)
- Hover on the progress bar on top and look at the upload speeds going down (< 1 KB∕s)
- Wait a few seconds
- File upload timeout
Expected behavior
Being able to upload. Right now, we can only use nextcloud as read only.
As a temporary solution, we are uploading to nextcloud via the linux files and execute php occ groupfolders:scan --all.
Nextcloud Server version
31
Operating system
Debian/Ubuntu
PHP engine version
PHP 8.3
Web server
Nginx
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?
Encryption is Disabled
What user-backends are you using?
- [x] Default user-backend (database)
- [x] LDAP/ Active Directory
- [ ] SSO - SAML
- [ ] Other
Configuration report
{
"system": {
"has_internet_connection": true,
"htaccess.RewriteBase": "\/",
"memcache.local": "\\OC\\Memcache\\APCu",
"apps_paths": [
{
"path": "\/var\/www\/html\/apps",
"url": "\/apps",
"writable": false
},
{
"path": "\/var\/www\/html\/custom_apps",
"url": "\/custom_apps",
"writable": true
}
],
"memcache.distributed": "\\OC\\Memcache\\Redis",
"memcache.locking": "\\OC\\Memcache\\Redis",
"redis": {
"host": "***REMOVED SENSITIVE VALUE***",
"password": "***REMOVED SENSITIVE VALUE***",
"port": 6379
},
"instanceid": "***REMOVED SENSITIVE VALUE***",
"overwritewebroot": "nc",
"overwriteprotocol": "https",
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"trusted_domains": [
"***REMOVED SENSITIVE VALUE***"
],
"version": "31.0.8.1",
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"dbtype": "mysql",
"overwrite.cli.url": "https:\/\/***REMOVED SENSITIVE VALUE***\/nc\/",
"dbname": "***REMOVED SENSITIVE VALUE***",
"dbhost": "***REMOVED SENSITIVE VALUE***",
"dbport": "3306",
"dbtableprefix": "oc_",
"mysql.utf8mb4": true,
"dbuser": "***REMOVED SENSITIVE VALUE***",
"dbpassword": "***REMOVED SENSITIVE VALUE***",
"installed": true,
"default_language": "fr",
"default_locale": "fr_FR",
"default_phone_region": "FR",
"ldapProviderFactory": "OCA\\User_LDAP\\LDAPProviderFactory",
"maintenance": false,
"loglevel": 2,
"mail_from_address": "***REMOVED SENSITIVE VALUE***",
"mail_smtpmode": "smtp",
"mail_sendmailmode": "smtp",
"mail_domain": "***REMOVED SENSITIVE VALUE***",
"mail_smtpport": 587,
"mail_smtphost": "***REMOVED SENSITIVE VALUE***",
"mail_smtpauthtype": "LOGIN",
"trashbin_retention_obligation": "0, 31",
"appstoreenabled": true,
"maintenance_window_start": 1
}
}
List of activated Apps
Enabled:
- activity: 4.0.0
- app_api: 5.0.2
- bruteforcesettings: 4.0.0
- checksum: 1.2.6
- circles: 31.0.0
- cloud_federation_api: 1.14.0
- dav: 1.33.0
- federatedfilesharing: 1.21.0
- files: 2.3.1
- files_downloadlimit: 4.0.0
- files_pdfviewer: 4.0.0
- files_reminders: 1.4.0
- files_sharing: 1.23.1
- files_trashbin: 1.21.0
- files_versions: 1.24.0
- groupfolders: 19.1.7
- logreader: 4.0.0
- lookup_server_connector: 1.19.0
- notifications: 4.0.0
- oauth2: 1.19.1
- password_policy: 3.0.0
- privacy: 3.0.0
- profile: 1.0.0
- provisioning_api: 1.21.0
- recommendations: 4.0.0
- related_resources: 2.0.0
- serverinfo: 3.0.0
- settings: 1.14.0
- text: 5.0.0
- theming: 2.6.1
- twofactor_backupcodes: 1.20.0
- user_ldap: 1.22.0
- viewer: 4.0.0
- webhook_listeners: 1.2.0
- workflowengine: 2.13.0
Disabled:
- admin_audit: 1.21.0 (installed 1.10.0)
- checksum_old: 1.2.5
- comments: 1.21.0 (installed 1.10.0)
- contactsinteraction: 1.12.0 (installed 1.1.0)
- dashboard: 7.11.0 (installed 7.0.0)
- encryption: 2.19.0
- federation: 1.21.0 (installed 1.10.1)
- files_external: 1.23.0
- firstrunwizard: 4.0.0 (installed 2.9.0)
- groupfolders_old: 18.0.9
- nextcloud_announcements: 3.0.0 (installed 1.9.0)
- photos: 4.0.0 (installed 1.2.0)
- sharebymail: 1.21.0 (installed 1.10.0)
- support: 3.0.0 (installed 1.3.0)
- survey_client: 3.0.0 (installed 1.8.0)
- suspicious_login: 9.0.1
- systemtags: 1.21.1 (installed 1.10.0)
- twofactor_nextcloud_notification: 5.0.0
- twofactor_totp: 13.0.0-dev.0
- updatenotification: 1.21.0 (installed 1.10.0)
- user_status: 1.11.0 (installed 1.0.1)
- weather_status: 1.11.0 (installed 1.0.0)
Nextcloud Signing status
No errors have been found.
Nextcloud Logs
{"reqId":"7kxju6wylWx1Myaj9e0k","level":1,"time":"2025-12-09T02:45:02+00:00","remoteAddr":"","user":"--","app":"OC\\Log\\Rotate","method":"","url":"/nc/cron.php","message":"Log file \"/var/www/html/data/nextcloud.log\" was over 104857600 bytes, moved to \"/var/www/html/data/nextcloud.log.1\"","userAgent":"--","version":"31.0.8.1","data":{"app":"OC\\Log\\Rotate"}}
{"reqId":"YbB1TxzxH3EiMd6NMey6","level":1,"time":"2025-12-09T02:45:02+00:00","remoteAddr":"","user":"--","app":"user_ldap","method":"","url":"/nc/cron.php","message":"service \"updateGroups\" - groups do not seem to be configured properly, aborting.","userAgent":"--","version":"31.0.8.1","data":{"app":"user_ldap"}}
{"reqId":"w47CGg4Sm1Bq5WhmhTZF","level":1,"time":"2025-12-09T02:45:16+00:00","remoteAddr":"10.2.0.50","user":"--","app":"core","method":"GET","url":"/nc/index.php","message":"Trusted domain error. \"10.2.0.50\" tried to access using \"10.2.0.53\" as host.","userAgent":"Zabbix","version":"31.0.8.1","data":{"app":"core"}}
{"reqId":"w47CGg4Sm1Bq5WhmhTZF","level":1,"time":"2025-12-09T02:45:16+00:00","remoteAddr":"10.2.0.50","user":"--","app":"no app in context","method":"GET","url":"/nc/index.php","message":"Unable to generate a URL for the named route \"ocs.password_policy.api.generate\" as such route does not exist.","userAgent":"Zabbix","version":"31.0.8.1","exception":{"Exception":"Symfony\\Component\\Routing\\Exception\\RouteNotFoundException","Message":"Unable to generate a URL for the named route \"ocs.password_policy.api.generate\" as such route does not exist.","Code":0,"Trace":[{"file":"/var/www/html/lib/private/Route/Router.php","line":387,"function":"generate","class":"Symfony\\Component\\Routing\\Generator\\UrlGenerator","type":"->","args":["ocs.password_policy.api.generate",[],1]},{"file":"/var/www/html/lib/private/Route/CachingRouter.php","line":50,"function":"generate","class":"OC\\Route\\Router","type":"->","args":["ocs.password_policy.api.generate",[],false]},{"file":"/var/www/html/lib/private/URLGenerator.php","line":99,"function":"generate","class":"OC\\Route\\CachingRouter","type":"->","args":["ocs.password_policy.API.generate",[],false]},{"file":"/var/www/html/apps/password_policy/lib/Capabilities.php","line":66,"function":"linkToOCSRouteAbsolute","class":"OC\\URLGenerator","type":"->","args":["password_policy.API.generate"]},{"file":"/var/www/html/lib/private/CapabilitiesManager.php","line":61,"function":"getCapabilities","class":"OCA\\Password_Policy\\Capabilities","type":"->","args":[]},{"file":"/var/www/html/lib/private/Template/JSConfigHelper.php","line":139,"function":"getCapabilities","class":"OC\\CapabilitiesManager","type":"->","args":[false,true]},{"file":"/var/www/html/lib/private/TemplateLayout.php","line":233,"function":"getConfig","class":"OC\\Template\\JSConfigHelper","type":"->","args":[]},{"file":"/var/www/html/lib/private/legacy/OC_Template.php","line":120,"function":"__construct","class":"OC\\TemplateLayout","type":"->","args":["guest","core"]},{"file":"/var/www/html/lib/private/Template/Base.php","line":113,"function":"fetchPage","class":"OC_Template","type":"->","args":[]},{"file":"/var/www/html/lib/base.php","line":828,"function":"printPage","class":"OC\\Template\\Base","type":"->","args":[]},{"file":"/var/www/html/lib/base.php","line":1192,"function":"init","class":"OC","type":"::","args":[]},{"file":"/var/www/html/index.php","line":22,"args":["/var/www/html/lib/base.php"],"function":"require_once"}],"File":"/var/www/html/3rdparty/symfony/routing/Generator/UrlGenerator.php","Line":134,"message":"Unable to generate a URL for the named route \"ocs.password_policy.api.generate\" as such route does not exist.","exception":{},"CustomMessage":"Unable to generate a URL for the named route \"ocs.password_policy.api.generate\" as such route does not exist."}}
{"reqId":"w47CGg4Sm1Bq5WhmhTZF","level":1,"time":"2025-12-09T02:45:16+00:00","remoteAddr":"10.2.0.50","user":"--","app":"no app in context","method":"GET","url":"/nc/index.php","message":"Unable to generate a URL for the named route \"ocs.password_policy.api.validate\" as such route does not exist.","userAgent":"Zabbix","version":"31.0.8.1","exception":{"Exception":"Symfony\\Component\\Routing\\Exception\\RouteNotFoundException","Message":"Unable to generate a URL for the named route \"ocs.password_policy.api.validate\" as such route does not exist.","Code":0,"Trace":[{"file":"/var/www/html/lib/private/Route/Router.php","line":387,"function":"generate","class":"Symfony\\Component\\Routing\\Generator\\UrlGenerator","type":"->","args":["ocs.password_policy.api.validate",[],1]},{"file":"/var/www/html/lib/private/Route/CachingRouter.php","line":50,"function":"generate","class":"OC\\Route\\Router","type":"->","args":["ocs.password_policy.api.validate",[],false]},{"file":"/var/www/html/lib/private/URLGenerator.php","line":99,"function":"generate","class":"OC\\Route\\CachingRouter","type":"->","args":["ocs.password_policy.API.validate",[],false]},{"file":"/var/www/html/apps/password_policy/lib/Capabilities.php","line":67,"function":"linkToOCSRouteAbsolute","class":"OC\\URLGenerator","type":"->","args":["password_policy.API.validate"]},{"file":"/var/www/html/lib/private/CapabilitiesManager.php","line":61,"function":"getCapabilities","class":"OCA\\Password_Policy\\Capabilities","type":"->","args":[]},{"file":"/var/www/html/lib/private/Template/JSConfigHelper.php","line":139,"function":"getCapabilities","class":"OC\\CapabilitiesManager","type":"->","args":[false,true]},{"file":"/var/www/html/lib/private/TemplateLayout.php","line":233,"function":"getConfig","class":"OC\\Template\\JSConfigHelper","type":"->","args":[]},{"file":"/var/www/html/lib/private/legacy/OC_Template.php","line":120,"function":"__construct","class":"OC\\TemplateLayout","type":"->","args":["guest","core"]},{"file":"/var/www/html/lib/private/Template/Base.php","line":113,"function":"fetchPage","class":"OC_Template","type":"->","args":[]},{"file":"/var/www/html/lib/base.php","line":828,"function":"printPage","class":"OC\\Template\\Base","type":"->","args":[]},{"file":"/var/www/html/lib/base.php","line":1192,"function":"init","class":"OC","type":"::","args":[]},{"file":"/var/www/html/index.php","line":22,"args":["/var/www/html/lib/base.php"],"function":"require_once"}],"File":"/var/www/html/3rdparty/symfony/routing/Generator/UrlGenerator.php","Line":134,"message":"Unable to generate a URL for the named route \"ocs.password_policy.api.validate\" as such route does not exist.","exception":{},"CustomMessage":"Unable to generate a URL for the named route \"ocs.password_policy.api.validate\" as such route does not exist."}}
{"reqId":"f5NGSJtA0m0OK9d3e0Bn","level":1,"time":"2025-12-09T02:45:46+00:00","remoteAddr":"10.2.0.50","user":"--","app":"core","method":"GET","url":"/nc/index.php","message":"Trusted domain error. \"10.2.0.50\" tried to access using \"10.2.0.53\" as host.","userAgent":"Zabbix","version":"31.0.8.1","data":{"app":"core"}}
{"reqId":"f5NGSJtA0m0OK9d3e0Bn","level":1,"time":"2025-12-09T02:45:46+00:00","remoteAddr":"10.2.0.50","user":"--","app":"no app in context","method":"GET","url":"/nc/index.php","message":"Unable to generate a URL for the named route \"ocs.password_policy.api.generate\" as such route does not exist.","userAgent":"Zabbix","version":"31.0.8.1","exception":{"Exception":"Symfony\\Component\\Routing\\Exception\\RouteNotFoundException","Message":"Unable to generate a URL for the named route \"ocs.password_policy.api.generate\" as such route does not exist.","Code":0,"Trace":[{"file":"/var/www/html/lib/private/Route/Router.php","line":387,"function":"generate","class":"Symfony\\Component\\Routing\\Generator\\UrlGenerator","type":"->","args":["ocs.password_policy.api.generate",[],1]},{"file":"/var/www/html/lib/private/Route/CachingRouter.php","line":50,"function":"generate","class":"OC\\Route\\Router","type":"->","args":["ocs.password_policy.api.generate",[],false]},{"file":"/var/www/html/lib/private/URLGenerator.php","line":99,"function":"generate","class":"OC\\Route\\CachingRouter","type":"->","args":["ocs.password_policy.API.generate",[],false]},{"file":"/var/www/html/apps/password_policy/lib/Capabilities.php","line":66,"function":"linkToOCSRouteAbsolute","class":"OC\\URLGenerator","type":"->","args":["password_policy.API.generate"]},{"file":"/var/www/html/lib/private/CapabilitiesManager.php","line":61,"function":"getCapabilities","class":"OCA\\Password_Policy\\Capabilities","type":"->","args":[]},{"file":"/var/www/html/lib/private/Template/JSConfigHelper.php","line":139,"function":"getCapabilities","class":"OC\\CapabilitiesManager","type":"->","args":[false,true]},{"file":"/var/www/html/lib/private/TemplateLayout.php","line":233,"function":"getConfig","class":"OC\\Template\\JSConfigHelper","type":"->","args":[]},{"file":"/var/www/html/lib/private/legacy/OC_Template.php","line":120,"function":"__construct","class":"OC\\TemplateLayout","type":"->","args":["guest","core"]},{"file":"/var/www/html/lib/private/Template/Base.php","line":113,"function":"fetchPage","class":"OC_Template","type":"->","args":[]},{"file":"/var/www/html/lib/base.php","line":828,"function":"printPage","class":"OC\\Template\\Base","type":"->","args":[]},{"file":"/var/www/html/lib/base.php","line":1192,"function":"init","class":"OC","type":"::","args":[]},{"file":"/var/www/html/index.php","line":22,"args":["/var/www/html/lib/base.php"],"function":"require_once"}],"File":"/var/www/html/3rdparty/symfony/routing/Generator/UrlGenerator.php","Line":134,"message":"Unable to generate a URL for the named route \"ocs.password_policy.api.generate\" as such route does not exist.","exception":{},"CustomMessage":"Unable to generate a URL for the named route \"ocs.password_policy.api.generate\" as such route does not exist."}}
{"reqId":"f5NGSJtA0m0OK9d3e0Bn","level":1,"time":"2025-12-09T02:45:46+00:00","remoteAddr":"10.2.0.50","user":"--","app":"no app in context","method":"GET","url":"/nc/index.php","message":"Unable to generate a URL for the named route \"ocs.password_policy.api.validate\" as such route does not exist.","userAgent":"Zabbix","version":"31.0.8.1","exception":{"Exception":"Symfony\\Component\\Routing\\Exception\\RouteNotFoundException","Message":"Unable to generate a URL for the named route \"ocs.password_policy.api.validate\" as such route does not exist.","Code":0,"Trace":[{"file":"/var/www/html/lib/private/Route/Router.php","line":387,"function":"generate","class":"Symfony\\Component\\Routing\\Generator\\UrlGenerator","type":"->","args":["ocs.password_policy.api.validate",[],1]},{"file":"/var/www/html/lib/private/Route/CachingRouter.php","line":50,"function":"generate","class":"OC\\Route\\Router","type":"->","args":["ocs.password_policy.api.validate",[],false]},{"file":"/var/www/html/lib/private/URLGenerator.php","line":99,"function":"generate","class":"OC\\Route\\CachingRouter","type":"->","args":["ocs.password_policy.API.validate",[],false]},{"file":"/var/www/html/apps/password_policy/lib/Capabilities.php","line":67,"function":"linkToOCSRouteAbsolute","class":"OC\\URLGenerator","type":"->","args":["password_policy.API.validate"]},{"file":"/var/www/html/lib/private/CapabilitiesManager.php","line":61,"function":"getCapabilities","class":"OCA\\Password_Policy\\Capabilities","type":"->","args":[]},{"file":"/var/www/html/lib/private/Template/JSConfigHelper.php","line":139,"function":"getCapabilities","class":"OC\\CapabilitiesManager","type":"->","args":[false,true]},{"file":"/var/www/html/lib/private/TemplateLayout.php","line":233,"function":"getConfig","class":"OC\\Template\\JSConfigHelper","type":"->","args":[]},{"file":"/var/www/html/lib/private/legacy/OC_Template.php","line":120,"function":"__construct","class":"OC\\TemplateLayout","type":"->","args":["guest","core"]},{"file":"/var/www/html/lib/private/Template/Base.php","line":113,"function":"fetchPage","class":"OC_Template","type":"->","args":[]},{"file":"/var/www/html/lib/base.php","line":828,"function":"printPage","class":"OC\\Template\\Base","type":"->","args":[]},{"file":"/var/www/html/lib/base.php","line":1192,"function":"init","class":"OC","type":"::","args":[]},{"file":"/var/www/html/index.php","line":22,"args":["/var/www/html/lib/base.php"],"function":"require_once"}],"File":"/var/www/html/3rdparty/symfony/routing/Generator/UrlGenerator.php","Line":134,"message":"Unable to generate a URL for the named route \"ocs.password_policy.api.validate\" as such route does not exist.","exception":{},"CustomMessage":"Unable to generate a URL for the named route \"ocs.password_policy.api.validate\" as such route does not exist."}}
Additional info
We are using a docker image to host nextcloud.
Nextcloud is behind 2 nginx instances, here are the configs :
- The nginx where nextcloud is installed :
location /nc/ {
proxy_buffering off;
client_max_body_size 0;
client_body_timeout 1d;
proxy_read_timeout 1d;
proxy_send_timeout 1d;
proxy_headers_hash_max_size 512;
proxy_headers_hash_bucket_size 64;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://nextcloud-app:80/; // container
}
- The second nginx (on another machine) :
location /nc/ {
proxy_buffering off;
client_max_body_size 0;
client_body_timeout 1d;
proxy_read_timeout 1d;
proxy_send_timeout 1d;
proxy_headers_hash_max_size 512;
proxy_headers_hash_bucket_size 64;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Front-End-Https on;
proxy_pass http://<nextcloud_server>:80/nc/;
}
Here is a video of the bug :
https://github.com/user-attachments/assets/08a3a2c3-0770-40f4-bd6c-4dff44352174
Also, we are using group folders.
Please troubleshoot your situation via the community help forum: https://help.nextcloud.com
When you do so, make sure to fill out the entire support template there, including when the problem started.
P.S. Your several maintenance releases behind within the v31 tree.
Hi, I solved it by enabling proxy_buffering on both my NGINX instances.