Error 503 on Webdav

Nextcloud version: 12.0.4 RC1
Operating system and version: Ubuntu 16.04.3 LTS
Apache or nginx version: nginx 1.10.3
PHP version: 7.0.22
Is this the first time you’ve seen this error?: Yes

Can you reliably replicate it? (If so, please outline steps):

  • Use recommended nginx config from docs
  • Implement hardening procedures supplied from the admin page
  • Use something that tries to sync with WebDAV, in my case, KeeWeb

The issue you are facing:
I’ve been using Nextcloud for well over a year. The main purpose is to InstantUpload images and videos from my phone, as well as syncing contacts and calendar through DAVdroid as an alternative to Google. CardDAV/CalDAV thus works fine, however, when I recently got the idea that I wanted my passwords stored on my own server rather than on a server in the United States, I found KeeWeb. But when I try to sync through WebDAV, I get a HTTP 503 error. Although, if I insert the URL supplied in KeeWeb directly into a browser, I get the login prompt and if correct user/pass is inserted I get to download the file as expected.

Of course I looked up the 503 error, but my system is not in maintenance mode. And I’m not sure what service is unavailable.

Also, this happens with Buttercup and their Chrome extension as well, where I’m not able to browse and select a .bcup-file to sync with. And if I check the console, it shows error 503.

My setup is as described. I’m using the nginx config from the docs page, with the only modification that I’m also using the add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";-header in the “root” along with the other headers, as per recommendations through the admin page.

So I’m wondering if there’s a setting hidden somewhere, or if my nginx config is missing something.

The output of your Nextcloud log in Admin > Logging:
Nothing relating this issue

The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

$CONFIG = array (
  'instanceid' => '_____',
  'passwordsalt' => '_____',
  'secret' => '_____',
  'trusted_domains' => 
  array (
    0 => '_____',
  'datadirectory' => '_____',
  'overwrite.cli.url' => '_____',
  'dbtype' => 'mysql',
  'version' => '',
  'dbname' => '_____',
  'dbhost' => 'localhost',
  'dbport' => '',
  'dbtableprefix' => '_____',
  'dbuser' => '_____',
  'dbpassword' => '_____',
  'logtimezone' => 'UTC',
  'installed' => true,
  'memcache.local' => '\\OC\\Memcache\\Redis',
  'memcache.locking' => '\\OC\\Memcache\\Redis',
  'redis' => 
  array (
    'host' => '/var/run/redis/redis.sock',
    'port' => 0,
  'maintenance' => false,
  'theme' => '',
  'loglevel' => 0,
  'appstore.experimental.enabled' => true,
  '' => 'beta',

The output of your Apache/nginx/system log in /var/log/____:
There’s no detailed description in either the access.log or the error.log.

I have the exact same problem as you.
I managed to fix by updating the lib/base.php file as described here :
But this need to be done after each update.

For future poor souls (like myself) who get dumped here after searching the web: You need to exempt your client’s UserAgent. For example, if it’s Buttercup, add Electron:

'csrf.optout' => array(
    '/^WebDAVFS/', // OS X Finder
    '/^Microsoft-WebDAV-MiniRedir/', // Windows webdav drive
    '/^\bElectron\b\/'. // This is for Buttercup; \b means word boundary
    '/YoMama 1.2/', // any other client....

The above goes in your config.php, no need to edit core/lib files.

1 Like

Hello, you saved me a ton of research right there ! Webdav suddently stopped working yesterday for no apparent reason… added ‘/RaiDrive/’ and ‘/^Microsoft-WebDAV-MiniRedir/’ and it’s working again.

Thank you !