centOS7 + docker + external storage with s3 compatible storage

  • Nextcloud version (eg, 20.0.5): 23.0.3
    Operating system and version (eg, Ubuntu 20.04): CentOS 7.8
    Apache or nginx version (eg, Apache 2.4.25): Apache
    PHP version (eg, 7.4): php 8.0.18
    Docker version : 20.10.14
    Docker-compose version : 1.29.2

  • The issue you are facing :

    • hi all,
      I tried to mount my s3 compatible storage as external storage on GUI.
      and there is no error when i save my storage information.
      But I got error when I enter the folder that mounted as external storage.

    • is it possible, to use s3 compatible storage as external storage on docker?

    • in logs
      <Message>GET BUCKET VERSIONING not supported in container mode</Message>
      “in container mode” means docker container?
      please let me know how to solve this problem… thanks

  • Is this the first time you’ve seen this error? (Y/N): Y

  • Steps to replicate it :

    1. get docker-compose.yaml (Base version - apache) from github
    2. docker-compose up -d
    3. admin user top right menu ‘Apps’ → ‘External storage support’ [able check] on GUI
    4. admin user top right menu ‘Settings’ → left menu ‘Administration’ → ‘External Storage’ → add storage(Amazon S3)
    5. admin user top left menu ‘Files’ → ‘External Storage’ → enter the mounted folder → Error
  • The output of your Nextcloud log in Admin > Logging :

    • Aws\S3\Exception\S3Exception: Error executing “GetBucketVersioning” on “https://my-bucket-name.kr.object.ncloudstorage.com/?versioning”; AWS HTTP error: Client error: GET https://my-bucket-name.kr.object.ncloudstorage.com/?versioning resulted in a 400 Bad Request response: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>UnsupportedOperationGET BUCKET VERSI (truncated…) UnsupportedOperation (client): GET BUCKET VERSIONING not supported in container mode - <?xml version="1.0" encoding="UTF-8" standalone="yes"?>UnsupportedOperationGET BUCKET VERSIONING not supported in container mode/my-bucket-name/7da53007-67d7-40d3-84f2-f1bcbd5f1bab400
  • The output of your config.php file in /path/to/nextcloud (make sure you remove any identifiable information!):

