← Back to Blog

What is MinIO? Self-host S3 object storage on a VPS

· MyPanel

If you’ve ever used Amazon S3 to store images, uploads or backups, then MinIO gives you that exact experience — but running right on your own VPS, with no per-GB bill and no vendor lock-in. This post explains what MinIO is, when to use it, and how to self-host S3-compatible object storage in a single click with MyPanel.

What is MinIO?

MinIO is open-source object storage software that is fully compatible with the Amazon S3 API. Instead of storing files in a traditional folder tree, object storage keeps each file as an “object” inside buckets and serves them over HTTP/HTTPS — exactly the way S3 works.

Why MinIO stands out:

In short: MinIO gives you your own “mini Amazon S3.”

Why self-host MinIO instead of renting S3?

MinIO (self-hosted)Amazon S3 / cloud
Storage costIncluded in your VPSPer-GB + request fees
Egress bandwidthUsually free/cheap with the VPSBilled, easy to overrun
Latency for same-host appsVery low (local)Over the Internet
Data sovereigntyFull controlOn a third party’s infra
Vendor lock-inNoneYes

For small and medium sites, S3 storage plus egress fees can easily exceed the price of a single VPS. Self-hosting MinIO eliminates per-GB storage bills while keeping the S3 standard so you can scale out later.

What is MinIO used for?

Installing MinIO on a VPS: by hand vs one-click

Standing up a production-grade MinIO by hand is not trivial: you install Docker, pull the MinIO image and the mc client, configure the container, set up an nginx reverse proxy, obtain a Let’s Encrypt SSL certificate, then create buckets and per-bucket access keys for safety. One wrong step and either it’s unreachable from outside, or your data is wide open.

MyPanel bundles all of that into one button.

Self-host MinIO with MyPanel — the steps

MyPanel is a single-binary control panel for Linux VPS with built-in Object Storage (MinIO):

  1. Install the engine — go to the Storage menu and click Install MinIO. The panel pulls the MinIO image + mc and starts the container.
  2. Create a bucket + key — name the bucket; each bucket gets its own access key + secret scoped to that bucket only (one bucket’s key can’t touch another). Enable public read if you want to serve images over URLs.
  3. Expose on a domain + SSL — click “Expose on a domain” and MyPanel creates a reverse proxy to MinIO and issues Let’s Encrypt automatically. There’s a separate option to expose the admin Console (full WebSocket support).
  4. Connect your app — use Endpoint https://<your-domain>, Region us-east-1, and enable path-style (forcePathStyle: true). The Storage page shows these values ready to copy.

See the Object Storage (MinIO) guide for details.

Secure by default

MyPanel configures MinIO to listen internally only (127.0.0.1) — it’s only exposed to the Internet when you deliberately “Expose on a domain” with SSL. Each bucket has its own key, you can rotate keys anytime, and toggle public / private at will. This is exactly the setup that’s easy to get wrong by hand.

Pair MinIO with backups

MinIO isn’t just for media — it’s also an S3-compatible backup target for MyPanel itself. You can point website/database backups at MinIO (on the same server or another) for a safe copy. See backup & restore.

Get started in minutes

If you want self-hosted, cost-effective, S3-compatible object storage without wrestling with Docker and nginx, MinIO on MyPanel is the shortest path:

👉 Install MyPanel with one command on an Ubuntu/Debian VPS, then turn on MinIO with a single click.

MyPanel — Self-hosted control panel for websites, WordPress, databases & SSL on your Linux server.