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
8 changes: 4 additions & 4 deletions content/en/administration/data/bucket/creation.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "RustFS Bucket Creation"
title: "Create a Bucket"
description: "Create buckets using the RustFS UI, rc, or the S3 API."
---

Expand All @@ -10,11 +10,11 @@ This guide explains how to create buckets using the RustFS UI, `rc`, or the S3 A
- A running RustFS instance (see [Installation Guide](../../../installation/index.md)).
- [`rc`](/operations/rc) installed and configured with an alias for the command-line workflow.

## Using the RustFS UI
## Use the RustFS Console

1. Log in to the RustFS Console.
2. On the Buckets page, in the top right corner, select **Create Bucket**.
3. Enter the bucket name and click **Create** to complete bucket creation.
3. Enter a bucket name and select **Create**.

![bucket creation](images/bucket-creation-by-ui.png)

Expand Down Expand Up @@ -49,4 +49,4 @@ aws s3api create-bucket \
--endpoint-url http://localhost:9000
```

Verify the bucket creation in the RustFS Console.
Confirm that the bucket appears in the RustFS Console.
8 changes: 6 additions & 2 deletions content/en/administration/data/bucket/deletion.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,18 @@ This guide explains how to delete buckets using the RustFS UI, `rc`, or the S3 A
- Install and configure [`rc`](/operations/rc) before using the command-line workflow.
- Empty the target bucket before deleting it, or use `--force` only after reviewing the objects that will be removed.

**Warning**: Deleting a bucket is irreversible and may break applications relying on it. Ensure you have backed up any necessary data before proceeding.
:::warning[Deletion is permanent]

Deleting a bucket is irreversible and can break applications that depend on it. Back up any data you need before you continue.

:::

## Using the RustFS UI

1. Log in to the RustFS Console.
2. On the homepage, select the bucket you want to delete.
3. On the far right, select the **Delete** button.
4. In the popup dialog, click **Confirm** to complete bucket deletion.
4. In the confirmation dialog, select **Confirm**.

![bucket deletion](images/bucket-deletion-on-ui.png)

Expand Down
6 changes: 3 additions & 3 deletions content/en/administration/data/object/creation.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Objects are the fundamental storage units in RustFS, containing data, metadata,

![object creation from ui](images/upload_file_from_ui.png)

Click on an object to view its details.
Select an object to view its details.

![object details info](images/object_details_info.png)

Expand Down Expand Up @@ -63,7 +63,7 @@ Verify the upload in the RustFS Console.

See [Object Deletion](./deletion.md).

Use the following API for file deletion:
To delete an object with the S3 API, use:

```http
DELETE /{bucketName}/{objectName} HTTP/1.1
Expand All @@ -78,4 +78,4 @@ aws s3api delete-object \
--endpoint-url http://localhost:9000
```

You can confirm the file has been deleted on the RustFS UI.
Confirm in the RustFS Console that the object no longer appears.
4 changes: 2 additions & 2 deletions content/en/administration/data/object/deletion.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ This guide covers object deletion.
## Using the RustFS UI

1. Log in to the RustFS Console.
2. Select the bucket containing the file to be deleted.
2. Select the bucket that contains the object you want to delete.
3. On the bucket page, select the file to be deleted.
4. Click **Delete Selected Items** in the upper right corner, then click **Confirm** in the popup dialog.
4. Select **Delete Selected Items** in the upper-right corner, and then select **Confirm**.

![object deletion from ui](images/delete_file_from_ui.png)

Expand Down
4 changes: 2 additions & 2 deletions content/en/administration/data/object/multipart-upload.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ RustFS accepts part numbers from `1` through `10000`. `ListParts` and `ListMulti

![Console upload dialog with a selected large file](./images/multipart-upload-console.png)

The observed Console upload dialog supports up to 10,000 selected files and reports a 512 GB maximum for a single file. These are Console upload limits; S3 clients can have different local limits.
The Console upload dialog supports up to 10,000 files and reports a 512 GB maximum for a single file. These are Console upload limits; S3 clients can have different local limits.

After upload starts, **Task Management** groups tasks into Pending, Processing, Completed, Failed, and Canceled states. Each processing task shows progress and a **Cancel** action. Canceling an active multipart task aborts the current part request and marks the task as canceled.

