Wednesday, October 9, 2024
Google search engine
HomeGuest BlogsSetup S3 Compatible Object Storage Server using Minio

Setup S3 Compatible Object Storage Server using Minio

Do you want to setup your private S3 compatible Object storage server?. Minio is a lightweight object storage server compatible with Amazon S3 cloud storage service. Minio is written in Go and licensed under Apache License v2.0.

minio s3 object storage server

Object storage is best suited for storing unstructured data such as videos, photos, log files, container images, VM images, and backups. Each size of an object can range from a few KBs to a maximum of 5TB.

Installing Minio Object Storage Server on Linux

Minio object storage server can be installed from a binary file or by running it in a container. I won’t do container installation because it is not an ideal way of setting up a storage server.

Step 1: Download Minio

Download Minio binary.

wget https://dl.minio.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/

You can query package details using version option.

$ minio  -version
inio version RELEASE.2023-08-16T20-17-30Z (commit-id=d09351bb10883d1b55579d11ad68efafaa86b700)
Runtime: go1.19.12 linux/amd64
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Copyright: 2015-2023 MinIO, Inc.

Step 2: Prepare Object Storage disk

After Minio is downloaded, let’s prepare a block device that we’ll use to store objects. The path used can just be a directory inside your file system root.

For convenience and reliability, I’m using a secondary disk in my server.

# lsblk  | grep sdb
 sdb      8:16   0    10G  0 disk 

I’ll create a new partition and mount this disk to /data directory.

sudo parted -s -a optimal -- /dev/sdX mklabel gpt
sudo parted -s -a optimal -- /dev/sdX mkpart primary 0% 100%
sudo parted -s -- /dev/sdX align-check optimal 1
sudo mkfs.ext4 /dev/sdX1
sudo mkdir /data
sudo mount -a

Configure /etc/fstab

$ sudo vim /etc/fstab
/dev/sdX1 /data ext4 defaults 0 0

Confirm disk mount

$ df -h | grep /data
/dev/sdb1       9.8G   37M  9.3G   1% /data

Step 3: Start Minio service

You have three options of starting a Minio Server.

  • From command line – interactive session
  • Using Systemd
  • Using Sysvinit / Upstart

Managing Minio Service with systemd

For guys running a system with systemd init system, create a user and group for running Minio service.

sudo groupadd --system minio
sudo useradd -s /sbin/nologin --system -g minio minio

Give minio user ownership for the /data directory.

sudo chown -R minio:minio /data/

Create systemd service unit file for Minio.

sudo vim /etc/systemd/system/minio.service

Add below contents to the file.

[Unit]
Description=Minio
Documentation=https://docs.minio.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/data
User=minio
Group=minio

EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"

ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

Create Minio environment file /etc/default/minio

sudo mkdir -p /etc/default/

cat <<EOF | sudo tee /etc/default/minio
# Volume to be used for Minio server.
MINIO_VOLUMES="/data"
# Use if you want to run Minio on a custom port.
MINIO_OPTS="--address :9000"
# Access Key of the server.
MINIO_ACCESS_KEY=BKIKJAA5BMMU2RHO6IBB
# Secret key of the server.
MINIO_SECRET_KEY=V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12
EOF

MINIO_ACCESS_KEY: Access key of minimum 3 characters in length.

MINIO_SECRET_KEY: Secret key of minimum 8 characters in length.

Reload systemd and start minio service

sudo systemctl daemon-reload
sudo systemctl start minio

A check on status should show running.

setup minio object storage server 01

You can also set the service to start on boot.

sudo systemctl enable minio

Step 4: Configure Firewall

If you have an active firewall service, allow port 9000.

For UFW, use:

sudo ufw allow 9000

For firewalld, use:

sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
sudo firewall-cmd --reload

Step 5: Access Minio Web interface

Now that we have installed Minio, started the service and configured firewall, we can visit the web dashboard URL to finish login and create the first test bucket.

Visit the URL http://[serverip|localhost]:9000 from your browser and login with the configured Access and Secret key.

setup minio object storage server 02

On logging, you should get to an object web interface which looks similar to below.

setup minio object storage server 03

You can create a test bucket from the UI by clicking on the “+” button at the right bottom corner.

setup minio object storage server 04

Provide bucket name and press enter key.

setup minio object storage server 05

Step 6: Test Minio with mc client

mc provides a modern alternative to UNIX commands like ls, cat, cp, mirror, diff etc. Download mc to your Linux.

wget https://dl.minio.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin
mc --help

Setup autocompletion

sudo wget https://raw.githubusercontent.com/minio/mc/master/autocomplete/bash_autocomplete
sudo mv bash_autocomplete /etc/bash_completion.d/mc
source /etc/bash_completion.d/mc

And enjoy tab completion feature.

$ mc <TAB>

Configure mc for Minio:

mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> <API-SIGNATURE>

Example:

mc config host add minio http://10.0.2.15 BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 --api S3v4

Sample output:

setup minio object storage server 06

Follow the complete guide on Use mc with Minio Server to get started with mc.

You can also explore further like using AWS CLI, s3cmd e.t.c.

See

Reference:

Also check:

Tags:

  • How can I setup Object storage server on Linux
  • S3 Object storage server setup on Ubuntu / Debian / CentOS
  • Minio Object Storage server
  • Setup S3 Compatible Object Storage Server with Minio
Dominic Rubhabha-Wardslaus
Dominic Rubhabha-Wardslaushttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Recent Comments