diff --git a/content/en/administration/console/index.md b/content/en/administration/console/index.md index e8af749ff..0877c14cf 100644 --- a/content/en/administration/console/index.md +++ b/content/en/administration/console/index.md @@ -31,7 +31,7 @@ http://:9001 ![RustFS Console login page with key, STS, and OIDC sign-in options](./images/rustfs-console-login.png) -For a local deployment, use `http://localhost:9001`. Windows and macOS desktop launchers use port `7001` instead. +For a local deployment, including the Windows and macOS desktop launchers, open `http://localhost:9001`. The S3 API listens on port `9000`. If the login page cannot reach the target RustFS service, select **Server Configuration** or open `/config`. Enter the externally reachable RustFS service address and save it after the health check succeeds. **Reset** clears the saved address; **Skip** returns to login without changing it. diff --git a/content/en/administration/data/object/scanner.md b/content/en/administration/data/object/scanner.md index 5bccea986..9c6616a65 100644 --- a/content/en/administration/data/object/scanner.md +++ b/content/en/administration/data/object/scanner.md @@ -19,7 +19,7 @@ The scanner works with the erasure coding layer: when it detects a missing or co ## Data Verification and Recovery -The RustFS data verification mechanism checks metadata consistency and reads and verifies data bit by bit to detect latent bad sectors. The object scanner detects issues like bit rot and triggers repair processes when necessary. +The RustFS data verification mechanism checks metadata consistency and reads and verifies data to detect latent bad sectors. The object scanner detects issues like bit rot and triggers repair processes when necessary. ## Scanning Modes and Scheduling @@ -29,4 +29,4 @@ Similar to the `osd_scrub_begin_hour` configuration in Ceph, administrators can ## Monitoring and Metrics The scanner reports the total number of tasks, the number of failures, and duration distribution as Prometheus metrics, such as `rustfs_scanner_jobs_total`, `rustfs_scanner_failures_total`, and `rustfs_scanner_duration_seconds`. -Configure alerts on scan failure rate and duration so you can detect and diagnose storage or network problems early. \ No newline at end of file +Configure alerts on scan failure rate and duration so you can detect and diagnose storage or network problems early. diff --git a/content/en/developer/mcp.md b/content/en/developer/mcp.md index 12ac3b370..553e2e186 100644 --- a/content/en/developer/mcp.md +++ b/content/en/developer/mcp.md @@ -18,7 +18,7 @@ The Model Context Protocol is an open standard that enables AI applications to e - **Upload Files**: Uploads local files with automatic MIME type detection and cache control. - **Get Objects**: Retrieves objects from S3 storage, supporting read or download modes. -## πŸ”§ Installation +## Installation :::warning[Build instructions may be outdated] @@ -46,7 +46,7 @@ cargo build --release -p rustfs-mcp ./target/release/rustfs-mcp ``` -## βš™οΈ Configuration +## Configuration ### Environment Variables @@ -77,7 +77,7 @@ The server supports various command line options to customize behavior: - `--endpoint-url`: Custom S3 endpoint URL (for MinIO, LocalStack, etc.) - `--log-level`: Log level configuration (default: rustfs_mcp_server=info) -## πŸš€ Usage +## Usage ### Starting the Server @@ -176,7 +176,7 @@ Many AI IDEs, such as Cursor, Windsurf, and Trae, support MCP. For example, in T > `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are RustFS access keys. To create them, see [Access Key Management](../security-compliance/iam/access-token.md). -If the server is added successfully, the MCP configuration page lists its [available tools](#️-available-tools). +If the server is added successfully, the MCP configuration page lists its [available tools](#available-tools). ![RustFS MCP server added to the MCP configuration in Trae](images/add-rustfs-mcp-succ.png) @@ -192,7 +192,7 @@ Trae returns the following response: Trae uses **Builder with MCP** mode, calling the `list_buckets` tool to list all buckets in the configured RustFS instance. Other tools work the same way. -## πŸ› οΈ Available Tools +## Available tools The MCP server exposes the following tools that AI assistants can use: diff --git a/content/en/developer/sdk/go.md b/content/en/developer/sdk/go.md index 1652d6ccd..a30a52601 100644 --- a/content/en/developer/sdk/go.md +++ b/content/en/developer/sdk/go.md @@ -3,7 +3,7 @@ title: "Go SDK Guide" description: "Use the AWS SDK for Go v2 to operate on RustFS instances, including creating and deleting buckets and objects." --- -RustFS ships no first-party Go SDK β€” it is fully S3-compatible, so you use the official AWS SDK for Go v2 configured to point at your RustFS server. With the SDK, you can create and delete buckets, and upload and download objects. +RustFS ships no first-party Go SDK β€” it is S3-compatible, so you use the official AWS SDK for Go v2 configured to point at your RustFS server. With the SDK, you can create and delete buckets, and upload, download, and delete objects. ## Prerequisites @@ -26,7 +26,7 @@ go get github.com/aws/aws-sdk-go-v2/credentials go get github.com/aws/aws-sdk-go-v2/service/s3 ``` -## Initializing the Client +## Initialize the client The following is a complete, runnable program. It reads its configuration from environment variables and initializes the client from an `aws.Config`: @@ -120,7 +120,7 @@ fmt.Println("bucket created") bucket created ``` -## List Buckets +## List buckets ```go resp, err := client.ListBuckets(ctx, &s3.ListBucketsInput{}) @@ -139,7 +139,7 @@ Buckets: - my-bucket ``` -## Delete Bucket +## Delete a bucket ```go _, err = client.DeleteBucket(ctx, &s3.DeleteBucketInput{ @@ -155,7 +155,7 @@ fmt.Println("bucket deleted") bucket deleted ``` -## List Objects +## List objects ```go resp, err := client.ListObjectsV2(ctx, &s3.ListObjectsV2Input{ @@ -173,7 +173,7 @@ for _, obj := range resp.Contents { - hello.txt ``` -## Upload Object +## Upload an object Uploading a string body (add `"strings"` to your imports): @@ -193,7 +193,7 @@ fmt.Println("object uploaded") object uploaded ``` -## Download Object +## Download an object Reading the object body (add `"io"` to your imports): @@ -219,4 +219,4 @@ fmt.Println("content is :", string(data)) content is : hello rustfs ``` -For other operations (presigned URLs, multipart uploads, and more), see the [AWS SDK for Go v2 documentation](https://aws.github.io/aws-sdk-go-v2/docs/) β€” every S3-compatible call works against RustFS the same way. +For other operations (presigned URLs, multipart uploads, and more), see the [AWS SDK for Go v2 documentation](https://aws.github.io/aws-sdk-go-v2/docs/) β€” most S3 operations work the same way against RustFS; see [S3 compatibility](/reference/s3-compatibility) for exceptions. diff --git a/content/en/developer/sdk/index.md b/content/en/developer/sdk/index.md index c67e66723..f5550eb33 100644 --- a/content/en/developer/sdk/index.md +++ b/content/en/developer/sdk/index.md @@ -3,7 +3,7 @@ title: "SDKs" description: "Overview of supported S3 SDKs for RustFS." --- -RustFS is a distributed object storage system fully compatible with the S3 protocol. You can: +RustFS is a distributed object storage system with an S3-compatible API. You can: - Manage RustFS in the Console. - Manage RustFS through S3 clients. @@ -32,10 +32,10 @@ Some third-party SDKs may have non-standard implementations. We recommend avoidi ## Compatibility with MinIO SDKs -RustFS is fully compatible with the MinIO SDKs. +RustFS works with the MinIO SDKs. To connect a MinIO SDK to RustFS, set the endpoint, access key, and secret key to your RustFS values. ## Handling Incompatible SDKs -If an SDK does not work with standard S3, MinIO, or RustFS, we recommend switching to a standard AWS S3 SDK. +If an SDK does not work with standard S3, MinIO, or RustFS, we recommend switching to an official AWS SDK for S3. diff --git a/content/en/developer/sdk/java.md b/content/en/developer/sdk/java.md index 982873e0f..bd70da59f 100644 --- a/content/en/developer/sdk/java.md +++ b/content/en/developer/sdk/java.md @@ -342,4 +342,4 @@ s3.abortMultipartUpload(abortRequest); --- -For other operations (object tagging, bucket policies, and more), see the [AWS SDK for Java v2 documentation](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/) β€” every S3-compatible call works against RustFS the same way. +For other operations (object tagging, bucket policies, and more), see the [AWS SDK for Java v2 documentation](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/) β€” most S3 operations work the same way against RustFS; see [S3 compatibility](/reference/s3-compatibility) for exceptions. diff --git a/content/en/developer/sdk/javascript.md b/content/en/developer/sdk/javascript.md index 108d5de15..3cd34ac18 100644 --- a/content/en/developer/sdk/javascript.md +++ b/content/en/developer/sdk/javascript.md @@ -69,7 +69,7 @@ All snippets below reuse this `s3` client. ## Basic operations -### 4.1 Create Bucket +### 4.1 Create a bucket ```js import { CreateBucketCommand } from "@aws-sdk/client-s3"; @@ -84,7 +84,7 @@ Bucket created --- -### 4.2 Upload Object +### 4.2 Upload an object ```js import { PutObjectCommand } from "@aws-sdk/client-s3"; @@ -109,7 +109,7 @@ File uploaded --- -### 4.3 Download Object +### 4.3 Download an object ```js import { GetObjectCommand } from "@aws-sdk/client-s3"; @@ -137,7 +137,7 @@ File downloaded --- -### 4.4 List Objects +### 4.4 List objects ```js import { ListObjectsV2Command } from "@aws-sdk/client-s3"; @@ -152,7 +152,7 @@ hello.txt (12 bytes) --- -### 4.5 Delete Object +### 4.5 Delete an object ```js import { DeleteObjectCommand } from "@aws-sdk/client-s3"; @@ -169,7 +169,7 @@ File deleted ## Advanced features -### 5.1 Generate Presigned URLs +### 5.1 Generate presigned URLs Presigned URLs let browser clients or third parties upload or download objects through temporary links. @@ -209,7 +209,7 @@ console.log("Presigned PUT URL:", url); --- -### 5.2 Multipart Upload +### 5.2 Multipart upload ```js import { @@ -279,7 +279,7 @@ Multipart upload completed | Problem | Cause | Solution | | --------------------------- | -------------------- | --------------------------------------- | -| SignatureDoesNotMatch | Signature version mismatch | AWS SDK for JavaScript v3 uses Signature Version 4 by default. Confirm that RustFS accepts SigV4. | +| SignatureDoesNotMatch | Signature mismatch | SDK v3 signs with SigV4 by default; check credentials, region, and endpoint | | EndpointConnectionError | Endpoint address misconfigured or not started | Check if RustFS address is accessible | | NoSuchKey | File does not exist | Check if `Key` is spelled correctly | | InvalidAccessKeyId / Secret | Credentials misconfigured | Check `accessKeyId` / `secretAccessKey` configuration | @@ -312,4 +312,4 @@ Frontend (HTML+JS) upload example: ``` -For other operations (object tagging, bucket policies, and more), see the [AWS SDK for JavaScript v3 documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) β€” every S3-compatible call works against RustFS the same way. +For other operations (object tagging, bucket policies, and more), see the [AWS SDK for JavaScript v3 documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) β€” most S3 operations work the same way against RustFS; see [S3 compatibility](/reference/s3-compatibility) for exceptions. diff --git a/content/en/developer/sdk/python.md b/content/en/developer/sdk/python.md index f239d1d1d..5e831c261 100644 --- a/content/en/developer/sdk/python.md +++ b/content/en/developer/sdk/python.md @@ -284,6 +284,6 @@ def download_file(bucket, object_key, local_path): print(f"Downloaded s3://{bucket}/{object_key} to {local_path}") ``` -For other operations (object tagging, bucket policies, and more), see the [Boto3 S3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html) β€” every S3-compatible call works against RustFS the same way. +For other operations (object tagging, bucket policies, and more), see the [Boto3 S3 documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html) β€” most S3 operations work the same way against RustFS; see [S3 compatibility](/reference/s3-compatibility) for exceptions. If you prefer native async support and full type hints, the community-driven [capo](https://github.com/kap-sh/capo) SDK also works with RustFS β€” see the [capo (Python) integration guide](../integration/others/capo.md). diff --git a/content/en/developer/sdk/rust.md b/content/en/developer/sdk/rust.md index 47b1f3056..8b6d7ebdc 100644 --- a/content/en/developer/sdk/rust.md +++ b/content/en/developer/sdk/rust.md @@ -3,7 +3,7 @@ title: "Rust SDK Guide" description: "Use the AWS SDK for Rust to create and delete buckets and objects in RustFS." --- -RustFS ships no first-party Rust client crate β€” it is fully S3-compatible, so you use the official AWS SDK for Rust (`aws-sdk-s3`) configured to point at your RustFS server. With the SDK, you can create and delete buckets and upload, download, and delete objects. +RustFS ships no first-party Rust client crate β€” it is S3-compatible, so you use the official AWS SDK for Rust (`aws-sdk-s3`) configured to point at your RustFS server. With the SDK, you can create and delete buckets and upload, download, and delete objects. ## Prerequisites @@ -284,4 +284,4 @@ match rustfs_client Object content: hello rustfs ``` -For other operations (presigned URLs, multipart uploads, and more), see the [AWS SDK for Rust documentation](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/) β€” every S3-compatible call works against RustFS the same way. +For other operations (presigned URLs, multipart uploads, and more), see the [AWS SDK for Rust documentation](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/) β€” most S3 operations work the same way against RustFS; see [S3 compatibility](/reference/s3-compatibility) for exceptions. diff --git a/content/en/developer/sdk/typescript.md b/content/en/developer/sdk/typescript.md index bf78c7cd4..0ecf279f5 100644 --- a/content/en/developer/sdk/typescript.md +++ b/content/en/developer/sdk/typescript.md @@ -3,7 +3,7 @@ title: "TypeScript SDK Guide" description: "Operate RustFS from TypeScript with the AWS SDK for JavaScript v3, including creation and deletion of buckets and objects." --- -RustFS ships no first-party TypeScript SDK β€” it is fully S3-compatible, so you use the official AWS SDK for JavaScript v3 (which includes TypeScript type definitions) configured to point at your RustFS server. With the SDK, you can create and delete buckets, and upload and download objects. +RustFS ships no first-party TypeScript SDK β€” it is S3-compatible, so you use the official AWS SDK for JavaScript v3 (which includes TypeScript type definitions) configured to point at your RustFS server. With the SDK, you can create and delete buckets and upload, download, and delete objects. ## Prerequisites @@ -201,4 +201,4 @@ async function getObject() { Object content: hello rustfs ``` -For other operations (presigned URLs, multipart uploads, and more), see the [AWS SDK for JavaScript v3 documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) β€” every S3-compatible call works against RustFS the same way. +For other operations (presigned URLs, multipart uploads, and more), see the [AWS SDK for JavaScript v3 documentation](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) β€” most S3 operations work the same way against RustFS; see [S3 compatibility](/reference/s3-compatibility) for exceptions. diff --git a/content/en/installation/requirement/checklists/network-checklists.md b/content/en/installation/requirement/checklists/network-checklists.md index 9a48892f0..533184b62 100644 --- a/content/en/installation/requirement/checklists/network-checklists.md +++ b/content/en/installation/requirement/checklists/network-checklists.md @@ -93,7 +93,7 @@ net.ipv4.tcp_slow_start_after_idle = 0 | Metric | Requirements | |------|------| | Node latency | ≀ 1 ms (same data center) / ≀ 5 ms (cross-AZ) | -| Bandwidth Utilization | Peak ≀70% of design capacity | +| Bandwidth utilization | Peak ≀ 70% of design capacity | | Failover | < 500ms BPDU convergence | --- diff --git a/content/en/integration/tls-configured.md b/content/en/integration/tls-configured.md index c0df20e2e..7bda51b13 100644 --- a/content/en/integration/tls-configured.md +++ b/content/en/integration/tls-configured.md @@ -54,4 +54,8 @@ TLS now applies to both listeners: the S3 API at `https://rustfs.example.com:900 2. Restart the RustFS instance container, then access the S3 API at `https://rustfs.example.com:9000` and the Console at `https://rustfs.example.com:9001`. -**Note**: The RustFS container runs as the `rustfs` user (UID `10001`). Make sure that `rustfs` owns `rustfs_key.pem` and `rustfs_cert.pem`; otherwise, RustFS cannot read the certificates and TLS fails to start. +:::note[Certificate file ownership] + +The RustFS container runs as the `rustfs` user (UID `10001`) by default. Make sure that user owns `rustfs_key.pem` and `rustfs_cert.pem`. Otherwise, RustFS cannot read the certificates and TLS fails to start. + +::: diff --git a/content/en/integration/virtual.md b/content/en/integration/virtual.md index ec2440d3c..e8105edda 100644 --- a/content/en/integration/virtual.md +++ b/content/en/integration/virtual.md @@ -1,6 +1,6 @@ --- title: "Virtual-Hosted–Style Requests" -description: "RustFS S3 Virtual Host Style and Path Style configuration." +description: "Configure path-style and virtual-hosted–style S3 URLs for RustFS." --- RustFS supports both S3 URL addressing styles: diff --git a/content/en/troubleshooting/node.md b/content/en/troubleshooting/node.md index ac9f3bc6a..51baef42f 100644 --- a/content/en/troubleshooting/node.md +++ b/content/en/troubleshooting/node.md @@ -60,7 +60,7 @@ A distributed RustFS cluster uses erasure coding to stay readable and writable w ``` * **Community observations** - When a node goes offline and rejoins, RustFS heals only that node instead of rebalancing the entire cluster, which avoids unnecessary network and I/O spikes. + In community testing, when a node goes offline and rejoins, RustFS heals only that node instead of rebalancing the entire cluster. This avoids unnecessary network and I/O spikes. ## 5. Follow-up checks and best practices