<?php
$CONFIG = array (
  'htaccess.RewriteBase' => '/',
  'memcache.local' => '\\OC\\Memcache\\APCu',
  'apps_paths' =>
  array (
    0 =>
    array (
      'path' => '/var/www/html/apps',
      'url' => '/apps',
      'writable' => false,
    ),
    1 =>
    array (
      'path' => '/var/www/html/custom_apps',
      'url' => '/custom_apps',
      'writable' => true,
    ),
  ),
  'instanceid' => 'instanceid',
  'passwordsalt' => 'pwd',
  'secret' => 'secret',
  'trusted_domains' =>
  array (
    0 => 'url',
  ),
  'datadirectory' => '/var/www/html/data',
  'dbtype' => 'mysql',
  'version' => '23.0.3.2',
  'overwrite.cli.url' => 'http://my-url',
  'dbname' => 'my-dbname',
  'dbhost' => 'db',
  'dbport' => '',
  'dbtableprefix' => 'oc_',
  'mysql.utf8mb4' => true,
  'dbuser' => 'my-dbuser',
  'dbpassword' => 'my-dbpassword',
  'installed' => true,
.
.
.

Output errors in nextcloud.log in /var/www/ or as admin user in top right menu, filtering for errors. Use a pastebin service if necessary.

Aws\S3\Exception\S3Exception: Error executing "GetBucketVersioning" on "https://nc-dt-bucket.kr.object.ncloudstorage.com/?versioning"; AWS HTTP error: Client error: `GET https://nc-dt-bucket.kr.object.ncloudstorage.com/?versioning` resulted in a `400 Bad Request` response: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><Error><Code>UnsupportedOperation</Code><Message>GET BUCKET VERSI (truncated...) UnsupportedOperation (client): GET BUCKET VERSIONING not supported in container mode - <?xml version="1.0" encoding="UTF-8" standalone="yes"?><Error><Code>UnsupportedOperation</Code><Message>GET BUCKET VERSIONING not supported in container mode</Message><Resource>/nc-dt-bucket/</Resource><RequestId>0f81aab9-5d48-42a7-bf33-75809cbcabe7</RequestId><httpStatusCode>400</httpStatusCode></Error>

0. /var/www/html/3rdparty/aws/aws-sdk-php/src/WrappedHttpHandler.php - line 97:Aws\WrappedHttpHandler->parseError("*** sensiti ... *", GuzzleHttp\Psr7\Request {}, Aws\Command {}, [])
1. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 204:Aws\WrappedHttpHandler->Aws\{closure}("*** sensiti ... *")
2. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 169:GuzzleHttp\Promise\Promise::callHandler(2, "*** sensiti ... *", null)
3. /var/www/html/3rdparty/guzzlehttp/promises/src/RejectedPromise.php - line 42:GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}("*** sensiti ... *")
4. /var/www/html/3rdparty/guzzlehttp/promises/src/TaskQueue.php - line 48:GuzzleHttp\Promise\RejectedPromise::GuzzleHttp\Promise\{closure}("*** sensiti ... *")
5. /var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php - line 158:GuzzleHttp\Promise\TaskQueue->run()
6. /var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php - line 183:GuzzleHttp\Handler\CurlMultiHandler->tick()
7. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 248:GuzzleHttp\Handler\CurlMultiHandler->execute(true)
8. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 224:GuzzleHttp\Promise\Promise->invokeWaitFn()
9. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 269:GuzzleHttp\Promise\Promise->waitIfPending()
10. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 226:GuzzleHttp\Promise\Promise->invokeWaitList()
11. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 269:GuzzleHttp\Promise\Promise->waitIfPending()
12. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 226:GuzzleHttp\Promise\Promise->invokeWaitList()
13. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 62:GuzzleHttp\Promise\Promise->waitIfPending()
14. /var/www/html/3rdparty/aws/aws-sdk-php/src/AwsClientTrait.php - line 58:GuzzleHttp\Promise\Promise->wait()
15. /var/www/html/3rdparty/aws/aws-sdk-php/src/AwsClientTrait.php - line 86:Aws\AwsClient->execute(Aws\Command {})
16. /var/www/html/apps/files_external/lib/Lib/Storage/AmazonS3.php - line 735:Aws\AwsClient->__call("getBucketVersioning", [ { Bucket: "nc-dt-bucket"}])
17. /var/www/html/apps/files_external/lib/Lib/Storage/AmazonS3.php - line 712:OCA\Files_External\Lib\Storage\AmazonS3->versioningEnabled()
18. /var/www/html/apps/files_external/lib/Lib/Storage/AmazonS3.php - line 354:OCA\Files_External\Lib\Storage\AmazonS3->getDirectoryMetaData(".")
19. /var/www/html/lib/private/Files/Storage/Common.php - line 187:OCA\Files_External\Lib\Storage\AmazonS3->stat(".")
20. /var/www/html/lib/private/Files/Storage/Common.php - line 713:OC\Files\Storage\Common->filemtime("")
21. /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php - line 599:OC\Files\Storage\Common->getMetaData("")
22. /var/www/html/lib/private/Files/Storage/Wrapper/PermissionsMask.php - line 140:OC\Files\Storage\Wrapper\Wrapper->getMetaData("")
23. /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php - line 599:OC\Files\Storage\Wrapper\PermissionsMask->getMetaData("")
24. /var/www/html/lib/private/Files/Storage/Wrapper/Availability.php - line 447:OC\Files\Storage\Wrapper\Wrapper->getMetaData("")
25. /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php - line 599:OC\Files\Storage\Wrapper\Availability->getMetaData("")
26. /var/www/html/lib/private/Files/Cache/Scanner.php - line 116:OC\Files\Storage\Wrapper\Wrapper->getMetaData("")
27. /var/www/html/lib/private/Files/Cache/Scanner.php - line 154:OC\Files\Cache\Scanner->getData("")
28. /var/www/html/lib/private/Files/View.php - line 1493:OC\Files\Cache\Scanner->scanFile("")
29. /var/www/html/apps/dav/lib/Connector/Sabre/Directory.php - line 264:OC\Files\View->getDirectoryContent("/")
30. /var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php - line 71:OCA\DAV\Connector\Sabre\Directory->getChildren()
31. /var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php - line 116:OCA\DAV\Connector\Sabre\CommentPropertiesPlugin->cacheDirectory(OCA\DAV\Files\FilesHome {})
32. /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php - line 89:OCA\DAV\Connector\Sabre\CommentPropertiesPlugin->handleGetProperties(Sabre\DAV\PropFind {}, OCA\DAV\Files\FilesHome {})
33. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 1052:Sabre\DAV\Server->emit("propFind", [ Sabre\DAV\ ... }])
34. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 984:Sabre\DAV\Server->getPropertiesByNode(Sabre\DAV\PropFind {}, OCA\DAV\Files\FilesHome {})
35. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 1661:Sabre\DAV\Server->getPropertiesIteratorForPath("files/admin", [ "{DAV:}get ... "], 1)
36. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 1646:Sabre\DAV\Server->writeMultiStatus(Sabre\Xml\Wr ... ]}, Generator {}, false)
37. /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php - line 346:Sabre\DAV\Server->generateMultiStatus(Generator {}, false)
38. /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php - line 89:Sabre\DAV\CorePlugin->httpPropFind(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})
39. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 472:Sabre\DAV\Server->emit("method:PROPFIND", [ Sabre\HTTP ... }])
40. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 253:Sabre\DAV\Server->invokeMethod(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})
41. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 321:Sabre\DAV\Server->start()
42. /var/www/html/apps/dav/lib/Server.php - line 339:Sabre\DAV\Server->exec()
43. /var/www/html/apps/dav/appinfo/v2/remote.php - line 35:OCA\DAV\Server->exec()
44. /var/www/html/remote.php - line 166:require_once("/var/www/ht ... p")

