Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/en/administration/console/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ http://<server-ip>: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.

Expand Down
4 changes: 2 additions & 2 deletions content/en/administration/data/object/scanner.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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.
Configure alerts on scan failure rate and duration so you can detect and diagnose storage or network problems early.
10 changes: 5 additions & 5 deletions content/en/developer/mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -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]

Expand Down Expand Up @@ -46,7 +46,7 @@ cargo build --release -p rustfs-mcp
./target/release/rustfs-mcp
```

## ⚙️ Configuration
## Configuration

### Environment Variables

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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)

Expand All @@ -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:

Expand Down
16 changes: 8 additions & 8 deletions content/en/developer/sdk/go.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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`:

Expand Down Expand Up @@ -120,7 +120,7 @@ fmt.Println("bucket created")
bucket created
```

## List Buckets
## List buckets

```go
resp, err := client.ListBuckets(ctx, &s3.ListBucketsInput{})
Expand All @@ -139,7 +139,7 @@ Buckets:
- my-bucket
```

## Delete Bucket
## Delete a bucket

```go
_, err = client.DeleteBucket(ctx, &s3.DeleteBucketInput{
Expand All @@ -155,7 +155,7 @@ fmt.Println("bucket deleted")
bucket deleted
```

## List Objects
## List objects

```go
resp, err := client.ListObjectsV2(ctx, &s3.ListObjectsV2Input{
Expand All @@ -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):

Expand All @@ -193,7 +193,7 @@ fmt.Println("object uploaded")
object uploaded
```

## Download Object
## Download an object

Reading the object body (add `"io"` to your imports):

Expand All @@ -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.
6 changes: 3 additions & 3 deletions content/en/developer/sdk/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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.
2 changes: 1 addition & 1 deletion content/en/developer/sdk/java.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
18 changes: 9 additions & 9 deletions content/en/developer/sdk/javascript.md
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand All @@ -84,7 +84,7 @@ Bucket created

---

### 4.2 Upload Object
### 4.2 Upload an object

```js
import { PutObjectCommand } from "@aws-sdk/client-s3";
Expand All @@ -109,7 +109,7 @@ File uploaded

---

### 4.3 Download Object
### 4.3 Download an object

```js
import { GetObjectCommand } from "@aws-sdk/client-s3";
Expand Down Expand Up @@ -137,7 +137,7 @@ File downloaded

---

### 4.4 List Objects
### 4.4 List objects

```js
import { ListObjectsV2Command } from "@aws-sdk/client-s3";
Expand All @@ -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";
Expand All @@ -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.

Expand Down Expand Up @@ -209,7 +209,7 @@ console.log("Presigned PUT URL:", url);

---

### 5.2 Multipart Upload
### 5.2 Multipart upload

```js
import {
Expand Down Expand Up @@ -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 |
Expand Down Expand Up @@ -312,4 +312,4 @@ Frontend (HTML+JS) upload example:
</script>
```

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.
2 changes: 1 addition & 1 deletion content/en/developer/sdk/python.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
4 changes: 2 additions & 2 deletions content/en/developer/sdk/rust.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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.
4 changes: 2 additions & 2 deletions content/en/developer/sdk/typescript.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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.
Original file line number Diff line number Diff line change
Expand Up @@ -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 |

---
Expand Down
6 changes: 5 additions & 1 deletion content/en/integration/tls-configured.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

:::
2 changes: 1 addition & 1 deletion content/en/integration/virtual.md
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
2 changes: 1 addition & 1 deletion content/en/troubleshooting/node.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Loading