KDE Dolphin not showing WebDAV files. davfs2 reports 429 Too Many Requests

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!):

  1. Open Dolphin
  2. Visit webdavs://nextcloud.example.org/remote.php/dav/files/USER/folders/
  3. Enter USER and access token password

Observe “Folder is empty”.

  1. 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)

Hi sjlongland,

Welcome to the forums!

Most of the times I’m unable to get Dolphin to talk WebDAV (KDE on Debian 12), so I won’t be of much help getting yours running.

As a workaround, I mount the location over SSHFS. If your bulk upload is occuring not too often, SSHFS + occ files:scan may suit you as a workaround.

I imagine you already considered that and just like to get WebDAV to work. I hope another passer-by can help you (and maybe me) out!