Skip to main content

MinIO

MinIO is an probably the most well-known, self-hosted, S3-compatible object storage (read more on the MinIO GitHub page).

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

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:

mc alias set myminio https:http://minio.example.com127.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

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

Do NOT forget 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.

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

Finally

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

image.png

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

image.png

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