MinIO / self-hosted
About ten minutes, and the MinIO software itself is free — the cost is your own server and bandwidth. Here is how to prepare one bucket and one key pair on your MinIO for Guyun.
The endpoint is your own address — Guyun cannot guess it. Always use HTTPS: the app only connects over HTTPS. For a self-signed certificate on a private network, trust that certificate on the device first.
Step by step
-
Step 1
Install and sign in to MinIO
- Install the server from min.io and start it; the official docs cover the install options.
- The S3 API listens on port
9000by default, while the console port is set at startup (many installs use9001) — use the address printed in the startup log and sign in with the root account.
-
Step 2
Create the bucket
- In the console open Buckets (the object browser) and choose Create Bucket.
- Enter a name that follows the S3 rules (3–63 lowercase letters, numbers, hyphens or periods, starting and ending with a letter or number), keep the other options at their defaults and create it.
-
Step 3
Create an access key
- Open Identity → Users → Create User, and attach a policy that covers only this bucket.
- You can also add a service account to an existing user: open that user → Service Accounts → Create service account to get an access key and a secret key, shown once — save them right away.
-
Step 4
Note the endpoint
- The endpoint is your own S3 API address, e.g.
https://minio.example.com(include the port if you use one, e.g.https://your-server:9000). Always use HTTPS; trust a self-signed certificate on the device first. - Write the scheme and host only (add the port if you use one) and no bucket name or path;
9001is the console, not the endpoint.
- The endpoint is your own S3 API address, e.g.
-
Step 5
Fill it in and test
- In Guyun, Add storage → MinIO / self-hosted, then enter the bucket name, endpoint and key from the table below.
- Then choose Test connection & save.
A policy that covers only this bucket
- In the console open Access → IAM Policies → Create Policy and paste the JSON below (MinIO uses the same policy schema as AWS IAM), replacing
your-bucket-namewith your bucket name. - Then open Identity → Users and attach only that policy to your user: MinIO denies everything that is not explicitly allowed.
- Do not use the root account's key — it can do anything on the whole server.
The minimal policy for this bucket
Paste this when you create the policy under IAM Policies:
{ "Version": "2012-10-17",
"Statement": [
{ "Effect": "Allow", "Action": ["s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads"], "Resource": "arn:aws:s3:::your-bucket-name" },
{ "Effect": "Allow", "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts"], "Resource": "arn:aws:s3:::your-bucket-name/*" }
] }
Replace your-bucket-name inside it with your real bucket name (two places). Do not narrow the resource to a single directory — Guyun writes its recycle-bin manifest, device connection log and handover records under the .guyun/ prefix.
Other cases (skip if not needed)
The console and the S3 API are two different ports: 9001 is the web console, and 9000 is the API Guyun connects to (check your startup flags).
Cost
- The MinIO software is free: see the MinIO website for the open-source and commercial licence terms.
- The cost is your own server, disks and bandwidth; Guyun charges nothing extra.
Official sources
- MinIO website (download and install) (opens in a new tab)
- Docs: managing security and access in the console (opens in a new tab)
Copy these values
They go into the matching fields on Guyun's "Add storage" screen: Endpoint: MinIO has no preset place — type your own service address into the app's HTTPS endpoint field (e.g. https://minio.example.com); the bucket name and key go in as the table above says.
| This value | Where it goes in Guyun |
|---|---|
| Bucket name The name you just created, e.g. your-bucket-name. | Bucket name |
| Endpoint Your own API address, e.g. https://minio.example.com. | Endpoint |
| Key The access key and secret key from the step above. | Access key and secret key |
How to tell it worked
- The connection test passes, which means the bucket name, endpoint and key all fit together and Guyun can reach your MinIO.
- The storage then appears in Guyun's list, and you can open it to see the files in the bucket.
- If it fails, see common errors.
Go back to Guyun and choose Test connection & save.