Các giải pháp thay thế MinIO cho S3 cục bộ trên một máy chủ

Công nghệ15 tháng 9, 2026·10 phút đọc

MinIO bị công ty đứng sau bỏ rơi vào cuối năm 2025, khiến nhiều dự án và pipeline phụ thuộc vào nó phải tìm phương án thay thế. Bài viết so sánh sáu lựa chọn S3 tương thích dành cho triển khai đơn node: S3Proxy, RustFS, SeaweedFS, Zenko CloudServer, Garage và Apache Ozone.

Các giải pháp thay thế MinIO cho S3 cục bộ trên một máy chủ

Các giải pháp thay thế MinIO cho S3 cục bộ trên một máy chủ

Vào cuối năm 2025, công ty đứng sau MinIO tuyên bố từ bỏ dự án để theo đuổi các mục tiêu thương mại khác. Điều này không chỉ khiến cộng đồng bức xúc mà còn làm đảo lộn hàng loạt demo phần mềm vốn dựa vào MinIO để giả lập S3 cục bộ, cùng nhiều pipeline dùng nó để kiểm tra khả năng tương thích S3.

Bài viết này khảo sát một số phương án thay thế MinIO, tập trung vào câu hỏi đơn giản nhất: đâu là lựa chọn thay thế dễ dàng nhất cho việc giả lập S3 khi xây dựng demo.

Tiêu chí lựa chọn

Để phù hợp với mục đích sử dụng trong demo và phát triển cục bộ, một giải pháp thay thế cần đáp ứng các yêu cầu sau:

  • Có sẵn Docker image: Phần lớn demo được đóng gói dưới dạng Docker Compose, và không ai muốn tự build image trừ khi thật sự cần thiết.
  • Tương thích S3: Đây là lý do tồn tại của MinIO trong các demo — thay thế cho việc ghi lên S3 thật.
  • Miễn phí, ưu tiên giấy phép mã nguồn mở theo định nghĩa của OSI, ví dụ Apache 2.0.
  • Dễ triển khai trên một node duy nhất.
  • Có cộng đồng và/hoặc đơn vị hậu thuẫn rõ ràng, đang hoạt động. Bất kỳ ai cũng có thể viết ra một dự án bỏ hoang, hoặc fork một dự án trong lúc hứng khởi — nhưng MinIO đã trụ được đến tận bây giờ, và không ai muốn lặp lại bài toán này sau sáu tháng nữa.
  • Điểm cộng cho trải nghiệm nhà phát triển tốt, cấu hình mượt, tài liệu đầy đủ.

Sơ đồ minh họa kiến trúc S3 cục bộ với MinIOSơ đồ minh họa kiến trúc S3 cục bộ với MinIO

Phạm vi bài viết thuần túy là trải nghiệm S3 cục bộ trên một node. Nhiều công cụ được nhắc đến có bộ tính năng rộng lớn, trong đó hỗ trợ S3 chỉ là một phần; số khác chỉ cung cấp S3 và không gì hơn. Với mục đích ở đây, cả hai đều ổn, miễn là các tính năng bổ sung không làm tăng độ phức tạp hay dung lượng triển khai.

Những gì bài viết không xem xét: triển khai đa node, lưu trữ phân tán, chi phí hỗ trợ cho môi trường production, khả năng giao diện đồ họa. Nói cách khác, bài viết này không hướng đến những ai dùng MinIO như S3 tự quản lý trong môi trường production.

Điểm chuẩn với MinIO

Điểm khởi đầu là một stack Docker Compose đơn giản: DuckDB đọc và ghi dữ liệu Iceberg lưu trên S3 do MinIO cung cấp. Stack gồm DuckDB cùng Iceberg REST Catalog, MinIO làm lưu trữ S3 cục bộ, và mc — CLI của MinIO — dùng để tự động tạo bucket chứa dữ liệu.

Khi chèn dữ liệu vào DuckDB:

INSERT INTO cat.test.products VALUES
(1, 'Widget', 9.99),
(2, 'Gadget', 19.99),
(3, 'Doohickey', 14.99);

dữ liệu sẽ nằm ở định dạng Iceberg trên S3, cụ thể là trong MinIO. Mỗi mẫu đều có script test.sh để kiểm tra lại quá trình này.

Các phương án thay thế MinIO

Sau đây là các lựa chọn khác nhau, kèm đánh giá mức độ dễ dàng khi thay thế MinIO.

S3Proxy

  • ✅ Docker image (hơn 5 triệu lượt pull)
  • ✅ Giấy phép Apache 2.0
  • ✅ Tương thích S3
  • Mức độ dễ cấu hình: 👍👍

