Workload · Running your own S3 storage

MinIO server for S3 storage you own, on one dedicated machine

Yes, you can still run a MinIO server for your own S3-compatible storage, and one dedicated machine is what its free licence allows, and six or more drives is what MinIO's own production rule asks for. Your apps keep talking S3, your files sit on disks nobody else touches, and downloads stop arriving as a line on a cloud bill. Before you order anything, though, check the licence and count the drives.

The short version
  1. Free licence: one machine, commercial use allowed
  2. Six drives or more for production-grade protection
  3. Plain drives, no RAID card in between
  4. Unmetered port, so reads are not billed by the gigabyte

Can you still get MinIO for free?

You can, but not the way most older tutorials describe. The open-source MinIO project on GitHub has been archived, with a notice at the top of its README saying it is no longer maintained, and its old ready-made downloads get no more updates. The code is still AGPLv3 if you want to compile it yourself, but you would be running software with no future fixes.

MinIO now points people to AIStor Free. Its agreement grants a royalty-free licence to run the software in standalone mode, meaning one server without clustering, for any purpose including commercial production, backups and media libraries. In return you may not modify, resell or redistribute it. You request the licence key from MinIO, and the server needs it before it will accept uploads or downloads.

Some things stay behind the paid Enterprise Lite and Enterprise subscriptions. The ones you are most likely to miss:

  • running several servers as one cluster;
  • replicating buckets or a whole site to a second location;
  • encrypting objects at rest on the server;
  • moving older objects to another storage tier automatically.

How many drives, and how much space you keep

MinIO protects your files by cutting every object into pieces and adding extra recovery pieces, called parity, spread across the drives. Lose a drive and the missing pieces are rebuilt from the rest. MinIO's documentation says production systems need a parity of at least EC:3, three recovery pieces, and parity can never be more than half the drives in a group. So a four-drive server, however large the drives, is for testing; six drives is the smallest box that can protect real data the way MinIO asks.

Drives in the serverMinIO's default paritySpace you can use (our maths)
4EC:2 (testing only)half
6EC:3half
8EC:4half
12EC:4two thirds
16EC:4three quarters

The drive grouping is decided the first time MinIO starts and cannot be widened later. Adding a few drives next year will not stretch the pool you already have, so order the drive count you want to live with.

What the box needs to keep up

MinIO's published hardware advice is aimed at big clusters: eight or more servers on 100 GbE networks, with 128 GB to 256 GiB of memory each depending on which of its pages you read, and it says the software runs on less if you accept some risk. On a single server, these are the choices that change how it behaves:

  • SSD or NVMe drives, all the same size and model. MinIO recommends flash for every workload, and a mismatched drive drags the others down to its pace.
  • No RAID controller in the path. MinIO wants each drive handed to Linux on its own (JBOD), formatted XFS, because it does the protecting itself.
  • Memory for busy days. Up to three quarters of the RAM goes to serving downloads, roughly 2 MiB for each request, which means 64 GiB covers roughly 24,000 requests at once by MinIO's own table.
  • A port that matches your readers. MinIO's network table puts a 10 Gbps link at about 1.25 GB/s; no drive array goes faster than the port it sits behind.
  • A current kernel. MinIO recommends Linux 6.8 or newer, which Ubuntu 24.04 LTS has out of the box.

The server that fits

A dedicated storage server is a whole physical machine with SSD storage you configure yourself, and nobody else's traffic shares its switch port, which nothing meters. That last part is why people move object storage off the big clouds: downloads from a hosted bucket are billed by the gigabyte once a small free allowance is used up, and here they are not.

When you build the server to order, pick JBOD at the controller step so each drive appears separately, then the number of drives, as many as 24 bays on the larger lines, in SATA-SSD, NVMe or SAS-SSD, the largest being 30.72 TB SAS-SSD drives, with registered ECC memory anywhere between 8 GB and 2 TB. If a server already racked fits your plan, expect it online about 30 minutes after approval; fitting parts we keep on hand takes 4 to 24 hours, and a part we have to buy in takes 5 to 10 working days (10 to 15 if it is scarce). You choose the city from five: Amsterdam, Bucharest, Miami, New York and San Francisco. If you mostly need raw speed for a database rather than bulk files, the NVMe servers page is the better starting point.

