MinIOってなに?
一言で言ってしまうと、Googleドライブの簡易版のようなオンラインストレージを自前で構築できてしまうツールです。左がログイン画面、右がファイル一覧画面です。
とりあえずサービスを起動する
MinIOの公式サイトからMinIOを入手する
まずは公式サイトからMinIOを入手します。
ここから動かしたい環境を選択できます。
今回はAWSのEC2で外部公開ファイルストレージとしてサービスを立ち上げてみるので、Linuxを選択しました。
Dockerにしようか迷ったんですが、EC2の無料枠マシンt2.microで試すので、Docker本体入れると重くなりそうなのでダイレクトに入れます。
LinuxサーバにMinIOをインストール
MinIO専用ユーザを作成
名前はなんでもよいです。私の場合はわかりやすく、minio にしました。
$ sudo adduser minio
Adding user `minio' ...
Adding new group `minio' (1001) ...
Adding new user `minio' (1001) with group `minio' ...
Creating home directory `/home/minio' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for minio
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
minioユーザを作成したら、minioユーザにスイッチしておきましょう。
$ su - minio
公式サイトからのダウンロード
さきほどの公式サイトにコマンドが掲載されているので、それを実行するだけです。
minio:~$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
--2021-03-06 16:46:27-- https://dl.min.io/server/minio/release/linux-amd64/minio
Resolving dl.min.io (dl.min.io)... 178.128.69.202
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 50556928 (48M) [application/octet-stream]
Saving to: ‘minio’
minio 100%[============================>] 48.21M 4.36MB/s in 18s
2021-03-06 16:46:45 (2.72 MB/s) - ‘minio’ saved [50556928/50556928]
minio:~$
ダウンロードしたファイルに実行権限を付与します。
chmod +x minio
minio:~$ ls -l
total 49372
-rw-rw-r-- 1 minio minio 50556928 Mar 4 09:57 minio
minio@ip-172-31-0-205:~$ chmod +x minio
minio@ip-172-31-0-205:~$
minio@ip-172-31-0-205:~$ ls -l
total 49372
-rwxrwxr-x 1 minio minio 50556928 Mar 4 09:57 minio
minio:~$
MinIO起動
起動方法も簡単です。次のコマンドを実行すればOKです。
minio:~$ MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=minio123 ./minio server ./data01
- MINIO_ROOT_USER には、ブラウザでログインする時のアクセスキーを指定します
- MINIO_ROOT_PASSWORD には、ブラウザでログインする時のシークレットキーを指定します
一番最後には、実際にファイルが保存される場所を指定します。minioユーザのホームディレクトリ直下のdata01にしました。
こんな感じで表示されれば、起動完了です。
はい、これでMinIO起動完了です!!
WebブラウザでMinIOにアクセス
ログイン画面
MinIOが起動したら、ブラウザでアクセスしてみましょう。
URLは、MinIOを起動したサーバのホスト名、またはIPアドレスの9000番ポートです。
ローカルのパソコンで起動した場合は、http://localhost:9000 で表示できます。
今回、私はAWSのEC2上に作ったので、ちょっと長いURLになってしまいました。
さて、このようにログイン画面が表示されれば無事に接続完了です。
アクセスキーとシークレットキーは、MinIO起動時に指定したものです。
トップ画面
よくあるオンラインストレージっぽい画面が表示されました。
オンラインストレージ(GoogleドライブやOneDrive)を使ったことのある方なら直感的に使えると思います。ただ、MinIOはAWSのS3と互換性を保つため、少し制限があります。
次の章で説明します。
MinIOの使い方
右下の+ボタン
ファイルのアップロードとバケットの作成ができます。
このバケットというのが通常のオンラインストレージとちょっと違います。
オンライストレージで例えると最上位のフォルダと同じなのですが、MinIOではバケットと呼びます。AWSのS3のバケットと互換性を保つため、最上位フォルダをバケットとし、S3の命名規則と同じにしています。
ファイル操作
フォルダ作成
バケット配下は、自由にフォルダを作成できます。このマークをクリックすると新しいフォルダ名を入力できます。
ファイルアップロード
ドラックアンドドロップでファイルを投入するだけです。複数ファイルの一括アップロードもでき、アップロード状況も表示されます。
ファイル一覧
ファイル一覧画面もよくあるオンラインストレージと同じ感じです。
但し、S3のバケットと同じ操作感覚になっており、一度アップロードしたファイルを別のフォルダへの移動はできませんので、アップロードする時は注意が必要です。
ファイルメニュー
- ファイル共有(公開リンク作成)
- プレビュー
- ダウンロード
- 削除
①のファイル共有は細かい設定ができたので、このあと紹介します。
②プレビューはこのような感じでポップアップで画像ファイルなどは表示ができます。
ファイル共有
ファイル共有機能が意外と高性能だったのは予想外でした。公開期限付きのファイル公開ができます。
試しに5分間に設定して公開リンクを作成してみます。公開したい時間をセットしてCopy Linkボタンをクリックすると、公開用URLがクリップボードにコピーされます。
MinIOにログインしていない状態にするため、Chromeのシークレットモードに切り替えてからURLにアクセスしてみます。おお、写真ファイルが共有されています。
そして、5分後にブラウザのリロードボタンを押すと、アクセス権限無しになりました。この辺のレスポンスデータもS3と同じです。
もちろん、外部からアクセスする専用のURLが無効になっただけですので、元のファイル自体は残っています。試しに同じファイルを再度公開すると、URLはこのようになりました。緑の部分のパラメータで制御しているようです。
◆最初に公開した時のURL
http://ec2-54-238-164-118.ap-northeast-1.compute.amazonaws.com:9000/my-data/%E5%86%99%E7%9C%9F/%E9%89%84%E5%A1%94/P1020625.JPG?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20210306%2F%2Fs3%2Faws4_request&X-Amz-Date=20210306T092940Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&X-Amz-Signature=26fa10f1467787cb69417f61aeb5e08f69e233ff39da3d63b06f96926247e017
◆同じファイルを再度公開した時のURL
http://ec2-54-238-164-118.ap-northeast-1.compute.amazonaws.com:9000/my-data/%E5%86%99%E7%9C%9F/%E9%89%84%E5%A1%94/P1020625.JPG?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20210306%2F%2Fs3%2Faws4_request&X-Amz-Date=20210306T093550Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&X-Amz-Signature=ebfeaae26401e8759e0ec9fe977ad9a40d477aef6a0752276be6b3868e2944d6
メディアファイルはどうなるのでしょうか。MP3ファイルで試してみます。本当はMP4で試したかったんですが回線が細すぎるのかアップロードが遅すぎたのでMP3にしました。
MP3ファイルを共有したら、ブラウザ上にコントローラーが表示され、普通に再生されました。
そして、公開期間が終了すると、ダウンロードできなくなります。ちなみに公開期間内なら右の︙ボタンからダウンロードできます。
サーバー側はどうなってる?
このような形で、そのままLinuxサーバ上にディレクトリとフォルダで保管されています。データベースは使っていないようなので、バックアップもここをそのままTARボールで固めておけば良さそうです。
minio:~$ ls -lR
.:
total 49376
drwxrwxr-x 4 minio minio 4096 Mar 6 18:08 data01
-rwxrwxr-x 1 minio minio 50556928 Mar 4 09:57 minio
./data01:
total 4
drwxrwxr-x 5 minio minio 4096 Mar 6 18:25 my-data
./data01/my-data:
total 12
drwxrwxr-x 3 minio minio 4096 Mar 6 18:13 mp3
drwxrwxr-x 4 minio minio 4096 Mar 6 20:01 写真
drwxrwxr-x 2 minio minio 4096 Mar 6 18:22 画像ファイル
./data01/my-data/mp3:
total 4
drwxrwxr-x 2 minio minio 4096 Mar 6 18:40 YOASOBI
./data01/my-data/mp3/YOASOBI:
total 22112
-rw-rw-r-- 1 minio minio 6340209 Mar 6 18:13 'YOASOBI - ハルジオン.mp3'
-rw-rw-r-- 1 minio minio 8356444 Mar 6 18:40 'YOASOBI - 夜に駆ける.mp3'
-rw-rw-r-- 1 minio minio 7940147 Mar 6 18:39 'YOASOBI - 群青.mp3'
./data01/my-data/写真:
total 8
drwxrwxr-x 2 minio minio 4096 Mar 6 20:02 花
drwxrwxr-x 3 minio minio 4096 Mar 6 18:45 鉄塔
./data01/my-data/写真/花:
total 484
-rw-rw-r-- 1 minio minio 263283 Mar 6 20:01 P0030473.JPG
-rw-rw-r-- 1 minio minio 228161 Mar 6 20:02 P0030486.JPG
./data01/my-data/写真/鉄塔:
total 404
drwxrwxr-x 2 minio minio 4096 Mar 6 18:45 20210301-撮影分
-rw-rw-r-- 1 minio minio 225528 Mar 6 18:25 P1020625.JPG
-rw-rw-r-- 1 minio minio 172684 Mar 6 18:25 P1020627.JPG
-rw-rw-r-- 1 minio minio 68 Mar 6 18:40 鉄塔写真メモ.txt
./data01/my-data/写真/鉄塔/20210301-撮影分:
total 160
-rw-rw-r-- 1 minio minio 161749 Mar 6 18:45 P1020713.JPG
./data01/my-data/画像ファイル:
total 376
-rw-rw-r-- 1 minio minio 131812 Mar 6 18:22 1500x500.jpg
-rw-rw-r-- 1 minio minio 11413 Mar 6 18:22 2Y1x2Lvt_400x400.jpg
-rw-rw-r-- 1 minio minio 154250 Mar 6 18:22 battan-header-summer.jfif
-rw-rw-r-- 1 minio minio 37661 Mar 6 18:22 battan.png
-rw-rw-r-- 1 minio minio 38377 Mar 6 18:22 battan_techblog_logo.png
minio:~$
まとめ
いかがでしたか?
簡単にファイル送受信サービスが立ち上げることができました。
オンラインストレージとしての利便性はちょっと微妙なところはありましたが、AWSのS3互換を重視しているのでやむ無しといったところでしょうか。開発者視点だととても嬉しいツールです。
相手にメールに添付して送れないようなちょっと大きなファイルを送付したい、またはお互いやりとりしたいといったシーンで、さくっとクラウド上にMinIOを立ち上げてやりとりする場を作る、という使い方もできるので便利です。
個人的には、次のあたりが気になっています。
- ポートが9000番なのが微妙。80番で動かしてポート番号非表示にしたい
- コマンド起動しているので、自動起動できるようにしたい
- ファイルを共有したい人がたくさんいる場合にどう設定する?
- 保護されていない通信となってしまうので、ビジネスでは使いづらい
次回、設定をいろいろ変更して、この辺解決したいと思います。ではまた。
コメント