BÀI VIẾT

Hướng dẫn cài đặt Object Storage Server dùng MinIO trên Ubuntu 22.04

6.3K
author Huỳnh Đình Hiếu - 2022-07-14 15:47:33 (GMT+7)

Giới thiệu

MinIO là giải pháp mã nguồn mở dùng để thiết lập Object Storage, là một server lưu trữ dạng phân tán với hiệu năng cao, giúp bạn dễ dàng upload file, download file như amazon, google drive, mediafire..vv. MinIO tương thích với API của dịch vụ lưu trữ đám mây Amazon S3.

Yêu cầu

Máy chủ Ubuntu 22.04.

Một tên miền và trỏ nó đến địa chỉ IP của máy chủ của chúng ta.

Cài đặt và Cấu hình allow firewall

Cập nhật hệ thống

Để đảm bảo rằng tất cả các phụ thuộc của MinIO đều được cập nhật, chúng ta hãy thực thi lệnh bên dưới.

bash (root)
apt-get update && apt-get upgrade

Chuẩn bị cho cài đặt CSF

Chúng ta cần cài đặt các phụ thuộc cho CSF.

bash (root)
apt install -y perl zip unzip dnsutils libwww-perl liblwp-protocol-https-perl sendmail-bin

Cài đặt CSF

Chúng ta điều hướng đến /usr/src

bash (root)
cd /usr/src

Chúng ta sẽ tải xuống bản phân phối CSF, bằng cách sử dụng lệnh sau.

bash (root)
wget https://download.configserver.com/csf.tgz

Chúng ta giải nén CSF.

bash (root)
tar -xzf csf.tgz

Sau đó, chúng ta điều hướng đến /usr/src/csf

bash (root)
cd csf

Sau đó, chúng ta chạy lệnh sau để cài đặt CSF.

bash (root)
sh install.sh

Xác minh các mô-đun iptables cần thiết cho CSF có sẵn.

bash (root)
perl /usr/local/csf/bin/csftest.pl

Chúng ta sẽ nhận thấy kết quả dưới đây.

Kết quả
RESULT: csf should function on this server

Xác minh trạng thái CSF sau khi cài đặt.

bash (root)
csf -v 

Chúng ta sẽ thấy một kết quả tương tự như.

Kết quả
csf: v14.16 (generic)
*WARNING* TESTING mode is enabled - do not forget to disable it in the configuration

Cấu hình CSF

Mặc định CSF chạy ở chế độ THỬ NGHIỆM. Chỉnh sửa /etc/csf/csf.conf để tắt chế độ THỬ NGHIỆM

Chúng ta xác định vị trí dòng TESTING = "1" và thay đổi giá trị thành "0"

/etc/csf/csf.conf
TESTING = "0"

Chúng ta xác định vị trí dòng RESTRICT_SYSLOG = "0" và thay đổi giá trị thành "3". Điều này có nghĩa là chỉ các thành viên của RESTRICT_SYSLOG_GROUP mới có thể truy cập các tệp syslog / rsyslog

/etc/csf/csf.conf
RESTRICT_SYSLOG = "3"

Chúng ta xác định vị trí các dòng sau và thêm các cổng cần thiết 80, 443, 9000, 9001

/etc/csf/csf.conf
# Allow incoming TCP ports
TCP_IN = "80,443,9000,9001"

Sau đó chúng ta lưu tệp cấu hình.

Dừng và tải lại CSF với tùy chọn -ra

bash (root)
csf -ra

Cài đặt MinIO

Chúng ta tải xuống file minio từ trang web chính thức của MinIO.

bash (root)
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Chúng ta cấp quyền thực thi cho tệp.

bash (root)
chmod +x minio

Sau đó chúng ta di chuyển MinIO vào thư mục /usr/local/bin

bash (root)
mv minio /usr/local/bin

Xác minh cài đặt.

bash (root)
minio --version
Kết quả
minio version RELEASE.2022-07-08T00-05-23Z (commit-id=ed0cbfb31e00644013e6c2073310a2268c04a381)
Runtime: go1.18.3 linux/amd64
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Copyright: 2015-2022 MinIO, Inc.

