garage-webui のインストール - Garage のクラスタとバケットをブラウザから管理する
要約: Garage に garage-webui を追加して、レイアウト・バケット・キーをブラウザから管理します。compose のサービス 1 つと htpasswd のログイン設定です。
概要
Garage は CLI が本体です。ただしレイアウトを組み、バケットとキーを結びつける作業は、画面で見たほうがずっと速く進みます。
Garage には公式の Web コンソールがなく、サードパーティの UI がいくつかあります。この記事では、その中でもっとも単純な garage-webui を扱います。
Garage がすでに動いている状態で、compose にサービスを 1 つ追加する形で進めます。
Garage 自体のインストールと CLI での構成は、前の記事で扱っています。
インストール
Docker と Docker Compose がインストールされている必要があります。インストールは下の記事で扱っています。
webui サービスの追加
前の記事の compose に webui サービスを 1 つ追加します。完成したファイルはリポジトリにあります。sample/docker/garage-webui
1# docker-compose.yml
2
3services:
4 garage:
5 image: dxflrs/garage:v2.4.1
6 container_name: garage
7 restart: unless-stopped
8 ports:
9 - "3900:3900" # S3 API, signed requests only
10 # - "3901:3901" # RPC, only needed to join other nodes
11 - "3902:3902" # static website hosting, public read
12 # - "3903:3903" # admin API, reached by webui over the compose network
13 env_file:
14 - .env
15 volumes:
16 - ./garage.toml:/etc/garage.toml:ro
17 - ./meta:/var/lib/garage/meta
18 - ./data:/var/lib/garage/data
19
20 webui:
21 image: khairul169/garage-webui:1.1.0
22 container_name: garage-webui
23 restart: unless-stopped
24 depends_on:
25 - garage
26 ports:
27 - "3909:3909"
28 environment:
29 API_BASE_URL: "http://garage:3903"
30 S3_ENDPOINT_URL: "http://garage:3900"
31 API_ADMIN_KEY: "${GARAGE_ADMIN_TOKEN}"
32 AUTH_USER_PASS: "${AUTH_USER_PASS}"
33 volumes:
34 - ./garage.toml:/etc/garage.toml:ro
ログインの追加
アカウントとパスワードハッシュを生成します。
1# htpasswd -nBC 10 {id}
2htpasswd -nBC 10 admin
プロンプトが 2 回聞いてきて、最後の行に アカウント:ハッシュ の形で出力されます。この行をそのままコピーします。
1New password:
2Re-type new password:
3admin:$2y$10$H9W.......yn6ze54n2
.env に貼り付けます。
1# htpasswd -nBC 10 admin
2AUTH_USER_PASS=admin:$2y$10$H9W.......yn6ze54n2
再起動
環境変数はコンテナの作成時に埋め込まれるため、変更後はコンテナを作り直す必要があります。
1docker compose up -d --force-recreate
2
3[+] Restarting 2/2
4 ✔ Container garage-webui Started 0.7s
5 ✔ Container garage Started
WEB UI
アクセス
ex) http://192.168.0.10:3909
ダッシュボード
クラスタの作成
Node Assign
Node Apply
作成完了
バケットの作成
バケットへの権限付与
キーの作成
バケットへの移動
Manage タブへ移動します
パーミッションの接続
Permissions の項目で、接続するキーに必要な権限を与えます。
追加オプション
静的ウェブサイトの許可
バケット設定で Website Access Enabled をオンにします。
まとめ
CLI でやっていたことがブラウザに移っただけで、動作は同じです。Assign と Apply が分かれているのも、キーとバケットを別々に作って権限でつなぐのも CLI と変わりません。
webui は admin API をラップした画面なので、Garage 側の概念を知っていれば迷うところはありません。逆に概念を知らずに画面から入ると、Assign だけして Apply を忘れる、といった形で詰まります。
留意点は 2 つです。公式コンソールではなくサードパーティなので、Garage 本体と更新サイクルが異なります。
そして 認証はデフォルトでオフです。 AUTH_USER_PASS を設定しなければ、3909 に到達できる人は誰でも管理者になります。内部ネットワークであっても、開けておく理由はありません。
パスワードを変えるにはハッシュを作り直してコンテナを再作成する必要があります。運用では、認証を前段のリバースプロキシに移すか、そもそもポートを公開せず VPN の中からだけ到達できるようにするほうが楽です。











