Skip to main content

MinIO

RustFSMinIO is an absolutelyprobably remarkablethe most well-known, self-hosted, S3-compatible object storage (read more on the RustFSMinIO webGitHub sitepage).

Step #1: in the RustFSMinIO 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 RustFSMinIO web UI, as you'd usually do:

image.pngimage.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 issueuse themyour 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 Access Keys tab in the RustFS web UI.UI, Webut recommendit's you limit the scope of your Access Key onlyeasy to thedo bucket(s)at youcommand genuinelyline. wantHere's toa usenaive via SFTP.cloud.example:

image.png

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

That's it for the RustFSMinIO 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 Linode Object StorageMinIO 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 RustFS S3 endpoint, by default RustFS uses http://<rustfs-host-ip-addr>:30292 unless you configured it with TLS (which you definitely should) in which case it's https://...

image.pngimage.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.pngimage.png

Finally

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

image.pngimage.png

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

image.pngimage.png

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