MinioのConsoleが削除されたので、互換Consoleをインストール

投稿者: | 7月 28, 2025

家の目の前は、幹線道路が走っているのだが、子供の頃は横断歩道があるだけで、信号がなかった。近くには、小中学校があり、昔から通学路だった。今はもうその幹線道路に横断歩道だけしかないところは存在しないと思う。ところがある日突然、信号が付いたのでびっくりしたのを記憶している。しかし、近所のご老人と当時のことを話すのだが、こんな幹線道路になんで信号がついていなかったんだろうかと。当時からバスやトラックがビュンビュン走っていたのだが。バスを乗るために何度か信号のない横断歩道を渡ったことがある。

 

閑話休題

 

ある日突然、MinioのWeb UIが無くなった。正確には、Web UIというのは言い過ぎで、WebからはConsoleがなくなり、Object Browserしか使えなくなった。昔のminioは、Object Browserしかなく、Consoleは当時は別モジュールだった。ある日、minioにConsoleが同梱されてモジュールをロードする必要がなくなった。実は、昔の状態に戻っただけ。通常の利用ならObject Browserだけで事足りる。

Consoleは、見た目がかっこいいだけかもしれない。また、Consoleがなくなっただけで、別にオブジェクトストレージの機能が制限されたわけではない。Consoleと同等の機能は、mcコマンドで普通に使えるので「あんなの飾りです。偉い人にはそれがわからんのですよ」なので問題はないのだが。

ただし、Prometheus連携している人にはちょっと問題。Minioのパフォーマンスグラフが出てこない。そのためだけにgrafanaを立てるのもめんどくさい。Minioのバージョンを2025-04-22T22-12-26Zで止めておけば問題はないのだが、バグフィックスやセキュリティアップデートも適用できず。さらにいつまで使えるかわからない。どうにかしなければ。

 

minioのWeb UIをフォークしたものをいくつか発見。

https://github.com/OpenMaxIO/openmaxio-object-browser

バイナリを作れば使えそう。自作しないとコンテナでは使えない。

https://github.com/georgmangold/console

これはバイナリもあるし、コンテナイメージもあった。

 

https://github.com/georgmangold/consoleのバイナリを使うのが簡単。とはいえ、コマンドラインで立てるのは手間なので、dockerで立てる。

 

既にDocker composeでminioをたてている場合

Docker composeのcompose.ymlファイルに以下を追加すれば使える。自分は、let’s Encryptの証明書を使っているのでTLSを有効にしてある。TLSを使っていない人は、その設定を削除。

  console:
  image: ghcr.io/georgmangold/console:latest
  container_name: minio-console
  restart: always
  ports:
    - "9002:9090"
    - "9003:9443"
  environment:
    - CONSOLE_MINIO_SERVER=https://minio:9000
    - CONSOLE_PORT=9090
    - CONSOLE_TLS_PORT=9443
    - CONSOLE_PROMETHEUS_URL=http://prometheus:9090
  volumes:
    - <Cert Path>/fullchain.pem:/.console/certs/public.crt:ro
      - <Cert Path>/privkey.pem:/.console/certs/private.key:ro

デフォルトのhttpは、ポート9090。httpsは、9443。ポートは変えた。

過去バージョンでConsoleにアクセスできていて、docker composeでたてている人は、minioのイメージバージョンを最新にして、上記を追加すればhttps://<FQDN>:9003でConsoleにアクセスできるようになる。

 

スクラッチでminioを構築する場合

自分の環境はたてっぱなしなので、間違いがあるかもしれないが。mcコマンドはダウンロードしてパスが通っている前提(設定は不要)

DNSでminio.example.corp XXX.XXX.XXX.XXXで解決されていて、minio.example.corp の証明書があることを想定

(今はタダで証明書がたてられる時代なので、もういい加減オレオレ証明書は卒業したほうがいいと思う。よって自己証明書で使う場合は省略。)

 

<Path>に存在するべきファイル

 compose.yml

 prometheus.yml

 id_ed25519              #sftp用のキー ssh-keygenで作っておく。

 

 prometheus/data/     #無ければ作ってくれるはず。

 config/CAs/            #CAファイルの置き場だが、Let’s Encryptを使っているのであれば空でいいはず。

 data/                         #minioのデータ保存先

 

<Cert Path>

証明書ファイルのパス(Lets’encryptの証明書の場合)

 例 /etc/letsencrypt/live/minio.example.corp/

 

compose.yml

TLSとSFTPを有効にしてある。FQDNの情報は使わないようになっているので、どんなFQDNでも動作するはず。また、Minioのバージョンが2025-04-22T22-12-26Zではなく、2025-07-23T15-54-02Z。記載時最新になっていることに注目!

services:
prometheus:
  image: prom/prometheus
  restart: always
  command: --config.file=/etc/prometheus/prometheus.yml
  ports:
    - "9090:9090"
  volumes:
    - <Path>/prometheus:/prometheus
      - <Path>/prometheus.yml:/etc/prometheus/prometheus.yml