Cấu hình MinIO

Chúng ta sẽ tạo người dùng, nhóm cho MinIO.

bash (root)
groupadd -r minio-user
useradd -M -r -g minio-user minio-user

Chúng ta tạo một thư mục để lưu trữ tệp cấu hình.

bash (root)
mkdir /etc/minio

Chúng ta cấp quyền sở hữu thư mục cho người dùng và nhóm MinIO.

bash (root)
chown minio-user:minio-user /etc/minio

Tiếp theo chúng ta tạo thư mục dữ liệu nơi minio sẽ lưu trữ tất cả các tệp.

bash (root)
mkdir /mnt/data

Chúng ta cấp quyền sở hữu thư mục cho người dùng và nhóm MinIO.

bash (root)
chown minio-user:minio-user /mnt/data

Chúng ta sẽ tạo, mở tệp môi trường của minio /etc/default/minio và thêm nội dung sau.

/etc/default/minio
MINIO_VOLUMES="/mnt/data"
MINIO_OPTS="-C /etc/minio --address your_server_ip:9000 --console-address :9001"
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=Rc3OzCzpQbk$

MINIO_VOLUMES: Chỉ định thư mục lưu trữ cho dữ liệu.
MINIO_OPTS: đặt các tùy chọn khác nhau cho máy chủ Minio. -C khai báo nơi sẽ chứa các file config của minIO, --address khai báo IP của server/VPS chạy minIO và cổng để liên kết đến. Nếu Chúng ta không chỉ định địa chỉ IP, Minio sẽ liên kết với mọi địa chỉ IP trên máy chủ, bao gồm cả localhost hoặc bất kỳ địa chỉ IP nào liên quan đến Docker. Cổng mặc định là 9000. và cổng 9001 cho bảng điều khiển web của Minio. -C--address--console-address
MINIO_ROOT_USER: Tên người dùng để truy cập giao diện người dùng Minio. Nó phải có độ dài tối thiểu là 3 ký tự.
MINIO_ROOT_PASSWORD: Mật khẩu để truy cập vào giao diện Minio. Nó phải có độ dài tối thiểu là 8 ký tự. Chọn một khóa bí mật mạnh mẽ và phức tạp.

Cài đặt dịch vụ MinIO

Chúng ta tải xuống tệp minio.service vào thư mục /etc/systemd/system

bash (root)
 curl --url https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service -o  /etc/systemd/system/minio.service

Chúng ta sẽ load lại service của hệ thống.

bash (root)
systemctl daemon-reload

Chúng ta bật MinIO khởi động cùng hệ thống.

bash (root)
sudo systemctl enable minio
Kết quả
Created symlink /etc/systemd/system/multi-user.target.wants/minio.service → /etc/systemd/system/minio.service.

Sau đó chúng ta khởi động máy chủ MinIO.

bash (root)
systemctl start minio

Mở URL trong trình duyệt và chúng ta sẽ thấy màn hình sau. http://your_server_ip:9001

logo minio

Cài đặt và cấu hình SSL miễn phí

Cài đặt Snap

Certbot yêu cầu chứng chỉ HTTPS từ Let's Encrypt cho máy chủ web của Chúng ta. Certbot yêu cầu Snap, hãy chạy lệnh sau để cài đặt Snap.

bash (root)
apt install -y snapd

Cài đặt Certbot

Chúng ta cài đặt Certbot với Snap với lệnh sau.

bash (root)
snap install core
snap refresh core
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot

Chúng ta tạo chứng chỉ SSL

bash (root)
certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -d minio.example.com -m admin@example.com

Lệnh trên sẽ tải chứng chỉ xuống thư mục trên máy chủ của chúng ta. /etc/letsencrypt/live/minio.example.com

Chúng ta sẽ sao chép các tệp và vào thư mục thư mục cấu hình của MinIO.

bash (root)
cp /etc/letsencrypt/live/minio.example.com/privkey.pem /etc/minio/certs/private.key
cp /etc/letsencrypt/live/minio.example.com/fullchain.pem /etc/minio/certs/public.crt