Caused by GuzzleHttp\Exception\ClientException: Client error: `GET https://nc-dt-bucket.kr.object.ncloudstorage.com/?versioning` resulted in a `400 Bad Request` response: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><Error><Code>UnsupportedOperation</Code><Message>GET BUCKET VERSI (truncated...)

0. /var/www/html/3rdparty/guzzlehttp/guzzle/src/Middleware.php - line 69:GuzzleHttp\Exception\RequestException::create(GuzzleHttp\Psr7\Request {}, "*** sensiti ... *", null, [], null)
1. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 204:GuzzleHttp\Middleware::GuzzleHttp\{closure}("*** sensiti ... *")
2. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 153:GuzzleHttp\Promise\Promise::callHandler(1, "*** sensiti ... *", null)
3. /var/www/html/3rdparty/guzzlehttp/promises/src/TaskQueue.php - line 48:GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}("*** sensiti ... *")
4. /var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php - line 158:GuzzleHttp\Promise\TaskQueue->run()
5. /var/www/html/3rdparty/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php - line 183:GuzzleHttp\Handler\CurlMultiHandler->tick()
6. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 248:GuzzleHttp\Handler\CurlMultiHandler->execute(true)
7. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 224:GuzzleHttp\Promise\Promise->invokeWaitFn()
8. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 269:GuzzleHttp\Promise\Promise->waitIfPending()
9. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 226:GuzzleHttp\Promise\Promise->invokeWaitList()
10. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 269:GuzzleHttp\Promise\Promise->waitIfPending()
11. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 226:GuzzleHttp\Promise\Promise->invokeWaitList()
12. /var/www/html/3rdparty/guzzlehttp/promises/src/Promise.php - line 62:GuzzleHttp\Promise\Promise->waitIfPending()
13. /var/www/html/3rdparty/aws/aws-sdk-php/src/AwsClientTrait.php - line 58:GuzzleHttp\Promise\Promise->wait()
14. /var/www/html/3rdparty/aws/aws-sdk-php/src/AwsClientTrait.php - line 86:Aws\AwsClient->execute(Aws\Command {})
15. /var/www/html/apps/files_external/lib/Lib/Storage/AmazonS3.php - line 735:Aws\AwsClient->__call("getBucketVersioning", [ { Bucket: "nc-dt-bucket"}])
16. /var/www/html/apps/files_external/lib/Lib/Storage/AmazonS3.php - line 712:OCA\Files_External\Lib\Storage\AmazonS3->versioningEnabled()
17. /var/www/html/apps/files_external/lib/Lib/Storage/AmazonS3.php - line 354:OCA\Files_External\Lib\Storage\AmazonS3->getDirectoryMetaData(".")
18. /var/www/html/lib/private/Files/Storage/Common.php - line 187:OCA\Files_External\Lib\Storage\AmazonS3->stat(".")
19. /var/www/html/lib/private/Files/Storage/Common.php - line 713:OC\Files\Storage\Common->filemtime("")
20. /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php - line 599:OC\Files\Storage\Common->getMetaData("")
21. /var/www/html/lib/private/Files/Storage/Wrapper/PermissionsMask.php - line 140:OC\Files\Storage\Wrapper\Wrapper->getMetaData("")
22. /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php - line 599:OC\Files\Storage\Wrapper\PermissionsMask->getMetaData("")
23. /var/www/html/lib/private/Files/Storage/Wrapper/Availability.php - line 447:OC\Files\Storage\Wrapper\Wrapper->getMetaData("")
24. /var/www/html/lib/private/Files/Storage/Wrapper/Wrapper.php - line 599:OC\Files\Storage\Wrapper\Availability->getMetaData("")
25. /var/www/html/lib/private/Files/Cache/Scanner.php - line 116:OC\Files\Storage\Wrapper\Wrapper->getMetaData("")
26. /var/www/html/lib/private/Files/Cache/Scanner.php - line 154:OC\Files\Cache\Scanner->getData("")
27. /var/www/html/lib/private/Files/View.php - line 1493:OC\Files\Cache\Scanner->scanFile("")
28. /var/www/html/apps/dav/lib/Connector/Sabre/Directory.php - line 264:OC\Files\View->getDirectoryContent("/")
29. /var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php - line 71:OCA\DAV\Connector\Sabre\Directory->getChildren()
30. /var/www/html/apps/dav/lib/Connector/Sabre/CommentPropertiesPlugin.php - line 116:OCA\DAV\Connector\Sabre\CommentPropertiesPlugin->cacheDirectory(OCA\DAV\Files\FilesHome {})
31. /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php - line 89:OCA\DAV\Connector\Sabre\CommentPropertiesPlugin->handleGetProperties(Sabre\DAV\PropFind {}, OCA\DAV\Files\FilesHome {})
32. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 1052:Sabre\DAV\Server->emit("propFind", [ Sabre\DAV\ ... }])
33. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 984:Sabre\DAV\Server->getPropertiesByNode(Sabre\DAV\PropFind {}, OCA\DAV\Files\FilesHome {})
34. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 1661:Sabre\DAV\Server->getPropertiesIteratorForPath("files/admin", [ "{DAV:}get ... "], 1)
35. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 1646:Sabre\DAV\Server->writeMultiStatus(Sabre\Xml\Wr ... ]}, Generator {}, false)
36. /var/www/html/3rdparty/sabre/dav/lib/DAV/CorePlugin.php - line 346:Sabre\DAV\Server->generateMultiStatus(Generator {}, false)
37. /var/www/html/3rdparty/sabre/event/lib/WildcardEmitterTrait.php - line 89:Sabre\DAV\CorePlugin->httpPropFind(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})
38. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 472:Sabre\DAV\Server->emit("method:PROPFIND", [ Sabre\HTTP ... }])
39. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 253:Sabre\DAV\Server->invokeMethod(Sabre\HTTP\Request {}, Sabre\HTTP\Response {})
40. /var/www/html/3rdparty/sabre/dav/lib/DAV/Server.php - line 321:Sabre\DAV\Server->start()
41. /var/www/html/apps/dav/lib/Server.php - line 339:Sabre\DAV\Server->exec()
42. /var/www/html/apps/dav/appinfo/v2/remote.php - line 35:OCA\DAV\Server->exec()
43. /var/www/html/remote.php - line 166:require_once("/var/www/ht ... p")

Try searching the forum and internet for the generic errors.

Hi @smlee,
You are missing the required support template. Please fill this form out and edit into your post.

This will give us the technical info and logs needed to help you! Thanks.

1 Like

solved !
I have changed nextcloud docker image version in docker-compose.yml

  • before
app:
    image: nextcloud
  • after
app:
    image: nextcloud:20.0.14-apache

and now it works.