minio:
  image: minio/minio:RELEASE.2025-07-23T15-54-02Z
  container_name: minio
  restart: always
  environment:
    - MINIO_ROOT_USER=miniohogehogehoge
    - MINIO_ROOT_PASSWORD=miniohogehogehoge
    - MINIO_API_ROOT_ACCESS=on
    - MINIO_PROMETHEUS_AUTH_TYPE=public
    - MINIO_PROMETHEUS_URL=http://prometheus:9090
    - MINIO_COMPRESSION_ENABLE=on
    - MINIO_COMPRESSION_EXTENSIONS=.txt,.log,.csv,.json,.tar,.xml,.bin
    - MINIO_BROWSER=on
  command: server /data --sftp="address=:8022" --sftp="ssh-private-key=/root/.ssh/id_ed25519" --console-address ":9001"
  ports:
    - "9000:9000"
    - "9001:9001"
    - "8022:8022"
  healthcheck:
    test: ["CMD", "curl", "-k", "-f", "https://minio:9000/minio/health/live"]
    interval: 30s
    timeout: 20s
    retries: 3
  volumes:
    - <Path>/data:/data
    - <Path>/config:/root/.minio
    - <Path>/id_ed25519:/root/.ssh/id_ed25519
    - <Cert Path>/fullchain.pem:/root/.minio/certs/public.crt:ro
    - <Cert Path>/privkey.pem:/root/.minio/certs/private.key:ro

console:
  image: ghcr.io/georgmangold/console:latest
  container_name: minio-console
  restart: always
  ports:
    - "9002:9090"
    - "9003:9443"
  environment:
    - CONSOLE_MINIO_SERVER=https://minio:9000
    - CONSOLE_PORT=9090
    - CONSOLE_TLS_PORT=9443
    - CONSOLE_PROMETHEUS_URL=http://prometheus:9090
  volumes:
    - <Cert Path>/fullchain.pem:/.console/certs/public.crt:ro
    - <Cert Path>/privkey.pem:/.console/certs/private.key:ro

 

prometheus.yml

mc admin prometheus generate local --api-version v2 > prometheus.yml

で作れるが、商用版?だとv3が使えるが、minioは、v2まで。

MINIO_PROMETHEUS_AUTH_TYPE=publicにしているなら認証を削除する。

scrape_configs:
- job_name: minio-job
metrics_path: /minio/v2/metrics/cluster
scheme: https
static_configs:
- targets: ['minio:9000']

 

docker composeで起動したら、mcコマンドでログインユーザ(consoleユーザ consolepassword)の追加、console adminのポリシーの作成とconsoleユーザに適用をしておく。単純にポリシーの設定をすればいいのだが、起動ユーザを使って一旦、管理者ユーザ(consoleユーザ)を作成して、ポリシーを適用して、起動ユーザの設定を削除してある。この流れは地味に重要。

mc alias set myminio miniohogehogehoge miniohogehogehoge --api S3v4
mc admin info myminio
mc admin policy create myminio consoleAdmin /dev/stdin <<EOF
{
"Version": "2012-10-17",
"Statement": [
  {
    "Action": ["admin:*"],
    "Effect": "Allow",
    "Sid": ""
  },
  {
    "Action": ["s3:*"],
    "Effect": "Allow",
    "Resource": ["arn:aws:s3:::*"],
    "Sid": ""
  }
]
}
EOF
mc admin policy info myminio consoleAdmin
mc admin user add myminio console consolepassword
mc admin policy attach myminio consoleAdmin --user=console
mc admin user info myminio console
mc alias set local console consolepassword --api S3v4
mc alias rm myminio
mc admin info local

 

ブラウザで以下にログイン

https://<FQDN>:9003/login

スクラッチで作成した場合は、console / consolepassword でログイン

Prometheusも利用できるようになった。

ちなみにポートは以下になっている。

https://<FQDN>:9000 API

https://<FQDN>:9001 MinioのObject Browser

https://<FQDN>:9003 Console

TCP 8022 Minioへのsftpアクセス (sftp -P 8022 ユーザ名@<FQDN>)

 

ログインができたら、compose.ymlの

以下を絶対覚えられない文字列にそれぞれ書き換え

      – MINIO_ROOT_USER=miniohogehogehoge

      – MINIO_ROOT_PASSWORD=miniohogehogehoge

以下をoffにしておく。

      – MINIO_API_ROOT_ACCESS=off

これをしておかないとWeb UIやmcコマンドでminiohogehogehogeでログインできてしまう。

 

さらに動作確認ができたら、MinioのObject Browserを停止させてもいい。

command: server /data –sftp=”address=:8022″ –sftp=”ssh-private-key=/root/.ssh/id_ed25519″ –console-address “:9001”

–console-address “:9001”

を削除

      – MINIO_BROWSER=off

にして、ポートを閉じてしまってもいい。

設定を変更したら、docker composeを再起動しておく。

 

結構苦労するかなと思ったがあっけなく完了。ちなみに、Consoleの細かい設定は、以下の環境変数一覧を見ればなんとなく設定できる。

https://github.com/georgmangold/console/blob/main/docs/Environment.md

ドキュメントは揃っていなさそうで最低限揃っている。

これでとりあえず元通り。誰かがDocker Composeの設定を公表してくれるのではと待っていたが、なかったので作ることにした。これでMinioのWeb UI問題はEnd Game!

再度言うが、mcコマンドでアクセスすればフルで使えるので、UIを使う必要がないケースでは入れる必要はない。ほんと見栄えだけ。

 

ちなみにMinio Operatorだとどうなるんだろうかと調べてみた。

https://www.blog.slow-fire.net/2022/04/23/minio-operator-をkubernetes上で動かす/

あらら、更新されていないのか?2024年のバージョンで起動してきた。あまりメンテナンスされていない様子。(だからConsoleが削除された影響をうけていない。)

コメントを残す