目標
RustFSをWLS2の環境下でdocker composeにて起動し、HTTP(S3互換API)で疎通確認した後、WindowsからPython(boto3)でファイルをアップロードして確認するまでの手順をまとめたものです。
背景
MinIOのDockerイメージが提供終了したため、その代替としてRustFSが適していると思い、触ってみた感じです。
実施環境
- 物理マシン
- Windows 11
- 仮想基盤
- WSL2(Ubuntu)
- 実行環境
- Docker Engine
- Python実行環境
- WindowsPCのPython3.10
エンドポイント
- S3互換API : http://<RUSTFS_HOST>:9000
- コンソール : http://<RUSTFS_HOST>:9001
同一PCでアクセスする場合は''を'localhost'に読み替える
注意事項
- RustFSは正式なGAリリースでないのでalpha版が提供されています。本番環境での使用は推奨しません(2026年2月時点)
- ユーザーやパスワードはデフォルトの値を入れてますが、使用時は変更してください
1. RUSTFSホスト(Linux)準備
1.1 永続データディレクトリ作成(権限対策)
RUSTFSコンテナは 非rootユーザー (uid = 10001)で実行される。ホストディレクトリをマウントする場合、ディレクトリの所有者に10001が設定されていることを確認する。
参照:https://www.zdoc.app/ja/rustfs/rustfs
mkdir -p ./rustfs-data
sudo chown -R 10001:10001 ./rustfs-data
1.2 docker-compose.yml作成
RustFSのイメージは1.0.0-alpha.82で作成を想定
services:
rustfs:
image: rustfs/rustfs:1.0.0-alpha.82 # ←実在するタグに固定
container_name: rustfs
ports:
- "9000:9000" # S3互換API
- "9001:9001" # Console
environment:
RUSTFS_ACCESS_KEY: rustfsadmin
RUSTFS_SECRET_KEY: rustfsadmin
RUSTFS_CONSOLE_ENABLE: "true"
RUSTFS_ADDRESS: ":9000"
volumes:
- ./rustfs-data:/data
command: ["/data"]
restart: unless-stopped
1.3 起動
docker compose up -d
docker compose ps
docker logs -f rustfs
1.4 HTTPにアクセス
ブラウザで以下にアクセス
・ http://<RUSTFS_HOST>:9001
2. Pythonでファイルアップロードテスト
以下の作業ではPython3.10環境でテストをしています。※vnev等の仮想環境での実施を推奨
2.1 boto3 ライブラリのインストール
pip install boto3
2.2 アップロードスクリプトを作成
※エンドポイントはコンソール用の9001ではなく9000のポートを使用
import boto3
from botocore.client import Config
from botocore.exceptions import ClientError
ENDPOINT = "http://localhost:9000" # ←必要なら http://<RUSTFS_HOST>:9000 に変更
ACCESS_KEY = "rustfsadmin"
SECRET_KEY = "rustfsadmin"
REGION = "us-east-1"
BUCKET = "mybucket"
LOCAL_FILE = r"C:\path\to\sample.txt"
OBJECT_KEY = "uploads/sample.txt" # RustFS上のキー(パス相当)
s3 = boto3.resource(
"s3",
endpoint_url=ENDPOINT,
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
region_name=REGION,
config=Config(signature_version="s3v4"),
)
# バケットが無ければ作成
try:
s3.meta.client.head_bucket(Bucket=BUCKET)
except ClientError:
# us-east-1 の場合は CreateBucketConfiguration なしが無難
s3.create_bucket(Bucket=BUCKET)
# アップロード
s3.Bucket(BUCKET).upload_file(LOCAL_FILE, OBJECT_KEY)
print(f"Uploaded: s3://{BUCKET}/{OBJECT_KEY}")
# 確認(サイズ・更新日時)
obj = s3.Object(BUCKET, OBJECT_KEY)
print(obj.content_length, obj.last_modified)
2.3 スクリプトの実行
python <ファイル名>
実行結果例
Uploaded: s3://mybucket/uploads/sample.txt
15 2026-02-22 05:17:38+00:00
停止・削除について
docker compose down
rm -rf ./rustfs-data
おわりに(感想)
今回RustFSを触ってみて、基本的なS3互換の操作感やレスポンスの速さにストレスはなく、ローカル開発環境におけるMinIOの代替として非常に使い勝手が良いと感じました。
調査の過程でいくつか深刻な脆弱性(認証バイパス等)の報告も見当たりましたが、コミュニティによる修正スピードは非常に早く、着実に対策が進んでいます。
現時点ではあくまで検証・開発用という位置付けですが、Rust製のモダンなストレージとして、将来のGA(正式リリース)版を期待して今からキャッチアップしておく価値は十分にあると思います。

