NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
05/06/2023
Lượt xem

Cách cài đặt Object Storage Server MinIO ở chế độ Standalone trên Ubuntu 20.04

05/06/2023
20 phút đọc
Lượt xem

Đánh giá

5/5 - (181 bình chọn)

MinIO là một server lưu trữ đối tượng mã nguồn mở tương thích được với dịch vụ lưu trữ Amazon S3. Server này nổi bật với khả năng lưu trữ dữ liệu phi cấu trúc linh hoạt và cho phép tập hợp nhiều ổ đĩa trên các dịch vụ. Bài viết hôm này Vietnix sẽ hướng dẫn chi tiết cách cài đặt Object Storage Server MinIO ở chế độ Standalone trên Ubuntu 20.04.

Giới thiệu MinIO trên Ubuntu 20.04

Lưu trữ đối tượng là việc lưu trữ những khối dữ liệu đối tượng phi cấu trúc, từ đó người dùng có thể truy cập được thông qua các API HTTP. Đây là một phần không thể thiếu trong bối cảnh công nghệ hiện đại ngày nay, và đặc biệt quan trọng với các giải pháp sao lưu dựa trên cloud hay những mạng phân phối nội dung (CDN) yêu cầu tính khả dụng cao.

Giới thiệu MinIO trên Ubuntu 20.04
Giới thiệu MinIO trên Ubuntu 20.04

MinIO là một trong những server lưu trữ đối tượng phổ biến nhất hiện nay, được viết bằng ngôn ngữ Go. MinIO có khả năng lưu trữ các dữ liệu phi cấu trúc như video, ảnh, file log, các bản backup hay image của container/VM. Server này hỗ trợ cả giao diện command line lẫn giao diện đồ họa (MinIO Console), hỗ trợ các dịch vụ hàng đợi (queing) đơn giản cho AMQP, Elasticsearch, Redis, NATS hay PostgreSQL.

Người dùng có thể cài đặt MinIO ở chế độ Standalone trên một server đơn lẻ, hoặc ở chế độ Distributed trên nhiều server với ít nhất 4 ổ đĩa hay 4 ổ lưu trữ. Việc triển khai MinIO ở chế độ Standalone có thể thiếu một số tính năng nâng cao như lập phiên bản, mở rộng, dự phòng hay tính khả dụng. Tuy nhiên chế độ này vẫn phù hợp cho các mục đích đánh giá và phát triển đơn giản. Nếu bạn muốn sử dụng MinIO cho nhu cầu sản xuất hay phát triển quy mô lớn thì có thể cài đặt ở chế độ Distributed.

Yêu cầu để cài đặt Object Storage Server MinIO

Bài viết này sẽ hướng dẫn cách cài đặt Object Storage Server MinIO ở chế độ Standalone trên Ubuntu 20.04 với những bước sau:

  • Cài đặt máy chủ MinIO trên máy chủ đang hoạt động Ubuntu 20.04.
  • Cài đặt client MinIO trên máy tính cá nhân, cấu hình để giao tiếp với máy chủ MinIO.
  • Thiết lập chứng chỉ số để bảo mật các kết nối, giao tiếp giữa máy chủ và client, bao gồm cả bản MinIO console.

Trước tiên, hãy đảm bảo bạn có một user non-root với quyền sudo và cài sẵn tường lửa trên server. Bên cạnh đó, để truy cập MinIO Console thông qua tên miền thay vì địa chỉ IP của server thì bạn cần có sẵn một tên miền và hai bản ghi DNS sau (giả sử tên miền bạn chọn là example.com):

  • Bản ghi A có example.com trỏ đến địa chỉ IP public của server.
  • Bản ghi A có www.example.com cũng trỏ đến địa chỉ IP public của server.

Nếu bạn chưa có tên miền, hãy truy cập Vietnix để tìm hiểu các gói tên miền phù hợp với nhu cầu sử dụng của bạn. Các gói tên miền được thiết kế để đáp ứng nhu cầu của doanh nghiệp và cá nhân, bao gồm các tên miền theo tên riêng, tên miền quốc gia, tên miền quốc tế,… Ngoài ra, Vietnix còn cung cấp các dịch vụ hỗ trợ khác như email doanh nghiệp, hosting, VPS và bảo mật tên miền.

Hãy tham khảo thông tin chi tiết trên website Vietnix để có thể lựa chọn gói tên miền phù hợp và đăng ký ngay hôm nay.

Các bước tiến hành cài đặt MinIO trên Ubuntu 20.04

