部署方式
采用 Docker Compose 部署,使用 Postgres 作为数据库,使用 Nginx 作为反向代理。
Docker Compose 配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| version: '3'
services: keycloak: image: quay.io/keycloak/keycloak:latest environment: KC_DB: postgres KC_DB_URL: jdbc:postgresql://db:5432/keycloak KC_DB_USERNAME: keycloak KC_DB_PASSWORD: keycloak KC_HTTP_ENABLED: true KC_HOSTNAME_STRICT: false KC_HOSTNAME_STRICT_HTTPS: false KC_HTTP_RELATIVE_PATH: '/' KC_HTTP_PORT: 8080 KEYCLOAK_ADMIN: MY_USERNAME KEYCLOAK_ADMIN_PASSWORD: MY_PASSWORD PROXY_ADDRESS_FORWARDING: true KC_PROXY: edge entrypoint: /opt/keycloak/bin/kc.sh start ports: - 127.0.0.1:18080:8080 restart: unless-stopped db: image: postgres:14 restart: unless-stopped environment: - POSTGRES_USER=keycloak - POSTGRES_PASSWORD=keycloak - POSTGRES_DB=keycloak volumes: - ./postgres-data:/var/lib/postgresql/data
|
使用命令 docker compose up -d 启动服务。
Nginx 配置
我建议使用 DigitalOcean 的 Nginx 配置生产工具,示例配置如下:
示例配置
也可参考下述配置,此为 DigitalOcean 生成配置的简化版:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name auth.example.com;
ssl_certificate /etc/letsencrypt/live/auth.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/auth.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/auth.example.com/chain.pem;
access_log /var/log/nginx/access.log combined buffer=512k flush=1m; error_log /var/log/nginx/error.log warn;
location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Auth-Request-Redirect $request_uri; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; proxy_pass http://127.0.0.1:18080; }
location /auth/realms { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Auth-Request-Redirect $request_uri; proxy_pass http://127.0.0.1:18080; }
location /auth/resources { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Auth-Request-Redirect $request_uri; proxy_pass http://127.0.0.1:18080; }
location /auth/js { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Auth-Request-Redirect $request_uri; proxy_pass http://127.0.0.1:18080; } }
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name *.auth.example.com;
ssl_certificate /etc/letsencrypt/live/auth.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/auth.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/auth.example.com/chain.pem; return 301 https://auth.example.com$request_uri; }
|
配置 Keycloak
创建 Realm
打开 Keycloak 地址,界面如下。

选择 Administration Console,进入管理界面。

选择箭头指向的下拉菜单,选择 Add realm,创建一个新的 Realm。

填写 Realm 名称,点击 Create。
创建 Client

选择 Clients。

点击 Create client。

填写 Client 相关信息,点击 Next。

按需求选择 Client 的配置,点击 Save。

至此,Keycloak 配置完成,且创建了第一个测试用 Client。
测试 Client
可根据 官方教程 测试该 Client。
尾声
上述便是使用 Docker Compose 部署 Keycloak 20 的方法,我们顺利创建了第一个测试用 Client,接下来可以根据自己的需求进行配置。