Link

Keycloak 部署

目录

  1. Keycloak 部署
    1. Docker Compose 部署
    2. 二进制部署
      1. 开机启动
    3. 参考文档

Docker Compose 部署

官方有很多种 Keycloak 部署模式,本文使用外置数据库的方式,使用 Nginx 作为反向代理执行 TLS 卸载。

Docker Compose 如下:

version: '3.8'

services:
  postgres:
    restart: always
    image: postgres:15-alpine
    volumes:
    - keycloak-data:/var/lib/postgresql/data:Z
    environment:
    - POSTGRES_USER=keycloak
    - POSTGRES_PASSWORD=Admin@2023
    - POSTGRES_DB=keycloak
    - PGDATA=/var/lib/postgresql/data/pgdata

  keycloak:
    restart: always
    image: quay.io/keycloak/keycloak:latest
    command: start --proxy edge --hostname-strict=false --db postgres --db-url-host postgres --db-username keycloak --db-password Admin@2023
    depends_on:
    - postgres
    ports:
    - "8088:8080"
    environment:
    - KEYCLOAK_ADMIN=admin
    - KEYCLOAK_ADMIN_PASSWORD=fyg8h$1rg

volumes:
  keycloak-data:

部署完成后检查:

[root@harbor keycloak]# docker ps | grep keycloak
0d4d00838a55   quay.io/keycloak/keycloak:latest           "/opt/keycloak/bin/k…"   3 minutes ago   Up 2 minutes             8443/tcp, 0.0.0.0:8088->8080/tcp, :::8088->8080/tcp                                       keycloak-keycloak-1
a057c4dccdff   postgres:15-alpine                         "docker-entrypoint.s…"   3 minutes ago   Up 2 minutes             5432/tcp                                                                                  keycloak-postgres-1

http 端口访问:

image-20231220121115205

反向代理配置如下:

image-20231220121101666

https 端口访问:

image-20231220121211586

二进制部署

安装包可以在下列页面下载到:

https://github.com/keycloak/keycloak/releases

部署脚本:

yum install -y git wget jre
# 安装依赖

wget https://github.com/keycloak/keycloak/releases/download/25.0.6/keycloak-25.0.6.tar.gz
tar xvf keycloak-25.0.6.tar.gz
cp -r keycloak-25.0.6 /opt/keycloak

/opt/keycloak/kc.sh start --proxy edge --hostname-strict=false --http-port 80
# 上述启动只会使用 HTTP 协议,外部需要做 TLS 卸载,本文使用 Cloudflare 实现

通过上述命令启动完成后,直接通过互联网访问会报错,需要配置 TLS 卸载:

image-20241206122342805

在 Cloudflare 配置域名解析,启用 Proxy:

image-20241206122454173

同时确保 Cloudflare SSL/TLS 模式为 Flexible 即可:

image-20241206122553483

再次通过域名访问的效果:

image-20241206122704013

开机启动

可以添加 systemd Service 实现开机启动:

cat >/etc/systemd/system/keycloak.service <<EOF
[Unit]
Description=Keycloak Application Server
After=syslog.target network.target
[Service]
Type=simple
TimeoutStopSec=0
KillSignal=SIGTERM
KillMode=process
SuccessExitStatus=143
LimitMEMLOCK=infinity
SendSIGKILL=no
WorkingDirectory=/opt/keycloak/
LimitNOFILE=102642
# Default user
Environment=KEYCLOAK_ADMIN=admin
Environment=KEYCLOAK_ADMIN_PASSWORD=Palo@lto1!
ExecStart=/opt/keycloak/bin/kc.sh start --proxy edge --hostname-strict=false --http-port 80
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl start keycloak
systemctl status keycloak
journalctl -f -u keycloak

参考文档

https://hub.docker.com/_/postgres

https://www.keycloak.org/server/db

https://www.keycloak.org/server/reverseproxy