SignatureDoesNotMatch with Ceph RGW S3 backend — path_style not propagated to minio client

Describe your issue in detail

When using Ceph RGW as an S3-compatible backend, all datasync services fail with SignatureDoesNotMatch errors. The root cause is that path_style (set during datasource bootstrap in discovery/install/lib/datasource.go) is never propagated to the
MinIO client configuration.

Data flow of the bug:

  1. During install, datasource.go correctly sets StorageConfiguration[“path_style”] = “true” for custom S3 endpoints
  2. FactorizeMinioServers() in common/config/datasources.go converts DataSource → MinioConfig, but only copies signatureVersion into GatewayConfiguration — path_style and force_path_style are silently dropped
  3. MinioConfig.ClientConfig() reads GatewayConfiguration[“path_style”] to set BucketLookupPath — since it’s missing, it defaults to virtual-host style
  4. Ceph RGW only supports path-style URLs (http://endpoint/bucket/key), so virtual-host requests (http://bucket.endpoint/key) produce a signature mismatch

Result: Every datasync service fails at S3 connection with SignatureDoesNotMatch, even though credentials are correct.


What version of Cells are you using?

v5-dev


What is the server OS? Database name/version?

  • Server OS: Kubernetes (Linux)
  • Database: MariaDB (config DB), MongoDB (document store), etcd (distributed config)
  • S3 backend: Ceph RGW (S3-compatible, path-style only)

(This is a server-side issue, not browser-related)


What steps have you taken to resolve this issue already?

  1. Traced SignatureDoesNotMatch errors through datasync logs to the minio client initialization
  2. Identified that FactorizeMinioServers() drops path_style when converting StorageConfiguration → GatewayConfiguration
  3. Fixed common/config/datasources.go: added propagation of path_style and force_path_style to GatewayConfiguration in all three S3 datasource conversion cases
  4. Verified fix via etcd inspection: GatewayConfiguration.path_style: “true” now present after bootstrap
  5. Confirmed all datasync services connect successfully after fix
  6. Submitted a PR with unit tests: fix(s3): add path-style support to fix Ceph RGW S3 compatibility by SJoon99 · Pull Request #874 · pydio/cells · GitHub
1 Like