Expand All @@ -42,7 +42,7 @@ rc object copy /path/to/hello.txt rustfs/my-bucket/hello.txt
rc object stat rustfs/my-bucket/hello.txt --json
```

:::note[rc 0.1.29 multipart boundary]
:::note[Multipart limitations in rc 0.1.29]

`rc 0.1.29` does not expose create, upload-part, complete, list-parts, or abort multipart commands. A validated 20 MiB `rc object copy` used a single `PutObject` request rather than multipart upload. Use the Console or an S3 SDK when explicit multipart behavior is required; use `rc object stat` to verify the completed object.

Expand Down
4 changes: 2 additions & 2 deletions content/en/administration/data/object/object-lock.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ COMPLIANCE retention cannot be bypassed or shortened before its retain-until dat
2. Select **Create Bucket** and enter the bucket name.
3. Enable **Object Lock**. The Console also enables **Version** because Object Lock requires versioning.
4. To apply retention automatically to new object versions, enable **Retention**.
5. Select **COMPLIANCE** or **GOVERNANCE**, enter the validity, and select **Day** or **Year**.
5. Select **COMPLIANCE** or **GOVERNANCE**, enter the retention period, and select **Day** or **Year**.
6. Select **Create**.

![Create Bucket dialog with versioning, Object Lock, and default retention enabled](./images/object-lock-create-bucket.png)
Expand All @@ -48,7 +48,7 @@ rc alias set rustfs http://localhost:9000 \
--region us-east-1 --bucket-lookup path
```

:::note[rc 0.1.29 bucket creation boundary]
:::note[Bucket creation limitation in rc 0.1.29]

`rc bucket create --with-lock` and `--with-versioning` appear in the `rc 0.1.29` help output but return `not implemented` when executed. Create the Object Lock bucket in the Console. The upload headers shown below are supported and were validated against RustFS.

Expand Down
16 changes: 8 additions & 8 deletions content/en/administration/data/object/scanner.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,30 @@ title: "Object Scanning"
description: "Guide to the RustFS object scanner, including design, implementation, and monitoring."
---

This guide covers the design and implementation of the RustFS object scanner, including its integration with Erasure Coding, Scrub & Repair mechanisms, scheduling strategies, monitoring metrics, and troubleshooting.
This guide covers the design and implementation of the RustFS object scanner, including how it works with erasure coding, scrubbing and repair, scheduling, metrics, and troubleshooting.

## Overview

The RustFS object scanner is built into the storage engine and is responsible for periodically checking object integrity and executing scheduled operations.
Scanning tasks include disk usage statistics, lifecycle management rule evaluation, object replication execution, and triggering corrupted object self-healing.
The scanner collects disk usage statistics, evaluates lifecycle rules, performs object replication, and triggers healing for corrupted objects.

## Architecture and Design Principles

### Scanner Architecture

The RustFS scanner uses a hash sampling mechanism, selecting one out of every 1024 objects for inspection based on object name hashing to minimize performance impact.
The scanner is deeply integrated with the Erasure Coding module, utilizing redundant shards for online reconstruction when detecting lost or corrupted shards, ensuring high data availability and consistency.
The scanner works with the erasure coding layer: when it detects a missing or corrupted shard, it rebuilds the shard online from the remaining redundant shards.

## Data Verification and Recovery

The RustFS data verification mechanism checks metadata consistency and performs bit-by-bit reading and verification to discover hidden bad blocks. 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 bit by bit to detect latent bad sectors. The object scanner detects issues like bit rot and triggers repair processes when necessary.

## Scanning Modes and Scheduling

RustFS supports three scanning modes: online scanning during reads, background periodic scanning, and manual full scanning, balancing performance and reliability.
Similar to the `osd_scrub_begin_hour` configuration in Ceph, administrators can set scanning start times and frequency. For example, light verification is set to once daily by default.
RustFS supports three scanning modes that balance performance and reliability: inline checks during reads, periodic background scans, and manual full scans.
Similar to the `osd_scrub_begin_hour` configuration in Ceph, administrators can set scanning start times and frequency. For example, a lightweight check runs once a day by default.

## Monitoring and Metrics