Chúng ta thay đổi quyền sở hữu tệp đã sao chép.

bash (root)
chown minio-user:minio-user /etc/minio/certs/private.key
chown minio-user:minio-user /etc/minio/certs/public.crt

Sau đó chúng ta mở tệp cấu hình Minio /etc/default/minio và thêm dòng sau ở dưới cùng.

/etc/default/minio
MINIO_SERVER_URL="https://minio.example.com:9000"

Mặc dù console được truy cập thông qua cổng 9001, URL máy chủ SSL sử dụng cổng 9000 để truy cập API MinIO.

Chúng ta khởi động lại Máy chủ MinIO.

bash (root)
systemctl restart minio

Chúng ta có thể truy cập console MinIO thông qua URL trong trình duyệt của mình. https://minio.example.com:9001

Cài đặt MinIO client

Tiếp theo chúng ta sẽ cài ứng dụng client dòng lệnh của MinIO. Chúng ta sẽ tải xuống tệp mc bằng lệnh sau.

bash (root)
wget https://dl.min.io/client/mc/release/linux-amd64/mc

Chúng ta sẽ thêm quyền thực thi cho tệp mc.

bash (root)
chmod +x mc

Sau đó, chúng ta di chuyển tệp mc vào thư mục /usr/local/bin

bash (root)
mv mc /usr/local/bin

Chúng ta sẽ xác minh cài đặt bằng lệnh sau.

bash (root)
mc --version
mc version RELEASE.2022-07-06T14-54-36Z (commit-id=81c4a5ad6ee47ff2fc264b9811d884984ae05f6e)
Runtime: go1.18.3 linux/amd64
Copyright (c) 2015-2022 MinIO, Inc.
License GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>

Tiếp theo chúng ta sẽ đặt bí danh cho máy chủ MinIO của chúng ta để chúng ta có thể truy cập bằng cách sử dụng một tên dễ nhận dạng.

bash (root)
mc alias set myminio https://minio.example.com:9000 minioadmin Rc3OzCzpQbk$

Thay thế tên người dùng và mật khẩu của chúng ta đã đặt cho máy chủ: minioadminRc3OzCzpQbk$

Tên sau alias set chúng ta có thể được đặt thành bất cứ thứ gì. Trong trường hợp này được đặt là myminio

Chúng ta sẽ nhận được kết quả sau.

Kết quả
mc: Configuration written to `/<user>/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/<user>/.mc/share`.
mc: Initialized share uploads `/<user>/.mc/share/uploads.json` file.
mc: Initialized share downloads `/<user>/.mc/share/downloads.json` file.
Added `myminio` successfully.

MinIO client lưu trữ tất cả các cấu hình trong thư mục. /user/.mc

Tạo User và Service Account bằng mc

Tạo User

Chúng ta sử dụng lệnh mc admin user add để tạo user mới trong MinIO.

bash (root)
mc admin user add myminio userdemo BwebE025Ux6L

Chúng ta hãy thay thế myminio bằng tên ALIAS của chúng ta, userdemo là tên user mới, BwebE025Ux6L là mật khẩu user

Sau khi tạo người dùng, chúng ta sử dụng mc admin policy set để liên kết Kiểm soát truy cập dựa trên chính sách MinIO với người dùng mới.

bash (root)
mc admin policy set myminio readwrite user=userdemo
Policy `readwrite` is set on user `userdemo`

Tạo Service Account

Tiếp theo chúng ta sẽ tạo Service Account liên kết với người dùng được chỉ định, ở đây là tài khoản userdemo.

bash (root)
mc admin user svcacct add                       \
   --access-key "p86DC2sf29sMq97u"          \
   --secret-key "9eBwebE025Ux6LPphPOTShfB3Mq9jwIJ"  \
   myminio userdemo

Chúng ta hãy thay thế access-keysecret-key bằng key của chúng ta

Kết quả
Access Key: p86DC2sf29sMq97u
Secret Key: 9eBwebE025Ux6LPphPOTShfB3Mq9jwIJ

