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
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.
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
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/