Hướng dẫn cài đặt và cấu hình MinIO qua Docker trên Aapanel

Vào một ngày đẹp trời, mình nhận ra việc lưu trữ trên Google Storage quá tốn kém với mức tính toán chi phí vô cùng khó hiểu như hình dưới đây

Cloud storage
Cứ đến giữa tháng, Google Storage như kiểu “đến kỳ” cắn tiền như uống nước

Sau một hồi tâm sự với các bạn AI thì cuối cùng cũng cho ra được giải pháp: MinIO

MinIO giúp lưu trữ các file thông qua giao diện upload truyền thống, qua API và phục vụ các file đó một cách nhanh chóng tới người dùng cuối.

Thật may mắn là ông thần Docker cũng có phiên bản cài đặt MinIO. Riêng với Aapanel thì việc cài đặt còn dễ dàng hơn nữa qua chức năng One-Click. Tuyệt

Các bước cài đặt MinIO

Bạn truy cập vào Docker trên Aapanel –> tại tab One-Click install bạn nhập cụm từ “MinIO” vào khung tìm kiếm –> rồi bấm nút “Search”. Cuối cùng bạn bấm nút Install.

Tìm kiếm MinIO trên Docker aaPanel
Các image có trong mục One-Click Install đều được Aapanel tối ưu nên việc cài đặt rất nhanh chóng và dễ dàng.
Cấu hình docker MinIO
Trang cấu hình chi tiết khi cài MinIO

Chúng ta sẽ cần lưu ý các thông số sau:

  • Web port: 19001 – Port dùng để truy cập vào giao diện web của MinIO
  • Api port: 19000 – Port dùng để giao tiếp qua API
  • Admin user: minio – Tên người dùng để truy cập (Không nên để mặc định)
  • Admin password: GiYDKNf5mhepSZjS – Mật khẩu dùng để quản lý (Nên copy ra)
  • Cpu core limit: 0 – Đặt bằng 0 thì MinIO sẽ dùng toàn bộ số core CPU để chạy
  • Memory limit: 0 – Đặt bằng 0 thì MinIO sẽ dùng toàn bộ RAM để chạy

Cấu hình xong các thông số bạn muốn rồi bấm nút Confirm

Cài đặt MinIO hoàn thành
Sau khi cài đặt thành công, Hộp chứa MinIO sẽ có báo dòng trạng thái Running.

Trường hợp bạn chờ một lúc những không xuất hiện dòng Running, bạn có thể tải lại trang Aapanel.

Cấu hình MinIO trên Aapanel

Việc cấu hình MinIO là quan trọng nhất vì nó mang đến cho bạn trải nghiệm sử dụng đầy đủ với nhu cầu thực tế.

Thiết lập proxy để truy cập giao diện web

Thiết lập alias mới

Alias giống như chìa khóa để bạn thực hiện các thao tác dòng lệnh trong MinIO.

Để “rèn” được chìa khóa, bạn cần khai báo chính xác Admin user và Admin password trong câu lệnh dưới đây:

mc alias set myminio http://localhost:9000 minio GiYDKNf5mhepSZjS

Phần màu xanh, và đỏ bạn cần thay đổi cho phù hợp với thông tin Admin user; Admin password khi cài đặt MinIO

Nếu muốn kiểm tra danh sách các alias bạn có thể dùng lệnh sau:

mc alias list

Tạo một bucket mới

Bucket giống như tên thư mục, nơi mà bạn phân loại để lưu trữ các tệp tin của mình.

Chúng ta dùng lệnh sau để tạo bucket (Bạn cũng có thể tạo bucket bằng giao diện web)

mc mb myminio/testbucket

Bạn nhớ thay myminio thành tên alias mà bạn đã tạo bên trên.

Mở public một bucket

Mặc định khi cài MinIO trên Aapanel, mọi bucket bạn tạo ra đều ở chế độ ẩn danh. Khi đó, các tệp tin như hình ảnh, video bạn tải lên máy chủ qua MinIO thì người ở truy ở một trình duyệt khác sẽ không xem được.

Lúc này, bạn cần cho phép public GET object bucket chưa các tệp tin đó bằng lệnh sau:

mc anonymous set public myminio/testbucket

Nếu không muốn chia sẻ công khai việc truy cập nữa thì bạn chạy lệnh:

mc anonymous set none myminio/testbucket

Phân nhiều quyền cho bucket

Bạn cần lưu ý chỉnh sửa các phần màu sắc cho phù hợp với nhu cầu quản lý.

Tạo file json

cat > /tmp/testbucket.json <<EOF
{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Effect":"Allow",
      "Principal":{"AWS":["*"]},
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
     "Resource":["arn:aws:s3:::testbucket/*"]
    }
  ]
}
EOF

Về trường Version: Nên để chuẩn "2012-10-17" để đảm bảo tương thích với AWS S3 SDK hoặc khi copy policy từ MinIO sang S3.

Kiểm tra lại file json

cat /tmp/testbucket.json

Sau đó áp dụng quyền cho bucket

mc anonymous set-json /tmp/testbucket.json myminio/testbucket

Hướng dẫn thêm để vào teminal docker

Hướng dẫn sử dụng postman để upload hình ảnh qua api

Lưu ý khi xóa file cần reset container để làm sạch ổ cứng.

Một số lệnh thường gặp khi sử dụng MinIO

Lệnh liệt kê thư mục trong minio

mc ls

Lệnh di chuyển tệp từ một bucket này sang bucket khác.

mc mv --recursive /data/ten_bucket_1/ /data/ten_bucket_2

Ten_bucket_1 là bucket chứa các tệp bạn cần di chuyển. Ten_bucket_2 là bucket mới bạn muốn di chuyển tệp đến.

Lệnh xóa các thư mục rỗng (do di chuyển file)

mc rm --recursive --force /data/ten_bucket_can_xoa/