Đây là lựa chọn rất dễ triển khai và có vẻ nhẹ nhàng. Một điểm đáng lưu ý: một trong những dự án mà S3Proxy sử dụng là jclouds đã được chuyển vào Apache Attic (tức là ngừng phát triển) vào giữa năm 2025 — tuy nhiên điều này có lẽ không thành vấn đề nếu chỉ dùng lưu trữ cục bộ.

RustFS

  • ✅ Docker image (hơn 100 nghìn lượt pull)
  • ✅ Giấy phép Apache 2.0
  • ✅ Tương thích S3
  • Mức độ dễ cấu hình: ✅✅
  • Phiên bản thử nghiệm: 1.0.0-alpha.79

Cần lưu ý rằng RustFS gần đây bị phát hiện một lỗ hổng bảo mật khá nghiêm trọng, khiến một số người e ngại khi sử dụng. Website của dự án trông khá bắt mắt nhưng nhiều liên kết lại trỏ về cùng một trang, mang cảm giác "sơn mới" của một dự án non trẻ.

Điều này có thể ít quan trọng hơn với demo, nếu việc chuyển đổi diễn ra dễ dàng. Cũng cần lưu ý dự án hiện chỉ ở bản alpha. RustFS có kèm cả giao diện đồ họa:

Giao diện đồ họa của RustFSGiao diện đồ họa của RustFS

SeaweedFS

  • ✅ Docker image (hơn 5 triệu lượt pull)
  • ✅ Giấy phép Apache 2.0
  • ✅ Tương thích S3
  • Mức độ dễ cấu hình: 👍
  • Phiên bản thử nghiệm: 4.06

Hướng dẫn quickstart của dự án rất hữu ích để có được chức năng S3 tối thiểu hoạt động. Nhìn chung không cần thay đổi nhiều — chỉ là việc đổi Docker image khá đơn giản, nhưng phần xác thực cần file cấu hình riêng (tương tự Garage, được nhúng thẳng vào Docker Compose).

Ngay sau khi bài blog được đăng, dự án phản hồi rằng họ sẽ loại bỏ yêu cầu bổ sung này, khiến việc sử dụng càng dễ dàng hơn. Thay đổi này sẽ có trong bản phát hành hàng tuần.

SeaweedFS đi kèm giao diện cơ bản khá tiện dụng. Website của dự án khá sơ sài, thoạt nhìn dễ nhầm là sản phẩm thương mại vì có mục "pricing" và tiêu đề trang chủ là "SeaweedFS Enterprise" (không thấy liên kết GitHub). Nhưng đây thực sự là dự án mã nguồn mở lâu đời: SeaweedFS đã hỗ trợ S3 từ bản phát hành 0.91 năm 2018.

Sơ đồ kiến trúc SeaweedFSSơ đồ kiến trúc SeaweedFS

Zenko CloudServer

  • ✅ Docker image (bản cũ trên Docker Hub có hơn 5 triệu lượt pull)
  • ✅ Giấy phép Apache 2.0
  • ✅ Tương thích S3
  • Mức độ dễ cấu hình: 👍
  • Phiên bản thử nghiệm: 9.2.8

Trước đây có tên S3 Server, CloudServer là một phần của bộ công cụ Zenko do Scality phát hành. Nó thay thế MinIO khá dễ dàng, nhưng ban đầu hơi rối khi phải phân biệt các tên gọi cloudserver/zenko/scality và xác định chính xác phần mềm cần chạy. Tài liệu cũng có phần kỳ lạ khi liên kết đến một Docker image đã lỗi thời.

Garage

  • ✅ Docker image (hơn 1 triệu lượt pull)
  • ✅ Giấy phép AGPL
  • ✅ Tương thích S3
  • Mức độ dễ cấu hình: 😵
  • Phiên bản thử nghiệm: 1.0.0

Đây là lựa chọn khó nhằn nhất. Ngoài container garage còn cần một container khác để cấu hình ban đầu, cùng file cấu hình TOML được nhúng vào Docker Compose cho gọn. Garage hoạt động được, nhưng không phải là phương án thay thế "cắm là chạy" về mặt thay đổi mã nguồn — nó đòi hỏi cách khởi tạo khác biệt và cũng không hề đơn giản.

Một ví dụ: key ID chỉ định phải là key ID hợp lệ của Garage (bắt đầu bằng GK, theo sau là 12 byte mã hóa hex). Điều này rất tốt cho quy trình production nhưng thừa thãi với demo cục bộ, thậm chí gây cản trở.