Bước 1 – Download và cài đặt MinIO

Server MinIO có thể được cài đặt từ file nhị phân hoặc package .deb. Hướng dẫn này sẽ sử dụng package .deb để cài đặt.

Trước tiên, đăng nhập vào server bằng lệnh sau:

ssh vietnix@your-server-ip

Cập nhật database của package:

sudo apt update

Sau đó cập nhật hệ thống:

sudo apt upgrade

Xác nhận bằng cách nhập y.

Trong quá tình nâng cấp, màn hình có thể hiển thị như ảnh dưới đây để yêu cầu thông tin về file cấu hình của server OpenSSH. Vì không cần ghi đè những thay đổi trên file cấu hình nên bạn có có thể nhấn Enter để đồng ý với tùy chọn mặc định (keep the local version currently installed).

Thông tin về file cấu hình của server OpenSSH
Thông tin về file cấu hình của server OpenSSH

Sau đó download package .deb mới nhất từ trang chủ của MinIO:

wget https://dl.min.io/server/minio/release/linux-amd64/minio_20220523184511.0.0_amd64.deb

Sau đó file minio_20220523184511.0.0_amd64.deb sẽ được download về máy. Tiếp theo dùng lệnh dpkg kèm với option -i để cài đặt file:

sudo dpkg -i minio_20220523184511.0.0_amd64.deb

Tiếp theo bạn sẽ cần tạo các đối tượng filesystem cần thiết để server MinIO chạy.

Bước 2 – Tạo user, group, data directory và file môi trường cho MinIO

Trước tiên, tạo một group hệ thống để server MinIO chạy:

sudo groupadd -r minio-user

Trong đó flag -r dùng để yêu cầu lệnh tạo group như một group hệ thống.

Sau đó tạo user cho MinIO:

sudo useradd -M -r -g minio-user minio-user

Trong đó flag -M yêu cầu lệnh không tạo home directory cho user, -r tạo một user hệ thống, còn flag -g gán người dùng vào group chính (ở ví dụ này là minio-user).

Tiếp theo hãy tạo một thư mục dữ liệu để MinIO lưu trữ file:

sudo mkdir /mnt/data

Sau đó gán quyền sở hữu cho user và group MinIO:

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

Cuối cùng là dùng lệnh dưới đây để tạo và mở file môi trường của MinIO:

sudo nano /etc/default/minio

File này sẽ chứa các giá trị cần thiết cho server và console.

Thêm các dòng dưới đây vào file (thay vietnix thành tên user non-root tương ứng):

MINIO_VOLUMES="/mnt/data"
MINIO_OPTS="--certs-dir /home/sammy/.minio/certs --console-address :9001"
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin

Biến MINIO_VOLUMES định nghĩa thư mục dữ liệu của MinIO. Còn biến MINIO_OPTS định nghĩa thư mục cho các chứng chỉ số, lắng nghe địa chỉ của MinIO Console và số port (mọi giao diện mạng và port 9001).

Bạn có thể định nghĩa user và mật khẩu đăng nhập cho MinIO Console bằng các biến MINIO_ROOT_USERMINIO_ROOT_PASSWORD. Cả hai đều được đặt thành minioadmin, tuy nhiên bạn nên cập nhật thành các thông tin đăng nhập an toàn tương ứng.

Cuối cùng, lưu rồi đóng lại file để hoàn tất. Ở bước tiếp theo, bạn sẽ cấu hình tường lửa để cho phép lưu lượng truy cập của MinIO.

Bước 3 – Cài đặt tường lửa để cho phép lưu lượng truy cập của MinIO

MinIO hoạt động trên hai cổng chính sau đây:

  1. 9000 là cổng mặc định mà server MinIO nghe.
  2. 9001 là cổng được khuyến khích để truy cập MinIO Console.

Chạy lệnh dưới đây để cho phép lưu lượng truy cập thông qua cả hai cổng:

sudo ufw allow 9000:9001/tcp
Output
Rule added
Rule added (v6)

Sau khi thiết lập các port xong, bạn có thể tạo một chứng chỉ tự ký để cho phép truy cập an toàn đến server MinIO.

Bước 4 – Bảo mật các truy cập đến server MinIO bằng chứng chỉ tự ký

Ở bước này, bạn sẽ sử dụng certgen – một ứng dụng viết bằng Go từ các nhà phát triển của MinIO để tạo một chứng chỉ tự ký (self-signed certificate). Tại thời điểm của bài viết, phiên bản mới nhất đang là 1.2.0.

Chạy lệnh dưới đây để download phiên bản mới nhất:

