2025-03-22 12:49:06 +09:00

5.5 KiB
Raw Permalink Blame History

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コンソール用ポート

mino-top.png


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 LinuxUbuntu 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. 実際の使い方

サンプルコードでは以下を作成しております

  1. バケット作成 : sample-data(readwrite)
  2. ユーザー設定 : 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環境でも素早く構築可能なため、内部ツールやバックアップ用途として導入検討する価値がある。