🔑

Fedora41 サーバで Keycloak を使うときのメモ

に公開

お家の検証サーバ用の備忘録です。基本 root です。

実行基盤の準備

keycloak はコンテナ環境での本番利用が想定されているようなので podman を使います。

dnf install -y podman podman-compose

Keycloak の実行

IaC は以下のようにします。本番環境では外部データベースを利用しますが、検証なので内蔵データベースで済ませます。podman-compose down してもボリュームが消えないように永続化します。

# docker-compose.yml
version: "3.8"

services:
  keycloak:
    image: quay.io/keycloak/keycloak:26.2.0
    container_name: keycloak
    command: start-dev
    ports:
      - "8080:8080"
    environment:
      KC_BOOTSTRAP_ADMIN_USERNAME: admin
      KC_BOOTSTRAP_ADMIN_PASSWORD: admin
    volumes:
      - keycloak_data:/opt/keycloak/data

volumes:
  keycloak_data:
podman-compose up -d

# 起動完了していることを確認する
podman-compose logs

# 以下のようなログが出力されていれば起動完了している
# Keycloak 26.2.0 on JVM (powered by Quarkus 3.20.0) started in 9.981s. Listening on: http://0.0.0.0:8080

Keycloak の中の設定

レルムとクライアントを設定し、ユーザーも作ります。

CONTAINER=keycloak

# 1. Keycloak CLI を使ってログイン
podman exec ${CONTAINER} /opt/keycloak/bin/kcadm.sh config credentials \
  --server http://localhost:8080 \
  --realm master \
  --user admin \
  --password admin

# 2. レルム作成
REALM=myrealm
podman exec ${CONTAINER} /opt/keycloak/bin/kcadm.sh create realms \
  -s realm=${REALM} -s enabled=true

# 3. クライアント追加
# クライアント(アプリ)の IP アドレスを指定する必要がある
CLIENT=myclient
CLIENT_SECRET=my-very-secret
ALLOWLIST='["http://0.0.0.0:3000/*"]'
podman exec ${CONTAINER} /opt/keycloak/bin/kcadm.sh create clients -r myrealm \
  -s clientId=${CLIENT} -s publicClient=false -s secret=${CLIENT_SECRET} -s enabled=true -s redirectUris="${ALLOWLIST}"

# 4. ユーザー追加
USER=asterisk
EMAIL=asterisk@example.com
podman exec ${CONTAINER} /opt/keycloak/bin/kcadm.sh create users -r ${REALM} \
  -s username=${USER} -s email=${EMAIL} -s enabled=true

# 5. パスワード設定
PASS=asterisk

USER_ID=$(podman exec ${CONTAINER} /opt/keycloak/bin/kcadm.sh get users -r ${REALM} -q username=${USER} --fields id | jq -r .[0].id)

podman exec ${CONTAINER} /opt/keycloak/bin/kcadm.sh set-password -r ${REALM} --userid ${USER_ID} --new-password ${PASS}

管理コンソール

admin ユーザーは以下の URL にアクセスします。

http://<Keycloakサーバー>/

レルムに作成したユーザーは以下の URL にアクセスします。

http://<Keycloakサーバー>/realms/<realm名>/account/

便利

GitHubで編集を提案

Discussion