wget https://github.com/minio/certgen/releases/download/v1.2.0/certgen_1.2.0_linux_amd64.deb

Lệnh này sẽ đặt một file certgen_1.2.0_linux_amd64.deb vào thư mục đang làm việc hiện tại. Sau đó cài đặt ứng dụng bằng lệnh:

sudo dpkg -i certgen_1.2.0_linux_amd64.deb

Bây giờ bạn có thể dùng lệnh certgen trên hệ thống. Nếu muốn trỏ một tên miền đến server, đồng thời tham chiếu server MinIO bằng tên miền và địa chỉ IP đó thì bạn có thể tạo một chứng chỉ cho server MinIO bằng lệnh dưới đây:

sudo certgen -host example.com,your-server-ip

Nếu bạn muốn truy cập server MinIO chỉ bằng địa chỉ IP thì có thể tạo một chứng chỉ cho riêng địa chỉ đó với lệnh:

sudo certgen -host your-server-ip

Nếu thành công thì output sẽ có dạng như dưới đây:

Output
Created a new certificate 'public.crt', 'private.key' valid for the following names
 - "example.com"
 - "your-server-ip"

Nếu không dùng tên miền thì output sẽ chỉ chứa địa chỉ IP của server.

Các file public.crtprivate.key bây giờ sẽ có trong thư mục đang làm việc hiện tại. Tiếp theo bạn sẽ cần chuyển các file này đến thư mục /home/vietnix/.minio/certs. Tuy nhiên thư mục này chưa tồn tại nên hãy tạo bằng lệnh sau (thay vietnix bằng tên user non-root tương ứng của bạn):

sudo mkdir -p /home/vietnix/.minio/certs

Trong đó option -p tạo các thư mục cha chưa tồn tại.

Tiếp theo, dùng lệnh dưới đây để di chuyển file:

sudo mv private.key public.crt /home/vietnix/.minio/certs

Cuối cùng là gán quyền sở hữu của cả hai file cho user và group MinIO:

sudo chown minio-user:minio-user /home/vietnix/.minio/certs/private.key
sudo chown minio-user:minio-user /home/vietnix/.minio/certs/public.crt

Bước 5 – Khởi động server MinIO

Server MinIO có thể được khởi động bằng lệnh minio hoặc đoạn lệnh script systemd. Cần lưu ý rằng nếu khởi động bằng lệnh minio thì chương trình sẽ bị hủy sau khi reboot. Bên cạnh đó, việc khởi động theo cách này cũng sẽ tạo một folder .minio trong /root, không hoạt động được với systemd. Do đó bạn nên khởi động server bằng lệnh systemd:

sudo systemctl start minio

Kiểm tra trạng thái:

sudo systemctl status minio

Output:

