インフラ・DevOps
MinIO のシングルノードローカルS3代替案
Alternatives to MinIO for single-node local S3 (rmoff.net)
要約
MinIO が開発終了したことを受け、ローカル開発環境で S3 互換ストレージをエミュレートするための代替案が検討されています。記事では、Docker イメージがあり、S3 互換性、無料利用、シンプルなシングルノードデプロイ、アクティブなコミュニティを持つ S3Proxy、RustFS、SeaweedFS、Zenko CloudServer、Garage といった選択肢が評価されています。
全文翻訳
S3MinIOApache Iceberg
2025年末、MinIO の開発元企業は他の商業的関心を追求するため MinIO の開発を断念することを決定しました。多くのユーザーを落胆させただけでなく、MinIO をローカルで S3 ストレージのエミュレーションに依存していた多くのソフトウェアデモや、S3 互換性の検証にそれを使用していたビルドパイプラインにも混乱をもたらしました。
このブログ記事では、MinIO の代替案をいくつか見ていきます。MinIO はデモ構築時に S3 をエミュレートするだけの単純なツール以上のものですが、ここでは最もシンプルな代替手段に焦点を当てます。
実際には、以下の条件を満たす必要があります。
Docker イメージがあること。多くのデモは Docker Compose として提供されており、本当に必要な場合を除き、誰も自分で Docker イメージを構築したがらないでしょう。
S3 互換性があること。これらのデモで MinIO を使用する目的は、実際の S3 への書き込みの代わりとなることです。
無料で利用できること、特にオープンソース(OSI 定義による)ライセンス、例えば Apache 2.0 ライセンスを強く推奨します。
シングルノードデプロイメントで使いやすいこと。
明確でアクティブなコミュニティおよび/または商業的支援者がいること。誰でも放棄されたソフトウェアのスラッジを適当にコーディングしたり、熱狂のあまりプロジェクトをフォークしたりできますが、MinIO はこれまで時間をかけてきました。私たちは半年後にこの作業を繰り返したくありません。
開発者体験(DX)、スムーズな設定、良好なドキュメントなどが優れている場合はボーナスポイントです。
私はシングルノードのローカル S3 体験のみに焦点を当てています。以下で議論するツールのいくつかは、S3 サポートはその機能の 1 つに過ぎませんが、幅広い機能を持っています。他のものは S3 のみを提供し、それだけです。私の目的にはどちらでも構いません。追加機能やサポートがデプロイの複雑さや負荷を増大させない限りは。
私が対象としていないのは、例えばマルチノードデプロイメント、分散ストレージ、本番環境のサポートコスト、GUI 機能などです。つまり、このブログ記事は、本番環境でセルフマネージド S3 として MinIO を使用していた人々を対象としていません。この点に関して有用な情報があれば、コメントで自由に共有してください :)
このプロジェクトのすべてのコードは、このリポジトリで見つけることができます。
MinIO のベースライン 🔗
私の出発点は非常にシンプルな Docker Compose スタックです。
DuckDB は、当初 MinIO によって提供される S3 に保存されている Iceberg データを読み書きするために使用されます。コードはここで見つけることができます。
Docker Compose は非常にわかりやすいです。
DuckDB(当然ながら)、Iceberg REST Catalog、MinIO(ローカル S3 ストレージ)、mc(MinIO CLI で、データを格納するバケットを自動的に作成するために使用されます)。
DuckDB にデータを挿入すると:
INSERT INTO cat.test.products VALUES (1, 'Widget', 9.99), (2, 'Gadget', 19.99), (3, 'Doohickey', 14.99);
それは MinIO の S3 上の Iceberg フォーマットに格納されます。
$ mc ls minio/warehouse/test/products/data/
[2026-01-12 14:35:55 UTC] 693B STANDARD 019bb2a2-8ad5-7159-968c-3693c3578902.parquet
[2026-01-12 14:35:55 UTC] 2.7KiB STANDARD 188ee032-8576-4f46-9834-1cac6d3080a3-m0.avro
[2026-01-12 14:35:55 UTC] 1.6KiB STANDARD snap-2633370813252912097-95ad4df0-3243-4cfb-a736-8f785aac100c.avro
私が構築した各サンプルでは、test.sh を実行して検証できます。
❯ ./test.sh
░▒▓██████████████████████████████████████████████████▓▒░
▒ ▒ ▓ ___ ▓▓▓▓▓ ▓ █ ___( o)>
┌───────────┐
▓▓▓▓▓▓▓ ▒▒▒▒▒▒▒ █ █ \ <_. )
│ DUCKDB │
▓░Local S3 ░▓
▒▒▒▒ █ █ ---
└───────────┘
▓▓ MinIO ▒▒▒ █ ▓
┏━━━━━━━━━━━━━┓
░░░ ▓ ▒ ≋≋≋≋≋≋≋ ┃ ICEBERG ┃ ≋≋≋≋≋≋≋≋
Smoke test ▒ ░
≋≋≋≋≋≋≋ ┗━━━━━━━━━━━━━┛ ≋≋≋≋≋≋≋≋
░ ▒▓██████████████████████████████████████████████████▓▒░
1. Checking MinIO buckets (before)... [2026-01-14 12:48:41 UTC] 0B warehouse/
2. Creating Iceberg table and inserting data... [...]
3. Verifying data in DuckDB... [...]
┌───────┬───────────┬───────────────┐
│ id │ name │ price │
│ int32 │ varchar │ decimal(10,2) │
├───────┼───────────┼───────────────┤
│ 1 │ Widget │ 9.99 │
│ 2 │ Gadget │ 19.99 │
│ 3 │ Doohickey │ 14.99 │
└───────┴───────────┴───────────────┘
4. Checking MinIO bucket contents (after)... [2026-01-14 12:49:07 UTC] 493B STANDARD data/019bbc8d-7d44-7b6b-af71-0ab99d3a0124.parquet
[2026-01-14 12:49:07 UTC] 2.7KiB STANDARD data/c37ab68c-8aaf-44a4-88e6-bc02a01daf5c-m0.avro
[2026-01-14 12:49:07 UTC] 1.6KiB STANDARD data/snap-1988745121468861337-95e77212-9571-423f-bb71-ce8f1b4282f0.avro
[2026-01-14 12:49:07 UTC] 1.0KiB STANDARD metadata/00000-8bf22118-d262-47a9-986c-721d2b99a846.metadata.json
[2026-01-14 12:49:07 UTC] 1.7KiB STANDARD metadata/00001-5cad6fc5-fe54-41bc-8131-4d6f900d20e7.metadata.json
MinIO の代替案 🔗
MinIO のさまざまな代替案と、MinIO をどれだけ簡単に切り替えられるかを見ていきましょう。上記のプロジェクトを取り上げ、代替案を使用するために最小限の変更で実装しようとしました。MinIO S3 クライアントである mc は、MinIO を完全に削除したい場合に置き換えるのが大したことではないため、そのままにしておきました(s3cmd、aws CLI など)。
S3Proxy 🔗
💾 例 Docker Compose
バージョンテスト済み: 3.0.0
✅ Docker イメージ(5M+ ダウンロード)
✅ ライセンス: Apache 2.0
✅ S3 互換性
設定の容易さ: 👍👍
実装は非常に簡単で、軽量なオプションのようです。1 つ気づいたのは、S3Proxy が使用するプロジェクトの 1 つである jclouds が、2025 年半ばに Apache Attic(つまり廃止)に移管されたことです。ただし、ローカルストレージのみを使用している場合はおそらく問題ないでしょう。
RustFS 🔗
💾 例 Docker Compose
バージョンテスト済み: 1.0.0-alpha.79
設定の容易さ: ✅✅ ✅
✅ Docker イメージ(100k+ ダウンロード)
✅ ライセンス: Apache 2.0
✅ S3 互換性
最近 RustFS で非常に悪いセキュリティ脆弱性が見つかったことに注意してください。これが一部の人々が使用を避ける原因となっています。ウェブサイトはかなりスマートに見えますが、いくつかのリンクが同じページに解決され、新しいプロジェクトの「ペンキの匂い」がします :) デモの場合は、簡単に切り替えられるのであれば、これはあまり問題にならないかもしれません。また、プロジェクトは現在 'alpha' リリースのみであることにも注意してください。RustFS には GUI も含まれています。
SeaweedFS 🔗
💾 例 Docker Compose
バージョンテスト済み: 4.06
✅ Docker イメージ(5M+ ダウンロード)
✅ ライセンス: Apache 2.0
✅ S3 互換性
設定の容易さ: 👍
このクイックスタートは、最小限の S3 機能を取得するのに役立ちます。(とはいえ、実装は Claude に依頼しました…)。全体として、変更点はそれほど多くありません。Docker イメージの切り替えはかなり簡単ですが、認証には独自の構成ファイルが必要です(Garage と同様に、Docker Compose にインライン化しました)。
編集: このブログを投稿した直後に、プロジェクトからこの追加要件を削除する予定であるとの返信がありました。これにより、さらに使いやすくなります!どれほど素晴らしいことでしょう :)
これは https://t.co/RQv387bbKb で完了し、週次リリースに含まれます。— SeaweedFS (@SeaweedFS) 2026 年 1 月 14 日
SeaweedFS には独自の基本的な UI が付属しており、便利です。
SeaweedFS のウェブサイトは驚くほどまばらで、一見すると OSS プロジェクトであることを見逃してしまうかもしれません。「価格」オプションがあり、フロントページのタイトルは「SeaweedFS Enterprise」(そして見つけられる GitHub リンクがない)ですが、OSS プロジェクトであり、長年の実績があります。SeaweedFS は 2018 年の 0.91 リリース以来 S3 サポートを提供しています。これらのスライドから SeaweedFS についてさらに学ぶこともできます。これには MinIO との比較チャートも含まれています。
Zenko CloudServer 🔗
💾 例 Docker Compose
バージョンテスト済み: 9.2.8
✅ Docker イメージ(Docker Hub にも 5M+ ダウンロードの古いバージョンがあります)
✅ ライセンス: Apache 2.0
✅ S3 互換性
設定の容易さ: 👍
旧称 S3 Server、CloudServer は Scality が公開する Zenko というツールセットの一部です。MinIO の置き換えとして pretty easily ドロップインできますが、名前のセット(cloudserver/zenko/scality)と実際に実行する必要のあるソフトウェアを区別するのが最初は少し難しいと感じました。ドキュメントが古い Docker イメージへのリンクを貼っているという、少し奇妙な感じもあります。
Garage 🔗
💾 例 Docker Compose
設定の容易さ: 😵
バージョンテスト済み: 1.0.0
✅ Docker イメージ(1M+ ダウンロード)
✅ ライセンス: AGPL
✅ S3 互換性
この件については友人に手伝ってもらう必要がありました。Garage コンテナに加えて、初期設定を行うための別のコンテナと TOML 設定ファイルが必要でした。これはインライン化しました。