ジョブカン事業部のアドベントカレンダーも22日目です!
1. はじめに
2025 年 10 月、オブジェクトストレージとして広く使われてきた MinIO は、コミュニティ版について「source-only distribution(ソースコード配布のみ)」へと方針を変え、少なくとも Docker Hub / Quay.io で公式イメージが更新されない状況になり、大きなニュースになりました。
私はこれまで AWS S3 を主に使用しており、このニュースを機にローカル環境での検証や開発用途で使える S3 互換ストレージについて興味を持ち、一度実際に使って体験してみたいなというのが本記事の動機になります。
S3 互換ストレージの候補としては、例えば次のようなプロダクトがよく挙げられています。
- Garage – S3 互換の分散オブジェクトストレージ(セルフホスト向け)
- SeaweedFS – 分散ファイルシステム兼オブジェクトストレージ(S3 API 対応)
- RustFS – Rust 製 S3 互換オブジェクトストレージ(Apache-2.0 ライセンス)
この中で Rust 製かつ Apache 2.0 ライセンスである RustFS に着目し、実際に動かしてみることにしました。
2. 本記事のゴール
本記事のゴールは、あくまで RustFS の雰囲気を知ることです。
RustFS をローカルで起動して、コンソールを一通り触ることで、
「試してみる価値がありそうか」をざっくり判断できる状態になること。
逆に言うと、本記事では次のような内容は扱いません。
- RustFS の詳細なアーキテクチャ解説
- ベンチマークやチューニング方法
- バケット構成や権限設計のベストプラクティス
- 本番運用時の HA 構成や監視設計
3. RustFS とは?
まずは公式情報ベースで RustFS の輪郭を抑えていきます。
- Rust 製の 分散オブジェクトストレージ
- S3 互換 API を提供(MinIO や Ceph などとの共存・移行をサポート)
- Kubernetes / オンプレ環境などでの利用を想定
- Apache 2.0 ライセンスで OSS として提供
- 小さなオブジェクト(4KB)で MinIO より高スループットとうたうベンチマーク
本記事では、分散クラスタ構成や Kubernetes 連携の細かい話は脇に置いて、
「ひとまず 1 ノード構成を Docker で立てて触ってみる」ことにフォーカスします。
2025/12/15 現時点では、RustFS はアルファ版として公開されており、本番利用は非推奨と公式 Docs でも言及されています。
4. Docker Compose で RustFS を立ち上げる
4-1. シンプルな docker-compose.yml 例
ローカル開発向けの最小構成を整理すると次のようになります。
services:
rustfs:
image: rustfs/rustfs:latest
container_name: rustfs
ports:
- "9000:9000" # S3 API
- "9001:9001" # Webコンソール
environment:
RUSTFS_VOLUMES: "/data" # オブジェクトデータの保存先ディレクトリ
RUSTFS_ADDRESS: ":9000"
RUSTFS_CONSOLE_ADDRESS: ":9001"
RUSTFS_CONSOLE_ENABLE: "true" # Web コンソールを有効化
RUSTFS_ACCESS_KEY: "rustfsadmin" # 管理者ログイン & API 用の初期キー
RUSTFS_SECRET_KEY: "rustfsadmin" # 管理者ログイン & API 用の初期キー
volumes:
- ./data:/data
restart: unless-stopped
これはローカル検証向けの値です。検証環境でも ACCESS_KEY / SECRET_KEY はランダム値へ変更し、.env や Secret 管理ツールで安全に扱うなどの対応が必要です。
起動:
docker compose up -d rustfs
5. RustFS コンソールを一周してみる
それでは実際に、Webコンソール上で操作して挙動を見てみたいと思います。
5-1. ログイン画面
RUSTFS_CONSOLE_ADDRESSで設定した9001ポートにアクセスすると、下記のログイン画面が表示されます。
ここで、
- Username:
RUSTFS_ACCESS_KEYに設定した値(例:rustfsadmin) - Password:
RUSTFS_SECRET_KEYに設定した値(例:rustfsadmin)
このアカウントは 管理者用(root 相当) のため、
実際の運用を意識する場合は、後述の Access Keys や Users / Policies でアプリ用アカウントを分けておくのがおすすめです。
5-2. Buckets(バケット一覧)画面
ログイン直後に表示されるのが Buckets 一覧画面 です。

