🍗
MinIOをローカル環境に展開する
MinIOとは
S3互換のあるオブジェクトストレージ。
Goで出来ててバイナリを実行するだけで即開始出来る。
読み方
「ミニオ」ではなく「ミンアイオー」らしい。。
導入
AL2023に展開する想定。
公式にコマンド書いてるがやや大胆過ぎるので実行ファイルは以下に移動する。
wget https://dl.min.io/server/minio/release/linux-amd64/minio
mv ./minio /usr/local/bin
chmod +x /usr/local/bin/minio
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password minio server /mnt/data --console-address ":9001"
コンソールアドレスに9001番を指定しているのでhttp://yourdomain.jp:9001
でコンソールへ。
これだとSSLが当たってなかったりWebアプリレイヤーで使えなかったりするので以下へ。
より実践的導入
※マウントパスのチューニングは引き続き調査中
minioユーザを作成
システムアカウントとしてminio-userを作る。
useradd -r minio-user -s /sbin/nologin
設定ファイルを定義する
/etc/default/minio
# ボリュームパス
MINIO_VOLUMES="/home/minio-user/data/"
# 起動時オプション
MINIO_OPTS="--address :9000 --console-address :9001"
# ルートユーザ
MINIO_ROOT_USER="mystorage-root"
# ルートパスワード
MINIO_ROOT_PASSWORD="mystorage-passwd"
# エンドポイントURL
MINIO_SERVER_URL="https://kusamochi-magurodon.jp:9000"
ユニットファイルの作成
実行時に設定ファイルを適用しつつ起動する形になる。
/etc/systemd/system/minio.service
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
WorkingDirectory=/usr/local
User=minio-user
Group=minio-user
ProtectProc=invisible
EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576
# Specifies the maximum number of threads this process can create
TasksMax=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
# Built for ${project.name}-${project.version} (${project.name})
SSLを適用する
既に組み込み先のドメインでLetEncryptを適用済の場合は
ワーキングディレクトリに秘密鍵と公開鍵をコピーするだけでOK
導入の仕方は本題とズレるのでこちらで (Zennでまとめててよかった...)
謎だったのが置き場所。サービス起動オプションに
--certs-dir or -S
とあったので指定してみたが、何故かここに置いても適用されなかった。
正解はマウント先の直下に出来上がる .minio
ディレクトリっぽかった。
あとファイル名も固定??分からん。
privkey.pemとfullchain.pemをそれぞれ以下の形でコピー
cp -rp privkey.pem /path/to/.minio/certs/private.key
cp -rp fullchain.pem /path/to/.minio/certs/public.crt
サービスを再起動
systemctl restart minio
おわり。
Discussion