🦔

AWS EC2のDocker上でKeyCloakをたてる方法

2024/04/07に公開

認証・認可の導入

認証・認可の勉強がしたいと思い、KeyCloakを触ってみようと思いました。

最初はローカル上で構築していたけれど、実際に運用する場合はサーバー公開しないといけないから手軽にEC2上で構築してみました。

EC2はAmazon Linux2を選択

今回は無料利用枠で使えるAmazon Linux2を使います。

スペックはt2.microでデフォルトのままにしました。

dockerをインストール

インスタンス生成時に作ったキーペアを使ってSSHします。

# pemのパーミッションがでかいと怒られるので、400に設定
chmod 400 ~/.ssh/[作成したキーペア名].pem

ssh -i [作成したキーペア名].pem ec2-user@[EC2のパブリックIP]

下記コマンドでdockerをインストール

# インストール
sudo yum install -y docker

# 起動設定
sudo service docker start
sudo service docker enable

# ec2-userでdockerが起動できるようにする
sudo usermod -a -G docker ec2-user

# 動作確認
sudo docker info

docker-composeをインストール

sudo mkdir -p /usr/local/lib/docker/cli-plugins

sudo curl -SL https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose

sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

docker compose version

公式のDockerイメージからKeyCloak起動

下記公式からDocker起動コマンドを確認する。
https://www.keycloak.org/getting-started/getting-started-docker

docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:24.0.2 start-dev

そのままだとブラウザアクセスできない

どうもKeyCloakのデフォルト設定だとHTTPS必須になっているので、そのままではブラウザアクセスできませんでした。
アクセスすると次のようなエラーがでます。

http required

ローカルでたてていたときは、出なかったのでlocalhostのときは通る設定になっている模様。
今回はEC2上にたてたのでlocalhostではなく、パブリックIPになるのでその影響かと思います。

KeyCloakのHTTPS必須設定をオフにする

ということで、CLI経由でHTTPS必須設定にオフにしていきます。

実行したコマンドは以下

# dockerコンテナにログイン
docker exec -it [コンテナ名] /bin/bash

# コンテナ内で実行
bash-5.1$ find / -name kcadm.sh
/opt/keycloak/bin/kcadm.sh
find: ‘/proc/tty/driver’: Permission denied
bash-5.1$ 
bash-5.1$ cd /opt/keycloak/bin/
bash-5.1$ 
bash-5.1$ ./kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin
Logging into http://localhost:8080 as user admin of realm master
Enter password: *****       # adminと入力
bash-5.1$ ./kcadm.sh update realms/master -s sslRequired=NONE

その後、再度ブラウザアクセスしてログイン画面が出てきたら完了です。

Discussion