Skip to main content

Multi-protocol access

S3 is the primary object-storage API. WebDAV and FTP/FTPS are built-in gateways that stay disabled until you enable them. Swift requires an optional build. MCP is a separate server you point at the S3 endpoint. No separate third-party protocol gateway is required for the built-in WebDAV and FTP/FTPS gateways. Configure the endpoint, credentials, and protocol switch, then validate the operations your application uses.

S3 first

Primary API
The S3 API is on the main listener. Other protocols need the enablement, build, or separate server documented for that protocol.
Built-in gateways
WebDAV and FTP/FTPS ship in the standard binary as gateways. They are off by default. Swift is not in the default build.
Validate the client
Point a familiar SDK or client at the RustFS endpoint and test the operations you depend on. Compatibility is scoped to the documented workflows.
Protocol, default, and setup
ProtocolDefaultSetup neededDocs
S3On. Served by the main listener (RUSTFS_ADDRESS, default :9000). No separate protocol switch.Set the endpoint, region, credentials, and addressing style. Configure TLS before exposing the listener. Virtual-hosted-style URLs also need RUSTFS_SERVER_DOMAINS.Docs
WebDAVOff. Compiled into the standard binary. RUSTFS_WEBDAV_ENABLE defaults to false.Enable the gateway, provide IAM credentials, and configure HTTPS certificates for any remote or production client. Then connect.Docs
FTP/FTPSOff. Compiled into the standard binary. The FTP and FTPS listeners both default to disabled.Enable only the listener you need. Use FTPS with certificates for production. Plain FTP is for isolated testing. Passive ports and an advertised address may be required.Docs
SwiftNot in the default build.Build with the swift feature and configure Keystone token validation. Account HEAD and non-JSON listings are not implemented. Validate the client workflow.Docs
MCPNot a listener on the storage server. Separate MCP server.Run the MCP server and pass S3 credentials plus the RustFS endpoint to the assistant. The docs warn that in-tree build steps may be outdated, so confirm them before you rely on a from-source build.Docs

Each cell follows the linked documentation. This is not a compatibility matrix, and an empty or uncertain behavior is left to the docs instead of marked as supported.

S3 API compatibility

The primary object-storage API. It covers common bucket, object, listing, multipart, and access-control workflows, and it is not identical to every AWS S3 or MinIO API.

Common S3 workflows

Documented coverage includes bucket and object operations, listing, multipart upload, versioning, lifecycle, IAM, bucket policies, and server-side encryption workflows. Review the known differences before you depend on advanced behavior.

Enabled on the main listener

The S3 API starts with the server. Clients still need an endpoint, region, credentials, and addressing style. Path-style is the default.

MinIO migration notes

Use familiar S3 SDKs, point them at the RustFS endpoint, and validate the operations your application uses. The linked guide is the recommended copy path onto a current 1.0 release.

Virtual-hosted-style access

Path-style needs no extra DNS. Virtual-hosted-style URLs require RUSTFS_SERVER_DOMAINS, matching DNS, and a certificate that covers the bucket hostnames.

WebDAV

A built-in WebDAV gateway for file-oriented clients. The gateway is compiled into the standard binary and disabled until you enable it.

Client access after enablement

Once enabled, WebDAV clients can list buckets and upload, download, rename, or delete objects. Directory listing uses PROPFIND. GET on a directory returns 405.

Enable, then connect

Set RUSTFS_WEBDAV_ENABLE, provide an access key and secret key, and configure HTTPS certificates for remote or production use. Basic authentication does not encrypt credentials by itself.

HTTPS for production

TLS for the WebDAV listener defaults to on and needs a certificate directory. Use HTTPS for every remote or production connection.

Swift API

An optional OpenStack Swift-compatible API on the same HTTP endpoint as S3. It is not part of the default feature set.

Optional build

Build RustFS with the swift feature. There is no separate Swift port. Keystone tokens are accepted in X-Auth-Token or X-Storage-Token.

Scoped coexistence

When Swift is built and Keystone validation is configured, Swift containers map to project-isolated buckets. Validate your client. Account HEAD requests and non-JSON listings are not implemented.

FTP/FTPS

Built-in FTP and FTPS gateways for clients that cannot move to S3 yet. Both listeners are disabled until you enable one.

Enable a listener

Turn on FTP or FTPS explicitly. Authenticate with a RustFS access key and secret key. Rename and append uploads are not supported.

FTPS for production

Use explicit FTPS with certificates, credentials, and passive-port rules for production. Bind plain FTP to an isolated test network only.

MCP

A separate Model Context Protocol server for assistants that need a limited set of S3 tools. It is not enabled on the storage listener.

Separate MCP server

The server exposes tools such as list buckets, list objects, upload, get, create bucket, and delete bucket. It is not a default protocol on the RustFS process.

Configure credentials first

Pass S3 credentials and the RustFS endpoint to the assistant. The docs say the rustfs-mcp crate may no longer be on the current main branch, so confirm the build location before compiling from source.