# MinIO 利用ガイド ## 概要 [MinIO](https://min.io/) は Amazon S3 互換のオブジェクトストレージサーバー。軽量かつシンプルな構成で、オンプレミスやクラウド上に S3 互換のストレージ環境を構築できる。 高可用構成やセキュリティ機能も備えており、小規模から大規模用途まで幅広く利用できる。本記事では MinIO の導入方法、仕様要件、ユースケース、基本的な利用方法についてまとめる。 --- ## 1. インストール方法 ### 1.1 Docker を使う場合 ```bash 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](/mino-top.png) --- ### 1.2 Docker Compose を使う場合 ```yaml 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 ``` 起動コマンド: ```bash docker compose up -d ``` --- ### 1.3 バイナリから直接実行する場合(Linux) ```bash 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. 実際の使い方 サンプルコードでは以下を作成しております 1. バケット作成 : sample-data(readwrite) 2. ユーザー設定 : appuser:password123 ### Webコンソールを利用する場合 #### Webコンソールにアクセス ブラウザで `http://<ホスト>:9001` にアクセス 管理者アカウントでログイン(`MINIO_ROOT_USER` / `MINIO_ROOT_PASSWORD`) --- #### バケット作成・ファイルアップロード - Web UI からバケット作成 - ローカルからファイルをアップロード可能 - バケット単位で「パブリックアクセス許可」も可能 ### `mc` コマンドによる操作 #### インストール ```bash wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod +x mc sudo mv mc /usr/local/bin/ ``` #### MinIOへの接続 ```bash mc alias set local http://localhost:9000 admin password123 ``` #### 操作例 ```bash 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のユースケースに特化してます #### インストール方法 ```sh npm install minio ``` #### インストール方法 --- ## 付録:Tips - リバースプロキシ(Nginx)を通して HTTPS 公開することで、ブラウザ互換性やセキュリティを向上できる - Cloudflare などのCDNと組み合わせれば、簡易的なグローバル配信も可能 - アプリからは AWS SDK を使ってアクセス可能(S3互換) --- ## まとめ MinIO は S3互換かつ軽量で、開発・検証・軽量サービスにおけるストレージニーズに柔軟に対応できる。Docker環境でも素早く構築可能なため、内部ツールやバックアップ用途として導入検討する価値がある。