Hi all,
I’m a generally happy user of NextCloud, but just recently I had a reason to try bulk-uploading a stack of files from a SD card, and keep hitting roadblocks mounting the WebDAV volume.
It works just fine for calendars and contacts, which is primarily what I set it up for.
For WebDAV browsing though, KDE’s Dolphin displays no files, and davfs2
reports 429 Too Many Requests
after merely just logging in.
How does one log in and browse a WebDAV volume with 0 requests? I’ve never known a server to know what I’m looking for without me telling it.
The server runs as a virtual machine on my home server cluster, using a Ceph RBD for disk volumes. Internally, the set-up uses LDAP for user account synchronisation with Postfix/dovecot, PostgreSQL 15 for database. RBD volumes are not super-fast, but normally cope just fine for what I need.
The Basics
-
Nextcloud Server version:
gapmx:~# apk list -I | grep nextcloud
reports:nextcloud30-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-activity-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-circles-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-dashboard-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-default-apps-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-files_downloadlimit-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-files_pdfviewer-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-files_reminders-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-files_sharing-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-logreader-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-notifications-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-occ-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-password_policy-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-pgsql-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-photos-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-privacy-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-recommendations-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only)
[installed]`nextcloud30-serverinfo-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only)
[installed]`nextcloud30-sharebymail-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only)
[installed]`nextcloud30-survey_client-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only)
[installed]`nextcloud30-text-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
nextcloud30-user_ldap-30.0.8-r0 x86_64 {nextcloud30} (AGPL-3.0-only) [installed]
-
Operating system and version:
- AlpineLinux 3.21.3 AMD64
-
Web server and version:
apache2-2.4.62-r0 x86_64 {apache2} (Apache-2.0) [installed]
apache2-openrc-2.4.62-r0 x86_64 {apache2} (Apache-2.0) [installed]
apache2-ssl-2.4.62-r0 x86_64 {apache2} (Apache-2.0) [installed]
-
Reverse proxy and version
- No reverse proxy in use
-
PHP version:
gapmx:~# apk list -I | grep php
reports:php83-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-apache2-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-bcmath-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-common-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-ctype-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-curl-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-dom-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-exif-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-fileinfo-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-gd-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-gmp-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-iconv-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-intl-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-ldap-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-mbstring-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-opcache-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-openssl-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-pcntl-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-pdo-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-pdo_pgsql-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-pgsql-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-posix-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-session-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-simplexml-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-xml-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-xmlreader-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-xmlwriter-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
php83-zip-8.3.19-r0 x86_64 {php83} (PHP-3.01 BSD-3-Clause LGPL-2.0-or-later MIT Zend-2.0) [installed]
-
Is this the first time you’ve seen this error?:
- Yes
-
When did this problem seem to first start?
- This fortnight
-
Installation method
apk install
-
Are you using CloudfIare, mod_security, or similar?
- No
Summary of the issue you are facing:
KDE’s Dolphin file manager reports “Folder is empty” for a path that should contain files (and does according to NextCloud’s “Files” UI).
davfs2
refuses to mount with 429 Too Many Requests
given as the reason.
Steps to replicate it (hint: details matter!):
- Open Dolphin
- Visit
webdavs://nextcloud.example.org/remote.php/dav/files/USER/folders/
- Enter USER and access token password
Observe “Folder is empty”.
- Try as
root
:mount -t davfs https://nextcloud.example.org/remote.php/dav/files/USER/folders/ /home/USER/nextcloud/ -o uid=USER,gid=GROUP,username=USER
Observe 429 Too Many Requests
.
Log entries
Nextcloud
{"reqId":"hZYS4n2j0hHWUIkEQh3D","level":3,"time":"2025-04-07T03:18:38+00:00","remoteAddr":"2001:db8::42a3:8dd8:71b7:9032","user":"--","app":"webdav","method":"OPTIONS","url":"/remote.php/dav/files/USER/folders/","message":"Exception thrown: OCA\\DAV\\Connector\\Sabre\\Exception\\TooManyRequests","userAgent":"davfs2/1.6.1 neon/0.33.0","version":"30.0.8.1","exception":{"Exception":"OCA\\DAV\\Connector\\Sabre\\Exception\\TooManyRequests","Message":"","Code":0,"Trace":[{"file":"/usr/share/webapps/nextcloud/3rdparty/sabre/dav/lib/DAV/Auth/Backend/AbstractBasic.php","line":103,"function":"validateUserPass","class":"OCA\\DAV\\Connector\\Sabre\\Auth","type":"->","args":["*** sensitive parameters replaced ***"]},{"file":"/usr/share/webapps/nextcloud/apps/dav/lib/Connector/Sabre/Auth.php","line":198,"function":"check","class":"Sabre\\DAV\\Auth\\Backend\\AbstractBasic","type":"->"},{"file":"/usr/share/webapps/nextcloud/apps/dav/lib/Connector/Sabre/Auth.php","line":112,"function":"auth","class":"OCA\\DAV\\Connector\\Sabre\\Auth","type":"->"},{"file":"/usr/share/webapps/nextcloud/3rdparty/sabre/dav/lib/DAV/Auth/Plugin.php","line":179,"function":"check","class":"OCA\\DAV\\Connector\\Sabre\\Auth","type":"->"},{"file":"/usr/share/webapps/nextcloud/3rdparty/sabre/dav/lib/DAV/Auth/Plugin.php","line":135,"function":"check","class":"Sabre\\DAV\\Auth\\Plugin","type":"->"},{"file":"/usr/share/webapps/nextcloud/3rdparty/sabre/event/lib/WildcardEmitterTrait.php","line":89,"function":"beforeMethod","class":"Sabre\\DAV\\Auth\\Plugin","type":"->"},{"file":"/usr/share/webapps/nextcloud/3rdparty/sabre/dav/lib/DAV/Server.php","line":456,"function":"emit","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/usr/share/webapps/nextcloud/apps/dav/lib/Connector/Sabre/Server.php","line":49,"function":"invokeMethod","class":"Sabre\\DAV\\Server","type":"->"},{"file":"/usr/share/webapps/nextcloud/apps/dav/lib/Server.php","line":374,"function":"start","class":"OCA\\DAV\\Connector\\Sabre\\Server","type":"->"},{"file":"/usr/share/webapps/nextcloud/apps/dav/appinfo/v2/remote.php","line":19,"function":"exec","class":"OCA\\DAV\\Server","type":"->"},{"file":"/usr/share/webapps/nextcloud/remote.php","line":146,"args":["/usr/share/webapps/nextcloud/apps/dav/appinfo/v2/remote.php"],"function":"require_once"}],"File":"/usr/share/webapps/nextcloud/apps/dav/lib/Connector/Sabre/Auth.php","Line":100,"message":"","exception":{},"CustomMessage":"Exception thrown: OCA\\DAV\\Connector\\Sabre\\Exception\\TooManyRequests"}}
Web server / Reverse Proxy
2001:db8::42a3:8dd8:71b7:9032 - USER [07/Apr/2025:13:18:38 +1000] "OPTIONS /remote.php/dav/files/USER/folders/ HTTP
/1.1" 429 285
Configuration
Nextcloud
The output of occ config:list system
or similar is best, but, if not possible, the contents of your config.php
file from /path/to/nextcloud
is fine (make sure to remove any identifiable information!):
gapmx:~# occ config:list system
{
"system": {
"datadirectory": "***REMOVED SENSITIVE VALUE***",
"logfile": "\/var\/log\/nextcloud\/nextcloud.log",
"apps_paths": [
{
"path": "\/usr\/share\/webapps\/nextcloud\/apps",
"url": "\/apps",
"writable": false
},
{
"path": "\/var\/lib\/nextcloud\/apps",
"url": "\/apps-appstore",
"writable": true
}
],
"updatechecker": false,
"check_for_working_htaccess": false,
"installed": true,
"instanceid": "***REMOVED SENSITIVE VALUE***",
"passwordsalt": "***REMOVED SENSITIVE VALUE***",
"secret": "***REMOVED SENSITIVE VALUE***",
"trusted_domains": [
"gapmx.vk4msl.com"
],
"dbtype": "pgsql",
"version": "30.0.8.1",
"overwrite.cli.url": "http:\/\/gapmx.vk4msl.com",
"dbname": "***REMOVED SENSITIVE VALUE***",
"dbhost": "***REMOVED SENSITIVE VALUE***",
"dbport": "",
"dbtableprefix": "oc_",
"dbuser": "***REMOVED SENSITIVE VALUE***",
"dbpassword": "***REMOVED SENSITIVE VALUE***",
"twofactor_enforced": "false",
"twofactor_enforced_groups": [],
"twofactor_enforced_excluded_groups": [],
"mail_from_address": "***REMOVED SENSITIVE VALUE***",
"mail_smtpmode": "smtp",
"mail_sendmailmode": "smtp",
"mail_domain": "***REMOVED SENSITIVE VALUE***",
"mail_smtphost": "***REMOVED SENSITIVE VALUE***",
"ldapProviderFactory": "OCA\\User_LDAP\\LDAPProviderFactory",
"default_phone_region": "AU",
"loglevel": 2,
"maintenance": false,
"theme": ""
}
}
Apps
The output of occ app:list
(if possible).
gapmx:~# occ app:list
Enabled:
- activity: 3.0.0
- app_api: 4.0.6
- bruteforcesettings: 3.0.0
- calendar: 5.0.6
- circles: 30.0.0
- cloud_federation_api: 1.13.0
- contacts: 6.1.1
- contactsinteraction: 1.11.0
- dashboard: 7.10.0
- dav: 1.31.1
- federatedfilesharing: 1.20.0
- files: 2.2.0
- files_downloadlimit: 3.0.0
- files_pdfviewer: 3.0.0
- files_reminders: 1.3.0
- files_sharing: 1.22.0
- gpxpod: 7.0.4
- integration_mastodon: 2.0.6
- jitsi: 0.19.0
- keeweb: 0.6.20
- logreader: 3.0.0
- lookup_server_connector: 1.18.0
- mail: 4.0.7
- maps: 1.5.0
- notes: 4.11.0
- notifications: 3.0.0
- oauth2: 1.18.1
- oidc: 1.0.0
- password_policy: 2.0.0
- photos: 3.0.2
- privacy: 2.0.0
- provisioning_api: 1.20.0
- recommendations: 3.0.0
- related_resources: 1.5.0
- richdocuments: 8.5.2
- serverinfo: 2.0.0
- settings: 1.13.0
- sharebymail: 1.20.0
- survey_client: 2.0.0
- text: 4.1.0
- theming: 2.6.0
- twofactor_backupcodes: 1.19.0
- twofactor_nextcloud_notification: 4.0.0
- twofactor_totp: 12.0.0-dev
- twofactor_webauthn: 2.0.0
- user_ldap: 1.21.0
- viewer: 3.0.0
- whiteboard: 1.0.4
- workflowengine: 2.12.0
Disabled:
- ocsms: 2.2.0
- sip_trip_phone: 1.1.6 (installed 1.1.6)
- spreed: 20.1.0 (installed 20.1.0)
- transfer: 0.6.3 (installed 0.6.1)