新たにBucketを作りたい場合はCreate Bucketで新規作成し、不要なBucketを削除したい場合は、対象BucketのActionsに表示されているDeleteから削除が可能です。
実際の操作感は下記のようになります。

5-3. バケット詳細画面(オブジェクト一覧)
Buckets 画面で mybucket などのバケット名をクリックすると、
そのバケット配下のオブジェクトを管理する画面に遷移します。
右上の Upload File / Upload Folder から、ブラウザ経由で直接アップロードが可能です。

またアップロードしたオブジェクト名をクリックすることで詳細を確認できます。
5-4. Access Keys 画面
RustFS は、管理者ログインとは別に S3 API 用の Access Key / Secret Key を複数発行できます。
ここで発行したキーを、AWS CLI や各種 SDK、mc(MinIO Client)から利用することができます。
左メニューの Access Keys を開くと、次のような画面が表示されます。

実際のAccess Key追加の操作感は下記になります。

(モザイク箇所には SecretKey が表示されています。)
重要
Secret Key は「この画面で一度きり」しか表示されないパターンが一般的です。
必ずパスワードマネージャー等に保存しておきましょう。
5-5. Policies 画面
Policies 画面では、「どの操作を許可するか」を定義するポリシーを管理します。
ポリシーは JSON 形式で記述されており、
- どのバケットに対して
- どの操作(List / Get / Put など)を許可するか
といった内容をまとめて定義できます。
作成した Policy は、Users 画面からユーザーに割り当てる形で利用できます。
5-6. Users 画面
Users 画面では、RustFS 上で利用する「ユーザー」を管理します。
Users 一覧では、作成済みのユーザーと、
それぞれにどの Policy が割り当てられているかを確認できます。
6. AWS CLI から RustFS に接続してみる
発行したキーは、そのまま S3 互換クライアント から利用できます。
MinIO Client (mc)からでも可能ですが、一例としてAWS CLIによる接続例を示します。
aws configure --profile rustfs
# AWS Access Key ID [None]: <RustFSのAccessKey>
# AWS Secret Access Key [None]: <RustFSのSecretKey>
# Default region name [None]: us-east-1 # お好みで
# Default output format [None]: json # お好みで
# バケット一覧
aws --profile rustfs \
--endpoint-url http://localhost:9000 \
s3 ls
# ファイルアップロード
aws --profile rustfs \
--endpoint-url http://localhost:9000 \
s3 cp ./sample.txt s3://mybucket/sample.txt
# ダウンロード
aws --profile rustfs \
--endpoint-url http://localhost:9000 \
s3 cp s3://mybucket/sample.txt ./downloaded.txt
RustFS コンソールの「バケット詳細画面」を再読み込みすると、
先ほど CLI からアップロードした sample.txt が表示されるはずです。
7. まとめ
本記事では、RustFS をローカルで起動し、コンソールと AWS CLI を一通り触るところまでをざっくり見てきました。
どうやら RustFS は “S3 互換” を掲げつつも、公式 README では Lifecycle Management / Distributed Mode / OPA が テスト段階、Bucket Replication が完全ではないようです。
また、S3 互換の挙動についても、実運用で影響が出やすい差分・未実装だという報告もされています。
そのため、もし仮に自身の携わるプロジェクトや個人開発での活用を考える場合は、現時点では本番環境での運用を避けるか、要件を満たす挙動をしているかの確認が必要かと思います。
本記事はあくまで「ローカルで触ってみて、試す価値があるかを判断する」ための入り口として整理しました。
気になった方は、是非手元の構成でお試ししてみましょう。
参考
MinIO community is source-only distribution(GitHub Issue)
https://github.com/minio/minio/issues/21647
RustFS README
https://github.com/rustfs/rustfs
RustFS Releases
https://github.com/rustfs/rustfs/releases
お知らせ
株式会社DONUTSでは、新卒・中途・インターンを問わず一緒に働くメンバーを募集しています。
もし弊社に興味を持っていただけた方はぜひ応募をご検討ください!
全国各地の開発拠点でお待ちしています!
私の所属するジョブカン事業部でもお待ちしています!