Up and running in an evening

  1. Install Ubuntu 24.04 when you order, and request your AIStor Free licence key from MinIO.
  2. Format each data drive as XFS with a label, for example mkfs.xfs -L AISTORDRIVE1 /dev/sdb. This wipes the drive, so check every device name first.
  3. Run mkdir -p /mnt/drive-{1..6} for the six mount points, then add one line per drive to /etc/fstab using LABEL=AISTORDRIVE1 /mnt/drive-1 xfs defaults,noatime 0 2, then run mount -a. Mounting by label means a replacement drive can step in without edits.
  4. Download and install the package with the two commands below, then paste your licence into /opt/minio/minio.license.
  5. Put your HTTPS certificate in place now, because the service starts with https:// in MINIO_VOLUMES and will look for it: make a certs folder inside /opt/minio and save there, in PEM format, a public.crt and a private.key that cover the hostname you will use in MINIO_VOLUMES.
  6. Give the service account its folders, certificate included: chown --recursive minio-user:minio-user /mnt/drive-* /opt/minio.
  7. Fill in /etc/default/minio as shown, with your own long random root name and password, and restrict it with chmod 640 because it holds that password.
  8. Bring the service up with sudo systemctl enable --now minio, and keep journalctl -u minio open until every drive shows as online.
curl --progress-bar -L dl.min.io/aistor/minio/release/linux-amd64/minio.deb -o minio.deb
sudo dpkg -i minio.deb

# /etc/default/minio (owner root:minio-user, mode 640)
MINIO_LICENSE="/opt/minio/minio.license"
MINIO_VOLUMES="https://files.example.com:9000/mnt/drive-{1...6}/minio"
MINIO_OPTS="--certs-dir /opt/minio/certs --console-address 127.0.0.1:9001"
MINIO_ROOT_USER="your-own-long-random-admin-name"
MINIO_ROOT_PASSWORD="your-own-long-random-password"

The hostname in MINIO_VOLUMES has to point at this server. Set the root name and password before the very first start: if they are missing, MinIO falls back to minioadmin for both, and its documentation says never to use that in production.

Keeping it locked down

Your apps connect on port 9000, the S3 API. The web console is a separate login, and if you never give it a fixed port with --console-address MinIO chooses a new one at random every time it starts. In the file above it listens only on 127.0.0.1, so it is invisible from the internet; open it from your own computer by tunnelling over SSH, ssh -L 9001:127.0.0.1:9001 you@your-server, and point a browser on that computer at port 9001.

HTTPS comes from the certificate you saved during setup, so there is nothing more to switch on. A certificate renewed in place is picked up on its own from AIStor RELEASE.2026-02-02T23-40-11Z onward. Then give each application its own user with only the buckets it needs, rather than handing out the root keys.

Look after it, and know its limits

  • Keep a copy somewhere else. Parity saves you from a dead drive, not from a deleted bucket or a lost server, and built-in replication is missing from the free tier. Schedule a copy of the buckets you care about to storage in another city.
  • Check the licence status. Run mc license info ALIAS with your own alias name. A Free licence shows no expiry date (N/A) because it does not run out; the 30-day grace, read-only and then offline schedule in MinIO's licence page is for paid licences, and a lapsed trial turns read-only straight away.
  • Let failing drives fail fast. MinIO's storage guide includes a short script that stops XFS retrying a broken drive forever; schedule it with @reboot in cron, since the setting resets on boot.
  • One machine is one point of failure. If the motherboard dies, the files wait until it is repaired. Our servers also have a single connected port and no private network between machines, so a multi-server cluster, which needs a paid licence anyway, would run over the public interface.

Blade and rack servers add a remote management console that reaches the machine even when Linux will not boot. Planning a bigger move from a cloud bucket? The server migration page explains how the cutover works.

Questions people ask

Is MinIO still open source?
The original code remains under the AGPLv3, but its GitHub repository is archived and no longer maintained. The edition MinIO now ships, AIStor, is proprietary, with a free tier for single-server use and paid tiers above it.
Can I use the free licence for a business?
Yes. The AIStor Free agreement explicitly allows commercial production work, as long as it runs on one server rather than a cluster. You may not modify the software or resell it to others.
Why not put the drives in RAID 6 and let MinIO use that?
MinIO asks for plain drives with no RAID layer, because its erasure coding already spreads recovery data across them. A RAID layer underneath typically costs performance and predictability, according to its storage guide.
What is the smallest sensible MinIO server?
For anything you would mind losing, six drives, because that is the fewest that reach the EC:3 parity MinIO requires for production. Fewer drives work for testing and development.
Will downloads from my bucket cost extra?
Not on the network side. Every server here has an unmetered port, so there is no allowance to exceed and no charge per gigabyte, whether your bucket serves a little or a lot.

Ready to own your storage?

Choose the drives, the city and the port, and run S3 storage on a machine that is yours alone.

Get your storage server

Read next