Scanner statistics include total task count, failure count, and time distribution, exposing metrics through the Prometheus data model such as `rustfs_scanner_jobs_total`, `rustfs_scanner_failures_total`, and `rustfs_scanner_duration_seconds`.
Combined with monitoring systems, alerts can be set based on scanning failure rates and duration to promptly discover and locate potential issues at the storage or network levels.
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.
4 changes: 2 additions & 2 deletions content/en/administration/data/object/versioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Suspending versioning stops normal creation of new version IDs but preserves exi
3. Enable **Version**.
4. Select **Create**.

### Enable or suspend an existing bucket
### Enable or suspend versioning on an existing bucket

1. Open **Buckets**, locate the bucket, and select **Settings**.
2. Under **Data Protection**, locate **Versioning**.
Expand Down Expand Up @@ -94,7 +94,7 @@ rc bucket version suspend rustfs/my-bucket
rc bucket version info rustfs/my-bucket
```

:::warning[rc 0.1.29 version deletion boundary]
:::warning[Version deletion limitation in rc 0.1.29]

`rc object remove --versions` is listed in the `rc 0.1.29` help output but returns `not implemented`. Use the Console or an S3 SDK to permanently delete selected version IDs. Do not remove an entire version history unless you have verified retention, replication, and recovery requirements.

Expand Down
2 changes: 1 addition & 1 deletion content/en/administration/data/s3-tables.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: "S3 Tables"
description: "Enable a RustFS table bucket and connect Iceberg clients to the built-in REST catalog."
---

RustFS S3 Tables manages **Apache Iceberg** tables through a built-in REST catalog. Table data, manifests, and Iceberg metadata remain S3 objects in RustFS. This guide enables a dedicated table bucket and explains client connections, permissions, and maintenance boundaries.
RustFS S3 Tables manages **Apache Iceberg** tables through a built-in REST catalog. Table data, manifests, and Iceberg metadata remain S3 objects in RustFS. This guide shows how to enable a dedicated table bucket and explains client connections, permissions, and maintenance limits.

:::note[Preview and version scope]

Expand Down
2 changes: 1 addition & 1 deletion content/en/administration/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ Use this section to manage RustFS through the Console, administer buckets and ob
- [S3 Tables](/administration/data/s3-tables) covers table buckets and the built-in Iceberg REST catalog.
- [Protocol Support](./protocols/s3.md) covers S3, WebDAV, FTPS, and SFTP access.
- [CORS Configuration](./cors/index.md) covers cross-origin access to RustFS services.
- [Virtual-Host Access](/integration/virtual) covers domain-based S3 addressing.
- [Virtual-hosted–style requests](/integration/virtual) cover domain-based S3 addressing.

For identity, encryption, transport security, and auditing, continue with [Security & Compliance](/security-compliance).
2 changes: 1 addition & 1 deletion content/en/administration/protocols/s3.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ RustFS covers the common S3 data plane used by applications, backup tools, and S
| Objects | Put, get, head, copy, delete, multi-delete, range reads, conditional requests, and user metadata |
| Listing | `ListObjects`, `ListObjectsV2`, prefixes, delimiters, markers, and pagination |
| Large objects | Create, upload, copy, list, complete, and abort multipart uploads |
| Data management | Versioning, lifecycle rules, bucket and object tags, checksums, and object lock |
| Data management | Versioning, lifecycle rules, bucket and object tags, checksums, and Object Lock |
| Access control | IAM credentials and policies, bucket policies, public access block, and presigned GET/PUT URLs |
| Integration | CORS, bucket notifications, replication configuration, and server-side encryption workflows |

Expand Down
2 changes: 1 addition & 1 deletion content/en/developer/integration/others/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Integration guides that do not fit the other categories.
## Guides

- [capo (Python)](./capo.md) — connect the community-driven capo SDK to RustFS with synchronous or asynchronous clients.
rclone](./rclone.md) — sync, mount, and serve RustFS buckets from the command line.
- [rclone](./rclone.md) — sync, mount, and serve RustFS buckets from the command line.
- [tusd](./tusd.md) — receive resumable uploads into a RustFS bucket over the tus protocol.
- [JuiceFS](./juicefs.md) — mount a POSIX filesystem backed by a RustFS bucket.
- [Nextcloud](./nextcloud.md) — use RustFS as S3 external storage for Nextcloud files.
24 changes: 12 additions & 12 deletions content/en/developer/mcp.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
title: "RustFS MCP"
description: "RustFS MCP Usage Guide"
description: "Connect AI assistants to RustFS object storage with the RustFS MCP server."
---

**RustFS MCP Server** is a high-performance [Model Context Protocol (MCP)](https://www.anthropic.com/news/model-context-protocol) server that provides AI/LLM tools with seamless access to S3-compatible object storage operations. Built with Rust for performance and security, it enables AI assistants like Claude Desktop to interact with cloud storage through standardized protocols.
**RustFS MCP Server** is a [Model Context Protocol (MCP)](https://www.anthropic.com/news/model-context-protocol) server that gives AI assistants, such as Claude Desktop, access to S3-compatible object storage.

### What is MCP?

The Model Context Protocol is an open standard that enables AI applications to establish secure, controlled connections with external systems. This server acts as a bridge between AI tools and S3-compatible storage services, providing structured access to file operations while maintaining security and observability.

## ✨ Features
## Features

### Supported S3 Operations

Expand Down Expand Up @@ -128,7 +128,7 @@ rustfs-mcp --log-level debug --region us-west-2

### Using with Docker

[RustFS MCP officially provides a Dockerfile](https://github.com/rustfs/rustfs/tree/main/crates/mcp) that can be used to build container images for using RustFS MCP.
RustFS MCP provides an [official Dockerfile](https://github.com/rustfs/rustfs/tree/main/crates/mcp) that you can use to build a container image.

```bash
# Clone RustFS repository code
Expand All @@ -138,11 +138,11 @@ git clone https://github.com/rustfs/rustfs.git
docker build -f crates/mcp/Dockerfile -t rustfs/rustfs-mcp .
```

After successful build, you can configure it in the MCP configuration of AI IDEs.
After the build succeeds, add the server to your IDE's MCP configuration.

#### Configuring MCP in AI IDEs

Currently, mainstream AI IDEs such as Cursor, Windsurf, Trae, etc. all support MCP. For example, in Trae, add the following content to the MCP configuration (**MCP --> Add**):
Many AI IDEs, such as Cursor, Windsurf, and Trae, support MCP. For example, in Trae, add the following content to the MCP configuration (**MCP --> Add**):

```json
{
Expand Down Expand Up @@ -174,23 +174,23 @@ Currently, mainstream AI IDEs such as Cursor, Windsurf, Trae, etc. all support M
}
```

> `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` are RustFS access keys. You can refer to the [Access Key Management chapter](../security-compliance/iam/access-token.md) for creation.
> `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 added successfully, you can list the [available tools](#️-available-tools) on the MCP configuration page.
If the server is added successfully, the MCP configuration page lists its [available tools](#️-available-tools).

![add rustfs mcp in trae mcp configuration successfully](images/add-rustfs-mcp-succ.png)
![RustFS MCP server added to the MCP configuration in Trae](images/add-rustfs-mcp-succ.png)

In Trae, you can use the corresponding tools by entering the corresponding prompts. For example, in Trae's chat dialog, enter:
To invoke an MCP tool in Trae, enter a prompt in the chat. For example:

```text
Please help me list the buckets in the current rustfs instance, thank you!
```

Returns the following response:
Trae returns the following response:

![list rustfs bucket with rustfs mcp](images/list-rustfs-bucket-with-mcp.png)

Trae uses **Builder with MCP** mode, calling the `list_buckets` tool to list all buckets in the configured RustFS instance. The same applies to calls to other tools.
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

Expand Down
6 changes: 3 additions & 3 deletions content/en/developer/sdk/go.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: "Golang SDK Guide"
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. Through the SDK, you can operate on RustFS, including creating and deleting buckets/objects, uploading and downloading files, etc.
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.

## Prerequisites

Expand Down Expand Up @@ -104,7 +104,7 @@ Buckets:

You can now perform bucket and object operations. The snippets below run inside the `main` function above, reusing `client` and `ctx`.

## Create Bucket
## Create a bucket

```go
_, err = client.CreateBucket(ctx, &s3.CreateBucketInput{
Expand Down
Loading
Loading