Hướng dẫn cài đặt Minio trên Almalinux

Minio là gì ?

Đầu tiên chúng ta cùng tìm hiểu Minio là gì một cách ngắn gọn. Đây là định nghĩa ở trang chủ của minio:

Minio is a high performance distributed object storage server, designed for large-scale private cloud infrastructure.

Ngắn gọn mà nói thì câu trả lời là: Nó giống như dịch vụ AWS S3, nhưng được host local.

Minio là một object storage server được implement những public API giống như AWS S3. Điều đó có nghĩa là những ứng dụng có thể config để giao tiếp với Minio thì cũng có thể giao tiếp với AWS S3. Là một server lưu trữ object nên có thể được sử dụng để lưu trữ những unstructured data như ảnh, video, log files, backups và container/VM images. Dung lượng của 1 object có thể dao động từ một vài KB tới tối đa là 5TB. File cũng được gom lại trong 1 buckets, nó là được chỉ cùng với access key khi dùng app. Đây là giao diện của minio:

Cách cài đặt Minio

Tìm hiểu sơ sơ nó là gì, các bạn đến bài này chắc cũng biết nó là gì rồi. GIờ vô cài đặt thôi. Nhưng lưu ý bản này chỉ là bản cài cơ bản trên 1 node, 1 disk, dùng cá nhân, còn thương mại sẽ cần cấu hình dạng multi node và multi disk

Yêu cầu phần cứng (đề xuất)

  • CPU: 4 core
  • Ram: 8GB
  • Disk: 100GB
  • Network Speed: Càng nhanh càng tốt
  • Hệ điều hành: Almalinux / Ubuntu

Quá trình cài đặt

Để cài đặt, yêu cầu hệ điều hành chưa cài gì nhé.

1. Cập nhật OS

Chúng ta login và SSH rồi chạy các lệnh sau:

dnf -y update
dnf -y install wget

2. Tải source và cài đặt

Chúng ta chạy lệnh sau để tải source và phân quyền

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

Set selinux cho file của minio

sudo restorecon -v /usr/local/bin/minio

Kiểm tra phiên bản minio đã cài đặt

minio --version

3. Cấu hình Minio

Tạo user và set quyền cho user minio

sudo useradd -r minio-user -s /sbin/nologin
sudo chown minio-user:minio-user /usr/local/bin/minio

Tạo thư mục chứa file cấu hình minio và phân quyền cho thư mục cấu hình

sudo mkdir /etc/minio
sudo chown minio-user:minio-user /etc/minio

Phân quyền minio vào thư mục / disk lưu trữ data

sudo chown minio-user:minio-user /mnt/data

Nếu chưa có thư mục /mnt/data thì ta chạy lệnh sau để tạo rồi chạy lại lệnh trên

mkdir /mnt/data

Tạo môi trường chạy minio

Để tạo môi trường, chúng ta chạy lệnh sau:

sudo nano /etc/default/minio

Sau đó thêm nội dung sau vào, rồi bấm Ctrl + O để lưu, Ctrl + X để thoát

MINIO_VOLUMES="/mnt/data"
MINIO_OPTS="-C /etc/minio --address :9000 --console-address :9001"
MINIO_ROOT_USER="minio"
MINIO_ROOT_PASSWORD="ChooseAStrongPassword"

Trong đó có 2 thông số quan trọng là

  • MINIO_ROOT_USER: Tài khoản quản lý minio sẽ dùng
  • MINIO_ROOT_PASSWORD: Nhập mật khẩu tài khoản quản lý

4. Cấu hình dịch vụ Minio

Tải file cấu hình dịch vụ và phần quyền selinux

wget https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service -O /etc/systemd/system/minio.service
sudo restorecon -v /etc/systemd/system/minio.service

Reload lại hệ thống dịch vụ

sudo systemctl daemon-reload

Khởi chạy Minio và set khởi động cùng hệ thống

sudo systemctl enable minio
sudo systemctl start minio

5. Cài nginx proxy để thêm domain và SSL cho domain

Cài đặt nginx

dnf -y install nginx
systemctl enable nginx

Thêm tên miền

Chúng ta chạy lệnh sau (sửa tenmien.com thành tên miền của bạn):

nano /etc/nginx/conf.d/tenmien.com.conf

Sau đó thêm cấu hình bên dưới rồi bấm Ctrl + O để lưu và Ctrl + X để thoát. Lưu ý: ở dòng server_name, đổi tenmien.com thành tên miền của bạn

upstream minio {
   server 127.0.0.1:9000;
}
upstream minio_ui {
   least_conn;
   server 127.0.0.1:9001;
}
server {
    listen 80;
    server_name tenmien.com;

    # Allow special characters in headers
    ignore_invalid_headers off;
    # Allow any size file to be uploaded.
    # Set to a value such as 1000m; to restrict file size to a specific value
    client_max_body_size 0;
    # Disable buffering
    proxy_buffering off;
    proxy_request_buffering off;

	location / {
	   proxy_pass http://minio;
	       proxy_set_header Host $http_host;
		  proxy_set_header X-Real-IP $remote_addr;
		  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		  proxy_set_header X-Forwarded-Proto $scheme;

		  proxy_connect_timeout 300;
		  # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
		  proxy_http_version 1.1;
		  proxy_set_header Connection "";
		  chunked_transfer_encoding off;
	}
	location /admin/ {
		rewrite ^/admin/(.*) /$1 break;
	    proxy_set_header Host $http_host;
	    proxy_set_header X-Real-IP $remote_addr;
	    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	    proxy_set_header X-Forwarded-Proto $scheme;
	    proxy_set_header X-NginX-Proxy true;

	    # This is necessary to pass the correct IP to be hashed
	    real_ip_header X-Real-IP;

	    proxy_connect_timeout 300;

	   # To support websockets in MinIO versions released after January 2023
	   proxy_http_version 1.1;
	   proxy_set_header Upgrade $http_upgrade;
	   proxy_set_header Connection "upgrade";
	   # Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
	   # Uncomment the following line to set the Origin request to an empty string
	   # proxy_set_header Origin '';

	   chunked_transfer_encoding off;
	   proxy_pass http://minio_ui;
	}
}

Điều chỉnh cấu hình môi trường

Ta chạy lệnh sau để sửa cấu hình môi trường:

sudo nano /etc/default/minio

Chúng ta sửa như bên dưới rồi bấm Ctrl + O để lưu và Ctrl + X để thoát. Lưu ý: ở 2 dòng cuối, đổi tenmien.com thành tên miền của bạn

MINIO_VOLUMES="/mnt/data"
MINIO_OPTS="-C /etc/minio --address :9000 --console-address :9001"
MINIO_ROOT_USER="minio"
MINIO_ROOT_PASSWORD="ChooseAStrongPassword"
MINIO_SERVER_URL="https://tenmien.com"
MINIO_BROWSER_REDIRECT_URL="https://tenmien.com/admin/"

Cài đặt certbot và SSL cho tên miền

dnf -y install certbot python3-certbot-nginx
certbot --nginx -d tenmien.com

Khởi chạy lại minio và nginx

systemctl restart minio
systemctl restart nginx

Nếu restart nginx bị lỗi, các bạn chạy lệnh sau

sudo fuser -k 80/tcp
sudo fuser -k 443/tcp
systemctl restart nginx

Như vậy là xong. Để truy cập Minio chúng ta truy cập đường link https://tenmien.com là được.

Chúc các bạn thực hiện thành công.

4.4/5 - (8 bình chọn)