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.
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).
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_USER
và MINIO_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:
9000
là cổng mặc định mà server MinIO nghe.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.crt
và private.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:
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:
Đă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:
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é!
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