Đánh giá này có hoàn toàn công bằng không? Nếu nhìn Garage như một công nghệ mới độc lập thì hoàn toàn không — nhiều công nghệ xuất sắc, đặc biệt là những công nghệ hỗ trợ chạy phân tán, đều có đường cong học tập dốc về cấu hình. Nhưng yêu cầu ở đây chỉ là một phương án thay thế MinIO đơn giản, và Garage không đáp ứng được điều đó.

Apache Ozone

  • ✅ Docker image (hơn 1 triệu lượt pull)
  • ✅ Giấy phép Apache 2.0
  • ✅ Tương thích S3
  • Mức độ dễ cấu hình: 😵
  • Phiên bản thử nghiệm: 2.1.0

Ozone tách ra từ Apache Hadoop vào năm 2020, ban đầu được tạo ra như một phần của dự án HDFS từ năm 2015. Nó hoạt động được như phương án thay thế MinIO, nhưng không hề nhẹ nhàng — cả tác giả lẫn trợ lý AI đều không thể triển khai với ít hơn bốn node. Nó mang đậm phong cách Hadoop và không phải là lựa chọn phù hợp cho mục đích ở đây.

Ceph Object Gateway

Chỉ cần nhìn qua hướng dẫn cài đặt là đủ để từ bỏ phương án này. Ozone đã đủ nặng, và Ceph chắc chắn cũng rất mạnh trong lĩnh vực của nó, nhưng cả hai đều không phải là container nhẹ để lắp vào stack Docker Compose cho demo cục bộ.

Bảng so sánh

TênDễ cấu hìnhGiấy phépHậu thuẫn & quản trịLượt pull DockerSao GitHubCommit đầu tiênSố người đóng góp chính
gaul/s3proxy👍👍Apache 2.0Một cá nhân (Andrew Gaul)5M+2,1k20141
RustFS👍👍Apache 2.0Website bắt mắt nhưng ít thông tin về công ty100k+19,7k2024~4
SeaweedFS👍Apache 2.0Một cá nhân (Chris Lu), có tùy chọn Enterprise5M+29,5k20121
Zenko CloudServer👍Apache 2.0Scality (công ty thương mại)5M+ (bản cũ)1,9k2015~10
Garage😬AGPLTài trợ từ NGI/NLnet1M+2,5k2020~4
Apache OzonelolApache 2.0Apache Software Foundation1M+1,1k201830+

Lượt pull Docker là một tín hiệu hữu ích nhưng không tuyệt đối, vì chỉ một số ít dự án downstream dùng image trong pipeline CI/CD chạy thường xuyên cũng có thể làm sai lệch con số này.

Kết luận

Sau khi thử nghiệm, đây là những lựa chọn thực sự khả thi:

  • SeaweedFS — có.
  • S3Proxy — có.
  • RustFS — có thể, nhưng dự án quá mới và đang ở bản alpha.
  • CloudServer — có, có thể? Thực tế bị e ngại vì là một phần của bộ công cụ lớn, lo phải hiểu thêm các phần khác mới dùng được — có lẽ nỗi lo này không có cơ sở.
  • Garage — không, cấu hình quá phức tạp so với nhu cầu.
  • Apache Ozone — không.

Không có ý chê bai những phương án không được chọn; chúng có thể là những dự án xuất sắc, chỉ là không tập trung vào trường hợp sử dụng chính ở đây là S3 cục bộ đơn node, dễ cấu hình.

Vài lưu ý khi chọn phương án thay thế MinIO

  • Quản trị: Tất cả đều là mã nguồn mở, nhưng chỉ Ozone thuộc về một tổ chức nền tảng (ASF). Các dự án còn lại về lý thuyết đều có thể đổi giấy phép bất cứ lúc nào — đúng như MinIO đã làm.
  • Sức khỏe cộng đồng: "Hệ số xe buýt" ra sao? Một vài dự án có lịch sử lâu dài và lành mạnh nhưng chỉ đến từ một người đóng góp. Nếu họ từ bỏ dự án, liệu có ai trong cộng đồng fork và tiếp tục phát triển tích cực?

Với các nhà phát triển Việt Nam đang xây dựng hệ thống dữ liệu với Iceberg, DuckDB hay các pipeline cần S3 cục bộ, việc chọn một giải pháp nhẹ, dễ thay thế và có cộng đồng ổn định sẽ giúp tiết kiệm đáng kể thời gian bảo trì về sau.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