Chúng ta sẽ sử dụng Access KeySecret Key trong bước tiếp theo.

Kết nối S3cmd với MinIO

Cài đặt và cấu hình S3cmd

Chúng ta cài đặt s3cmd bằng lệnh sau

bash (root)
apt -y install s3cmd

Tiếp theo để cấu hình s3cmd chúng ta chạy lệnh sau

bash (non-root)
s3cmd --configure 

Chúng ta hãy chắc chắn đổi

Access Key: Nhập Access Key của chúng ta

Secret Key: Nhập Secret Key Của chúng ta

S3 Endpoint [s3.amazonaws.com]DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com] Bằng tên miền của bạn + port kết nối (ví dụ: minio.example.com:9000)

Kết quả
Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key: p86DC2sf29sMq97u
Secret Key: 9eBwebE025Ux6LPphPOTShfB3Mq9jwIJ
Default Region [US]:

Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
S3 Endpoint [s3.amazonaws.com]: minio.example.com:9000

Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
if the target S3 system supports dns based buckets.
DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: minio.example.com:9000

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
Path to GPG program [/usr/bin/gpg]:

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [Yes]: Yes

On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name:

New settings:
  Access Key: p86DC2sf29sMq97u
  Secret Key: 9eBwebE025Ux6LPphPOTShfB3Mq9jwIJ
  Default Region: US
  S3 Endpoint: minio.example.com:9000
  DNS-style bucket+hostname:port template for accessing a bucket: minio.example.com:9000
  Encryption password:
  Path to GPG program: /usr/bin/gpg
  Use HTTPS protocol: True
  HTTP Proxy server name:
  HTTP Proxy server port: 0

Test access with supplied credentials? [Y/n] Y
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)

Now verifying that encryption works...
Not configured. Never mind.

Save settings? [y/N] y
Configuration saved to '/root/.s3cfg'

Demo S3cmd

Sau đây chúng ta thực hiện một vài lệnh demo với S3cmd.

Tạo bucket

bash (non-root)
s3cmd mb s3://123host-demobucket
Bucket 's3://123host-demobucket/' created

logo demo s3cmd Upload file lên bucket.

bash (non-root)
s3cmd put newfile s3://123host-demobucket
upload: 'newfile' -> 's3://123host-demobucket/newfile'  [1 of 1]
 0 of 0     0% in    0s     0.00 B/s  done

logo file to bucket

Danh sách buckets.

bash (non-root)
s3cmd ls s3://
2022-07-14 02:27  s3://123host-demobucket

Danh sách file trong bucket.

bash (non-root)
s3cmd ls s3://123host-demobucket/
2022-07-14 02:29            0  s3://123host-demobucket/newfile

Xóa file trong bucket.

bash (non-root)
s3cmd del s3://123host-demobucket/newfile
delete: 's3://123host-demobucket/newfile'

Xóa bucket.

bash (non-root)
s3cmd rb s3://123host-demobucket
Bucket 's3://123host-demobucket/' removed

Tổng kết

Như vậy chúng ta vừa hoàn thành hướng dẫn Cài đặt Object Storage Server dùng MinIO trên Ubuntu 22.04, Hy vọng bài viết này sẽ giúp các bạn cài đặt thành công.


Bạn có làm được theo hướng dẫn này không?

Bài liên quan

Lệnh xem dung lượng ổ cứng trên Linux
Lệnh xem dung lượng ổ cứng trên Linux
Lệnh kiểm tra inode đang sử dụng trên Linux
Lệnh kiểm tra inode đang sử dụng trên Linux
Hướng dẫn quản lý phân vùng đĩa cứng trên Linux
Hướng dẫn quản lý phân vùng đĩa cứng trên Linux

Object Storage

Chuẩn S3, không giới hạn băng thông

Object Storage

Thuê Server Riêng

Chi phí thấp, cấu hình cao

Thuê Server Riêng
Thông tin tác giả
2 Bình luận

Tính năng đang được phát triển

Đang tải bình luận