Output
minio.service - MinIO
     Loaded: loaded (/etc/systemd/system/minio.service; disabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-05-23 02:55:03 UTC; 2s ago
       Docs: https://docs.min.io
    Process: 21978 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default>
   Main PID: 21989 (minio)
      Tasks: 7
     Memory: 49.5M
     CGroup: /system.slice/minio.service
             └─21989 /usr/local/bin/minio server --certs-dir /home/finid/.minio/certs --console-address :9001 /mnt/data

May 23 02:55:03 minio-buntu systemd[1]: Starting MinIO...
May 23 02:55:03 minio-buntu systemd[1]: Started MinIO.
May 23 02:55:03 minio-buntu minio[21989]: WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you chang>
May 23 02:55:03 minio-buntu minio[21989]: API: https://161.35.115.223:9000  https://10.10.0.6:9000  https://10.116.0.3:9000  https:/>
May 23 02:55:03 minio-buntu minio[21989]: Console: https://161.35.115.223:9001 https://10.10.0.6:9001 https://10.116.0.3:9001 https:>
May 23 02:55:03 minio-buntu minio[21989]: Documentation: https://docs.min.io
May 23 02:55:03 minio-buntu minio[21989]: Finished loading IAM sub-system (took 0.0s of 0.0s to load data).

Nếu API và Console ở trên hiển thị tham chiếu https thì bạn đã khởi động thành công.

Mặt khác, nếu tham chiếu là http thì đã có lỗi xảy ra. Khi đó bạn cần tạo một chứng chỉ mới theo Bước 4 để chuyển tiếp đến https, sau đó khởi động lại dịch vụ MinIO.

Bên cạnh đó, một nguyên nhân khác có thể dẫn đến lỗi là các file chứng chỉ chưa nằm trong thư mục chính xác hoặc không được sở hữu bởi user MinIO. MinIO không phải lúc nào cũng ghi log vào journal của systemd. Do đó nếu lệnh sudo journalctl -u minio không hiển thị các hoạt động được cập nhật mới nhất thì bạn có thể sử dụng lệnh sudo grep minio /var/log/syslog để thuận tiện hơn trong việc khắc phục lỗi.

Bước 6 – Kết nối an toàn đến server MinIO thông qua MinIO Console

MinIO Console là một giao diện đồ họa dùng để thực hiện các tác vụ quản trị như truy cập giao diện giám sát log hoặc cấu hình của server. Ở bước này, bạn sẽ kết nối đến server MinIO thông qua Console.

Trước tiên, trỏ trình duyệt đến https://your-server-ip:9001 (chỉ được phép dùng https).

Chứng chỉ ta đã tạo ở trên thuộc loại tự ký, do đó trình duyệt sẽ hiển thị thông báo như dưới đây:

Thông báo chứng chỉ đã tạo là tự ký
Thông báo chứng chỉ đã tạo là tự ký

Nếu bạn đang sử dụng Firefox thì hãy click vào Advanced…, sau đó chọn Accept the Risk and Continue. Các trình duyệt khác cũng tương tự.

Bây giờ màn hình đăng nhập MinIO Console sẽ hiện ra như sau:

Màn hình đăng nhập MinIO Console
Màn hình đăng nhập MinIO Console

Đăng nhập bằng các thông tin được cấu hình trong file môi trường ở Bước 2. Sau khi đăng nhập thành công, giao diện chính sẽ tải được như sau:

Giao diện chính của MinIO Console
Giao diện chính của MinIO Console

Bây giờ bạn có thể thực hiện các thao tác quản trị từ giao diện Console như xem log, tạo bucket, user, group,… hay các tác vụ cấu hình server khác.

Sau khi kết nối đến server MinIO qua giao diện Console thành công, ở bước cuối cùng bạn sẽ cài đặt và sử dụng client MinIO trên máy cá nhân rồi kết nối đến server MinIO.

Bước 7 – Cài đặt và sử dụng MinIO client trên máy local

MinIO client là một thành phần mà bạn sẽ cài đặt trên máy local và sử dụng để quản lý server MinIO. Mọi lệnh trong bước này đều được chạy trên command line của máy local. Tương tự như server MinIO thì client cũng có thể được cài đặt từ một file nhị phân hay file .deb. Trong hướng dẫn này Vietnix sẽ tập trung hướng dẫn cài đặt bằng file .deb.

Mở một phiên terminal mới trên máy local rồi download client MinIO mới nhất từ trang chủ:

wget https://dl.min.io/client/mc/release/linux-amd64/mcli_20220509040826.0.0_amd64.deb

Lệnh wget sẽ đặt một file mcli_20220509040826.0.0_amd64.deb trong thư mục đang làm việc. Bây giờ hãy cài đặt bằng lệnh sau:

sudo dpkg -i mcli_20220509040826.0.0_amd64.deb

Bây giờ bạn đã cài đặt thành công MinIO client trên máy cá nhân. Bạn có thể khởi tạo client và bật chế độ autocomplete cho shell và gọi client bằng lệnh mcli:

mcli --autocompletion
Output
mcli: Configuration written to `/home/vietnix/.mcli/config.json`. Please update your access credentials.
mcli: Successfully created `/home/vietnix/.mcli/share`.
mcli: Initialized share uploads `/home/vietnix/.mcli/share/uploads.json` file.
mcli: Initialized share downloads `/home/vietnix/.mcli/share/downloads.json` file.
mcli: Your shell is set to 'bash', by env var 'SHELL'.
mcli: enabled autocompletion in your 'bash' rc file. Please restart your shell.

Output này cho biết vị trí của thư mục cấu hình ẩn, các thư mục khác và những file cấu hình nằm bên trong.

Để bật chế độ autocomplete trong shell hiện tại mà không cần tắt hay restart thì bạn có thể chạy lệnh sau:

source .profile

File cấu hình chứa các thông tin truy cập của server MinIO mà bạn có thể dùng client để quản lý. File này có thể được chỉnh sửa trong một terminal editor hoặc bằng lệnh mcli.

Để thêm một entry vào file cấu hình của server MinIO, bạn có thể sử dụng lệnh mcli sau với các thông tin đăng nhập đã thiết lập ở Bước 2:

mcli --insecure alias set myminio/ https://your-server-ip:9000 minioadmin minioadmin

Phần tên ở phía sau alias set có thể được đặt thành bất kỳ tên nào. Trong ví dụ này là myminio/.

Flag --insecure là cần thiết vì bạn đang sử dụng chứng chỉ tự ký. Nếu không có thì lệnh sẽ không chạy được. Tốt nhất bạn nên sử dụng flag này mỗi khi chạy lệnh mcli để client không cố gắng xác thực tính xác thực của chứng chỉ.

Sau đó dùng lệnh dưới đây để mở file /.mcli/config.json:

sudo nano ~/.mcli/config.json

Bạn sẽ thấy được host myminio vừa thêm trong output:

{
  "version": "10",
  "aliases": {
    "gcs": {
      "url": "https://storage.googleapis.com",
      "accessKey": "YOUR-ACCESS-KEY-HERE",
      "secretKey": "YOUR-SECRET-KEY-HERE",
      "api": "S3v2",
      "path": "dns"
    },
    "local": {
      "url": "http://localhost:9000",
      "accessKey": "",
      "secretKey": "",
      "api": "S3v4",
      "path": "auto"
    },
    "myminio": {
      "url": "https://your_server_ip:9000",
      "accessKey": "minioadmin",
      "secretKey": "minioadmin",
      "api": "S3v4",
      "path": "auto"
    },
    "play": {
      "url": "https://play.min.io",
      "accessKey": "ACCESS-KEY",
      "secretKey": "SECRET-KEY",
      "api": "S3v4",
      "path": "auto"
    },
    "s3": {
      "url": "https://s3.amazonaws.com",
      "accessKey": "YOUR-ACCESS-KEY-HERE",
      "secretKey": "YOUR-SECRET-KEY-HERE",
      "api": "S3v4",
      "path": "dns"
    }
  }

Bây giờ bạn có thể sử dụng các lệnh khác để khám phá thêm MinIO client. Bạn có thể sử dụng option -h để truy cập phần hướng dẫn lệnh:

mcli -h
Output
COMMANDS:
  alias      manage server credentials in configuration file
  ls         list buckets and objects
  mb         make a bucket
  rb         remove a bucket
  cp         copy objects
  mv         move objects
  rm         remove object(s)
  mirror     synchronize object(s) to a remote site
  cat        display object contents
  head       display first 'n' lines of an object
...
...

GLOBAL FLAGS:
  --autocompletion              install auto-completion for your shell
  --config-dir value, -C value  path to configuration folder (default: "/home/finid/.mcli")
  --quiet, -q                   disable progress bar display
  --no-color                    disable color theme
  --json                        enable JSON lines formatted output
  --debug                       enable debug output
  --insecure                    disable SSL certificate verification
  --help, -h                    show help
  --version, -v                 print the version
...

Nếu muốn xem hướng dẫn của lệnh cụ thể thì có thể dùng option -h sau lệnh đó:

mcli alias -h

Sử dụng lệnh sau để xem thông tin về server MinIO:

mcli --insecure admin info myminio
Output
●  your-server-ip:9000
   Uptime: 8 hours 
   Version: 2022-05-19T18:20:59Z

Restart server MinIO bằng lệnh sau:

mcli --insecure admin service restart myminio

Lưu ý rằng bạn không thể khởi động một server MinIO đã dừng từ phía client. Nếu server đã dừng thì bạn cần đăng nhập lại vào server rồi khởi động bằng lệnh systemctl như ở Bước 5.

Dừng server bằng lệnh sau:

mcli --insecure admin service stop myminio

Lời kết

Trong bài viết này, Vietnix đã hướng dẫn chi tiết các bước thiết lập một server lưu trữ đối tượng bằng MinIO, đồng thời tạo một kết nối bảo mật đến server bằng chứng chỉ tự ký. Bạn cũng đã kết nối đến server MinIO bằng MinIO Console và kết nối thông qua client MinIo trên máy cá nhân. Nếu có bất kỳ thắc mắc nào khác, hãy để lại ở phần comment bên dưới để được Vietnix hỗ trợ nhanh nhất nhé!

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
1 Comment
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
H.2017
Khách
H.2017
1 năm trước

Hi ad
Mình cài minio trên synology thông qua docker, nhưng không hiểu sao khi cài hostscripts trên vps thì working well. Còn khi đưa lên hosting thì nó lại gặp trường hợp không work. kiểu lỗi link.
Khi tìm hiểu thì thấy các bài post ghi là wp-json gì đó. Không biết ads có giải pháp nào không? Xin cám ơn

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG