MinIO 利用ガイド
概要
MinIO は Amazon S3 互換のオブジェクトストレージサーバー。軽量かつシンプルな構成で、オンプレミスやクラウド上に S3 互換のストレージ環境を構築できる。
高可用構成やセキュリティ機能も備えており、小規模から大規模用途まで幅広く利用できる。本記事では MinIO の導入方法、仕様要件、ユースケース、基本的な利用方法についてまとめる。
1. インストール方法
1.1 Docker を使う場合
docker run -p 9000:9000 -p 9001:9001 \
--name minio \
-e "MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=password123" \
-v /mnt/data:/data \
quay.io/minio/minio server /data --console-address ":9001"
9000
: S3互換API用ポート9001
: Webコンソール用ポート
1.2 Docker Compose を使う場合
version: '3.8'
services:
minio:
image: quay.io/minio/minio
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./data:/data
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: password123
command: server /data --console-address ":9001"
restart: unless-stopped
起動コマンド:
docker compose up -d
1.3 バイナリから直接実行する場合(Linux)
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=password123
minio server /mnt/data --console-address ":9001"
2. 仕様要件
項目 | 推奨構成例 |
---|---|
OS | Linux(Ubuntu 22.04 など) |
CPU | 1コア以上(最低限) |
メモリ | 1GB 以上(2GB 以上推奨) |
ストレージ | SSD または HDD |
通信 | ポート 9000 / 9001(開放) |
- HTTPS を使用する場合は TLS 証明書(Let's Encrypt など)を導入
- リバースプロキシ(Nginx/Caddyなど)経由での公開も可能
3. ユースケース・機能
主なユースケース
- バックアップ保存
- Webアプリの画像・動画ストレージ
- ログデータ保管
- オンプレS3互換ストレージ
主な機能
- S3 互換API対応
- Webベース管理コンソール
- IAM風のユーザー・ポリシー制御
- TLS対応(HTTPS通信)
- サーバーサイド暗号化(AES-256)
- マルチテナント対応(認証連携含む)
- オブジェクトのバージョン管理(設定時)
4. 実際の使い方
サンプルコードでは以下を作成しております
- バケット作成 : sample-data(readwrite)
- ユーザー設定 : appuser:password123
Webコンソールを利用する場合
Webコンソールにアクセス
ブラウザで http://<ホスト>:9001
にアクセス
管理者アカウントでログイン(MINIO_ROOT_USER
/ MINIO_ROOT_PASSWORD
)
バケット作成・ファイルアップロード
- Web UI からバケット作成
- ローカルからファイルをアップロード可能
- バケット単位で「パブリックアクセス許可」も可能
mc
コマンドによる操作
インストール
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
MinIOへの接続
mc alias set local http://localhost:9000 admin password123
操作例
mc mb local/mybucket
mc cp ./example.jpg local/mybucket/
mc ls local/mybucket
各プログラム言語のライブラリから利用する場合
MinIOはAmazon S3互換のAPIを提供しているためS3対応の クライアントライブラリを使用すればPythonやNode.jsから 簡単に接続・操作できます
- Python:
boto3
- Node.js:
@aws-sdk/client-s3
接続時の注意点
- リージョン
- 仮に指定しますが実際は無視される
- バージョニング/ライフサイクル/通知
- 一部のS3機能はMinIOでサポートされていない、または挙動が違う場合あり
- 署名付きURL
- boto3などで生成する署名付きURLも動作しますが、MinIOの設定によって挙動が異なることがある
minioライブラリ(MinIO公式)
MinIO専用に最適化されていて、軽量・シンプルで扱いやすいのが特徴です。 S3互換APIを使ってはいますがAmazon純正のSDK(@aws-sdk/*)と違いMinIOのユースケースに特化してます
インストール方法
npm install minio
インストール方法
付録:Tips
- リバースプロキシ(Nginx)を通して HTTPS 公開することで、ブラウザ互換性やセキュリティを向上できる
- Cloudflare などのCDNと組み合わせれば、簡易的なグローバル配信も可能
- アプリからは AWS SDK を使ってアクセス可能(S3互換)
まとめ
MinIO は S3互換かつ軽量で、開発・検証・軽量サービスにおけるストレージニーズに柔軟に対応できる。Docker環境でも素早く構築可能なため、内部ツールやバックアップ用途として導入検討する価値がある。