MinIO is an open source, S3 compatible, enterprise hardened and high performance distributed object storage system.
- Official Site: https://min.io
- GitHub Sites:
This repository contains RPM specfiles for building MinIO server, client (mc), and console (object-browser) from source.
Since MinIO no longer provides pre-built binaries, these specfiles allow you to build your own RPM packages from source with the latest releases.
| Package | Version | Commit | Release Date |
|---|---|---|---|
| MinIO Server | RELEASE.2025-10-15T17-29-55Z | 9e49d5e7 | 2025-10-15 |
| MinIO Client (mc) | RELEASE.2025-08-13T08-35-41Z | 7394ce0d | 2025-08-13 |
| MinIO Console | v1.7.6 | f4a08fc0 | Pre-feature-removal version |
- ✅ Custom Branding: Optionally customize the release tag prefix (e.g., for internal builds)
- ✅ Latest Releases: Updated to most recent stable versions
- ✅ Systemd Integration: Uses official MinIO systemd unit files
- ✅ Standard Paths:
/etc/default/for configs,minio-userfor service account - ✅ Security Fixes: Includes critical security patches
- ✅ Automated Scripts: Build automation and update checking included
sudo dnf install -y rpm-build golang git nodejs makeNote:
- Git 2.x is required
- Node.js 18+ is required for building MinIO Console
- Go 1.7+ is required
The easiest way to build all three packages is using the automated build script:
# Build all packages with default RELEASE prefix
./build-all.sh
# Build with custom branding
./build-all.sh SONIC
# Build without checking RPM dependencies (useful on Ubuntu/Debian)
./build-all.sh RELEASE --nodepsThe script will:
- Check for prerequisites (go, npm, yarn, rpmbuild)
- Download source tarballs from GitHub
- Build all three RPM packages
- Display a summary with installation instructions
If you prefer to build packages individually:
mkdir -p ~/rpmbuild/{SPECS,SOURCES}# Copy spec and source files
cp minio.spec ~/rpmbuild/SPECS/
cp minio.service minio.conf ~/rpmbuild/SOURCES/
# Download source tarball
curl -L https://github.com/minio/minio/archive/RELEASE.2025-10-15T17-29-55Z.tar.gz \
-o ~/rpmbuild/SOURCES/RELEASE.2025-10-15T17-29-55Z.tar.gz
# Build (uses RELEASE prefix by default)
rpmbuild -ba ~/rpmbuild/SPECS/minio.spec
# Or build with custom branding for internal use
rpmbuild -ba --define 'release_prefix CUSTOM' ~/rpmbuild/SPECS/minio.specResult: Binary installed to /usr/sbin/minio
# Copy spec file
cp minio-mc.spec ~/rpmbuild/SPECS/
# Download source tarball
curl -L https://github.com/minio/mc/archive/RELEASE.2025-08-13T08-35-41Z.tar.gz \
-o ~/rpmbuild/SOURCES/RELEASE.2025-08-13T08-35-41Z.tar.gz
# Build (uses RELEASE prefix by default)
rpmbuild -ba ~/rpmbuild/SPECS/minio-mc.spec
# Or build with custom branding for internal use
rpmbuild -ba --define 'release_prefix CUSTOM' ~/rpmbuild/SPECS/minio-mc.specResult: Binary installed to /usr/bin/mcli
# Copy spec file
cp minio-console.spec ~/rpmbuild/SPECS/
# Download source tarball
curl -L https://github.com/minio/object-browser/archive/refs/tags/v1.7.6.tar.gz \
-o ~/rpmbuild/SOURCES/v1.7.6.tar.gz
# Build (uses RELEASE prefix by default)
rpmbuild -ba ~/rpmbuild/SPECS/minio-console.spec
# Or build with custom branding for internal use
rpmbuild -ba --define 'release_prefix CUSTOM' ~/rpmbuild/SPECS/minio-console.specResult: Binary installed to /usr/bin/minio-console
Note: This uses v1.7.6 from object-browser, the last version before features were removed in the community edition.
Install the resulting RPM packages:
sudo dnf install ~/rpmbuild/RPMS/x86_64/minio-*.rpm
sudo dnf install ~/rpmbuild/RPMS/x86_64/mcli-*.rpm
sudo dnf install ~/rpmbuild/RPMS/x86_64/minio-console-*.rpm-
Configure volumes in
/etc/default/minio:MINIO_VOLUMES="/data" MINIO_OPTS=""
-
Set credentials via systemd override (more secure than environment file):
sudo mkdir -p /etc/systemd/system/minio.service.d sudo tee /etc/systemd/system/minio.service.d/credentials.conf <<EOF [Service] Environment=MINIO_ROOT_USER=admin Environment=MINIO_ROOT_PASSWORD=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 32) EOF sudo chmod 600 /etc/systemd/system/minio.service.d/credentials.conf
-
Create data directory:
sudo mkdir -p /data sudo chown minio-user:minio-user /data
-
Start the service:
sudo systemctl daemon-reload sudo systemctl enable --now minio.service sudo systemctl status minio.service
-
Configure console in
/etc/default/minio-console:CONSOLE_OPTS="--address :9090 --console-minio-server http://127.0.0.1:9000" -
Start the service:
sudo systemctl enable --now minio-console.service sudo systemctl status minio-console.service
Access the web UI at http://your-server:9090
These specfiles support custom release tag prefixes for internal or organizational builds:
# Build with custom branding
rpmbuild -ba --define 'release_prefix MYORG' ~/rpmbuild/SPECS/minio.spec
# Verify the version
minio --version
# Output: minio version MYORG.2025-10-15T17-29-55Z (commit-id=9e49d5e7...)The release_prefix variable defaults to RELEASE and can be set to any value (e.g., INTERNAL, STAGING, PRODUCTION, etc.).
Use the included update checker script to see if newer versions are available:
# Check for updates
./check-updates.sh
# Automatically update spec files to latest versions
./check-updates.sh --updateThe script will:
- Query GitHub API for the latest release tags
- Compare with versions in your spec files
- Show what updates are available
- Optionally update the spec files with new versions and commit IDs
- ✅ Updated MinIO server to RELEASE.2025-10-15T17-29-55Z (from 2020)
- ✅ Updated MinIO client to RELEASE.2025-08-13T08-35-41Z (from 2020)
- ✅ Added MinIO Console (object-browser v1.7.6)
- ✅ Changed service user from
miniotominio-user(matches official MinIO) - ✅ Changed config location from
/etc/sysconfigto/etc/default(matches official MinIO) - ✅ Updated systemd service file to match official MinIO service
- ✅ Changed variable names:
MINIO_OPTIONS→MINIO_OPTS - ✅ Renamed package and binary from
mctomcli(matches official naming, avoids Midnight Commander conflict) - ✅ Added configurable release prefix for custom branding
For production deployments:
- Use TLS/SSL: Configure certificates in
/var/lib/minio/.minio/certs/ - Strong Credentials: Use long, random passwords for MINIO_ROOT_USER/PASSWORD
- Firewall: Restrict access to ports 9000 (S3 API) and 9090 (Console)
- Updates: Regularly update to latest releases for security patches
See the official documentation:
MinIO software is licensed under GNU AGPLv3.
These spec files are provided as-is for building MinIO from source.