feat: Add Single Bucket Mode for MinIO/S3
Overview
This PR adds support for Single Bucket Mode in RAGFlow, allowing users to configure MinIO/S3 to use a single bucket with a directory structure instead of creating multiple buckets per Knowledge Base and user folder.
Problem Statement
The current implementation creates one bucket per Knowledge Base and one bucket per user folder, which can be problematic when:
- Cloud providers charge per bucket
- IAM policies restrict bucket creation
- Organizations want centralized data management in a single bucket
Solution
Added a prefix_path configuration option to the MinIO connector that enables:
- Using a single bucket with directory-based organization
- Backward compatibility with existing multi-bucket deployments
- Support for MinIO, AWS S3, and other S3-compatible storage backends
Changes
-
rag/utils/minio_conn.py: Enhanced MinIO connector to support single bucket mode with prefix paths -
conf/service_conf.yaml: Added new configuration options (bucketandprefix_path) -
docker/service_conf.yaml.template: Updated template with single bucket configuration examples -
docker/.env.single-bucket-example: Added example environment variables for single bucket setup -
docs/single-bucket-mode.md: Comprehensive documentation covering usage, migration, and troubleshooting
Configuration Example
minio:
user: "access-key"
password: "secret-key"
host: "minio.example.com:443"
bucket: "ragflow-bucket" # Single bucket name
prefix_path: "ragflow" # Optional prefix path
Backward Compatibility
✅ Fully backward compatible - existing deployments continue to work without any changes
- If
bucketis not configured, uses default multi-bucket behavior - If
bucketis configured withoutprefix_path, uses bucket root - If both are configured, uses
bucket/prefix_path/structure
Testing
- Tested with MinIO (local and cloud)
- Verified backward compatibility with existing multi-bucket mode
- Validated IAM policy restrictions work correctly
Documentation
Included comprehensive documentation in docs/single-bucket-mode.md covering:
- Configuration examples
- Migration guide from multi-bucket to single-bucket mode
- IAM policy examples
- Troubleshooting guide
Related Issue: Addresses use cases where bucket creation is restricted or costly
Appreciations! Please correct the CI failure.
Appreciations! Please correct the CI failure.
Fixed
@KevinHuSh any updates on the CI failure? As it seems it is timing out on the ES SDK tests
@KevinHuSh any updates on the CI failure? As it seems it is timing out on the ES SDK tests
Please remove alterations irrelevant to this PR's feature, such as in docker/service_conf.yaml.template.
@KevinHuSh any updates on the CI failure? As it seems it is timing out on the ES SDK tests
Please remove alterations irrelevant to this PR's feature, such as in
docker/service_conf.yaml.template.
Irrelevant alterations removed.
CI failure. Could you correct them?
CI failure. Could you correct them?
Corrected