MinIO のインストール

メモ書きです。

## 前提条件
- OS: Ubuntu 20.04 LTS
- minio: RELEASE.2024-09-13T20-26-02Z (バージョンという記載ではなかったので一応リリースにあるものを記載)

## 手順
公式の手順ではパッケージからのインストールを推奨していたため、パッケージで実施

1. パッケージをダウンロードし、インストールする

    ```sh:amd64 (Intel や AMD のアーキテクチャ) の場合
    $ wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20240913202602.0.0_amd64.deb -O minio.deb
    $ sudo dpkg -i minio.deb
    ```

    ```sh:arm64 (Arm のアーキテクチャ) の場合
    $ wget https://dl.min.io/server/minio/release/linux-arm64/archive/minio_20240913202602.0.0_arm64.deb -O minio.deb
    $ sudo dpkg -i minio.deb
    ```

2. ユーザーとグループ、ディレクトリの準備をする

    ```sh
    $ groupadd -r minio-user
    $ useradd -M -r -g minio-user minio-user
    $ mkdir <minio のデータ保存先ディレクトリ>
    $ chown minio-user:minio-user <minio のデータ保存先ディレクトリ>
    ```

    :::note warn
    公式ドキュメント上だと systemd の設定ファイルの記載もあるが、こちらはパッケージインストールですでにできているため、作成は不要


3. 環境変数のファイルを作成する

    ```sh: コマンド
    $ sudo vi /etc/default/minio
    ```

    ```sh:/etc/default/minio
    # MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
    # This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
    # Omit to use the default values 'minioadmin:minioadmin'.
    # MinIO recommends setting non-default values as a best practice, regardless of environment
    
    MINIO_ROOT_USER=<管理者ユーザー名 | myminioadmin>
    MINIO_ROOT_PASSWORD=<管理者パスワード | minio-secret-key-change-me>
    
    # MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.
    
    MINIO_VOLUMES="<minio のデータ保存先ディレクトリ>"
    
    # MINIO_OPTS sets any additional commandline options to pass to the MinIO server.
    # For example, `--console-address :9001` sets the MinIO Console listen port
    MINIO_OPTS="--console-address :9001"
    ```

4. MinIO のサービスを起動する

    ```sh
    $ sudo systemctl start minio.service
    ```
    
5. MinIO のサービスが立ち上がっているか確認する

    ```sh
    $ sudo systemctl status minio.service
    ● minio.service - MinIO
         Loaded: loaded (/lib/systemd/system/minio.service; disabled; vendor preset>
         Active: active (running) since Tue 2024-09-24 01:44:20 JST; 5s ago
           Docs: https://docs.min.io
       Main PID: 1242 (minio)
          Tasks: 9
         CGroup: /system.slice/minio.service
                 └─1242 /usr/local/bin/minio server --console-address :9001 /var/li>
    
    Sep 24 01:44:20 minio systemd[1]: Starting MinIO...
    Sep 24 01:44:20 minio systemd[1]: Started MinIO.
    Sep 24 01:44:20 minio minio[1242]: MinIO Object Storage Server
    Sep 24 01:44:20 minio minio[1242]: Copyright: 2015-2024 MinIO, Inc.
    Sep 24 01:44:20 minio minio[1242]: License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
    Sep 24 01:44:20 minio minio[1242]: Version: RELEASE.2024-09-13T20-26-02Z (go1.22.7 linux/arm64)
    ...
    
    $ journalctl -f -u minio.service
    -- Logs begin at Sun 2024-09-22 22:08:51 JST. --
    Sep 24 01:44:20 minio systemd[1]: /lib/systemd/system/minio.service:15: Unknown key name 'ProtectProc' in section 'Service', ignoring.
    Sep 24 01:44:20 minio systemd[1]: Starting MinIO...
    Sep 24 01:44:20 minio systemd[1]: Started MinIO.
    Sep 24 01:44:20 minio minio[1242]: MinIO Object Storage Server
    Sep 24 01:44:20 minio minio[1242]: Copyright: 2015-2024 MinIO, Inc.
    Sep 24 01:44:20 minio minio[1242]: License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
    Sep 24 01:44:20 minio minio[1242]: Version: RELEASE.2024-09-13T20-26-02Z (go1.22.7 linux/arm64)
    ...
    ```

ブラウザからアクセスすると次のような画面が表示される。
![MinIOログイン画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34297/a2d439f5-f364-6465-3a59-a977d749e781.png)

そこから、環境変数ファイル内で指定したユーザー名とパスワードを使用してログインすると、次の画面に遷移する。
![MinIO 管理画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/34297/51b2c636-4566-a5ab-1b78-a2f32e583ab7.png)

## 注意事項
:::note alert
単に検証目的で手元にインストールしただけなので、利用する場合は別途セキュリティ対策など設定をする必要がある。
:::

## 参考
- [MinIO Object Storage for Linux](https://min.io/docs/minio/linux/index.html)
- [Deploy MinIO: Single-Node Single-Drive](https://min.io/docs/minio/linux/operations/install-deploy-manage/deploy-minio-single-node-single-drive.html)