# MinIO

MinIO is an probably the most well-known, self-hosted, *S3-compatible* object storage (read more on the [MinIO GitHub page](https://github.com/minio/minio)).

#### Step #1: in the MinIO web console

To use this object storage as a backend for SFTP.cloud, the first thing you need to do is creating a bucket in the MinIO web UI, as you'd usually do:

[![image.png](https://kb.syncplify.com/uploads/images/gallery/2026-09/scaled-1680-/X8Zimage.png)](https://kb.syncplify.com/uploads/images/gallery/2026-09/X8Zimage.png)

Once the bucket is created, **the next thing you'll need is an Access Key** (and its associated Secret) to access it. You can use your primary MinIO identity for this, but we recommend you provision dedicated per-bucket access credentials. With the community edition of MinIO you cannot do that in the web UI, but it's easy to do at command line. Here's a naive example:

```bash
mc alias set myminio http://127.0.0.1:9001 ADMIN_KEY ADMIN_SECRET

cat > mybucket-policy.json <<'EOF'
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject","s3:PutObject","s3:DeleteObject","s3:ListBucket"],
      "Resource": ["arn:aws:s3:::mybucket","arn:aws:s3:::mybucket/*"]
    }
  ]
}
EOF

mc admin accesskey create myminio mybucket-user \
  --access-key "AKIAEXAMPLEKEY" \
  --secret-key "SECRETEXAMPLE" \
  --policy ./mybucket-policy.json \
  --expiry-duration 90d
```

If you'd prefer to do this via a web-based graphical console, there are 3rd-party projects that do just that, for example this one: [https://github.com/georgmangold/console](https://github.com/georgmangold/console)

That's it for the MinIO side. Now let's move to the SFTP.cloud side.

#### Step #2: in your SFTP.cloud Storage Connector

The first thing to do is to add a new **Virtual File System**. For MinIO in particular there are a few small (but extremely important) details to pay attention to:

- **Type:** `S3` (just like any other S3-compatible object stores)
- **Region:** leave empty
- **Endpoint:** this needs to be the MinIO S3 endpoint, by default MinIO uses `http://<rustfs-host-ip-addr>:9000` unless you configured it with TLS (which you definitely should) in which case it's `https://...`

[![image.png](https://kb.syncplify.com/uploads/images/gallery/2026-09/scaled-1680-/S44image.png)](https://kb.syncplify.com/uploads/images/gallery/2026-09/S44image.png)

<p class="callout info">**<span style="text-decoration: underline;">Do NOT forget</span>** to push the `Save` button next to the **Access secret** after you type it in, or it won't be saved, and nothing will work.</p>

Then, still in the Storage Connector UI, go to the **Users** page, and give your user(s) the desired access to the newly created VFS:

[![image.png](https://kb.syncplify.com/uploads/images/gallery/2026-09/scaled-1680-/y8Pimage.png)](https://kb.syncplify.com/uploads/images/gallery/2026-09/y8Pimage.png)

#### Finally

Test it out. Connect to it via your SFTP.cloud WebClient, create a folder, upload some files...

[![image.png](https://kb.syncplify.com/uploads/images/gallery/2026-09/scaled-1680-/IRKimage.png)](https://kb.syncplify.com/uploads/images/gallery/2026-09/IRKimage.png)

Then, back in the MinIO web UI you can verify that your folder and file(s) did actually land there:

[![image.png](https://kb.syncplify.com/uploads/images/gallery/2026-09/scaled-1680-/7Fpimage.png)](https://kb.syncplify.com/uploads/images/gallery/2026-09/7Fpimage.png)

And you're done. That's all there is to it. 😄