Object Storage with MinIO
MinIO is a high performance distributed object storage server, designed for large-scale private cloud infrastructure. MinIO is designed in a cloud-native manner to scale sustainably in multi-tenant environments.
You can install the MinIO server by compiling the source code or via a binary file. For this guide, we will make use of the binary and we will be deploying on a server running Ubuntu 18.04.
First, if you haven't updated the package database recently, update it now:
apt get update
Next, download the MinIO server binary:
curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio
You will need to change permissions for the file you just downloaded to make it executable:
chmod +x minio
Next, the binary will need to be relocated to the
/usr/local/bin directory where the startup script expects to find it. We'll be downloading the startup script below. It is also not suggested to run the MinIO server as root. Instead, we'll create a user called
This is done by running:
useradd -r minio-user -s /sbin/nologin
Dependent upon your particular setup, the creation of the storage directory may vary.
The storage directory for MinIO will need to have its permissions adjusted to allow
chown minio-user:minio-user /path/to/storage
Next up, we will need to create a MinIO configuration file. Typically, the most common location for this file is in
/etc/. Make sure this location has the same permissions as the storage directory for
An example of the MinIO configuration:
MINIO_ACCESS_KEY="minio" MINIO_VOLUMES="/usr/local/share/minio/" MINIO_OPTS="-C /etc/minio --address your_server_ip:9000" MINIO_SECRET_KEY="miniostorage"
MINIO_ACCESS_KEY: a key set to access UI or the bucket from a remote application
MINIO_VOLUMES: is the directory (path) where your files will are stored
MINIO_OPTS: is multifaceted, it can include the working path of MinIO configuration, options of how to access the UI of MinIO
MINIO_SECRET_KEY: this is similar to that of the access key. it should not be the same key you utilized for the access key.
To allow MinIO to startup at reboot, a startup script is required. Download the descriptor file:
curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
Double check the contents of this file. Once you are satisified with the content, the descriptor file will then need to be moved to
To ensure systemd knows of the new startup script, you'll need to reload the systemd units:
Also, to ensure that the MinIO Server automatically starts at reboot, add it to systemctl:
systemctl enable minio
This completes the install, and setup process for MinIO. You should now be able to start the service!
systemctl start minio
Double check that is in fact running:
systemctl status minio
You should see an output similar to:
minio.service - MinIO Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-04-09 15:31:45 UTC; 1 day 3h ago Docs: https://docs.min.io Main PID: 2757 (minio) Tasks: 20 (limit: 4915) CGroup: /system.slice/minio.service └─2757 /usr/local/bin/minio server -C /etc/minio --address s3.example.com:443 /usr/local/minio/data