You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker Compose的Keycloak中集成Discord扩展并自动化部署

实现Keycloak Discord插件自动化部署方案

针对你的需求,有两种可靠方案可以实现插件的自动化管理,无需手动安装,切换服务器时直接部署即可:


方案一:自定义Keycloak镜像(推荐,稳定无依赖)

将插件jar打包到自定义Docker镜像中,每次部署直接使用包含插件的镜像,彻底消除手动操作。

1. 仓库目录结构调整

在你的GitHub仓库根目录创建以下结构:

your-repo/
├── docker-compose.yml
├── Dockerfile
└── plugins/
    ├── keycloak-discord.jar
    └── keycloak-discord-roles-sync.jar
  • 手动下载对应Keycloak 16.1.1版本的插件jar放入plugins目录(注意找兼容16.x的版本,比如keycloak-discord的16.0.0版本);也可以通过GitHub Workflow自动下载(见后续步骤)。

2. 编写Dockerfile

创建Dockerfile,基于你当前使用的Keycloak镜像,复制插件到部署目录:

# 基于现有Keycloak镜像
FROM jboss/keycloak:16.1.1

# 将插件复制到Keycloak自动部署目录
COPY plugins/*.jar /opt/jboss/keycloak/standalone/deployments/

3. 修改docker-compose.yml

替换原有image字段为自定义镜像地址(或本地构建):

keycloak:
  container_name: keycloak
  # 替换为你的GitHub Packages/Docker Hub镜像地址
  image: ghcr.io/[你的GitHub用户名]/keycloak-with-discord-plugins:latest
  # 本地调试可使用build: .,CI/CD场景推荐远程镜像
  # build: .
  environment:
    # 保留原有所有环境变量
    DB_VENDOR: postgres
    DB_ADDR: postgres
    DB_PORT: temp
    ...
  # 保留其他配置(healthcheck、labels、restart等)

4. 配置GitHub Workflow自动构建部署

在.github/workflows/deploy-keycloak.yml添加以下内容,实现push主分支时自动构建镜像并部署到VPS:

name: Build and Deploy Keycloak with Plugins
on:
  push:
    branches: [ main ]

jobs:
  build-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      # 可选:自动下载兼容版本的插件(替代手动上传)
      - name: Download Discord Auth Plugin
        run: |
          mkdir -p plugins
          wget -O plugins/keycloak-discord.jar https://github.com/wadahiro/keycloak-discord/releases/download/16.0.0/keycloak-discord-16.0.0.jar
      
      - name: Download Discord Roles Sync Plugin
        run: |
          # 替换为对应16.x版本的jar下载地址
          wget -O plugins/keycloak-discord-roles-sync.jar https://github.com/kywan/keycloak-discord-roles-sync/releases/download/[兼容版本号]/[jar文件名].jar

      # 构建自定义镜像
      - name: Build Docker Image
        run: docker build -t ghcr.io/[你的GitHub用户名]/keycloak-with-discord-plugins:latest .

      # 登录GitHub Packages
      - name: Login to GitHub Packages
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      # 推送镜像到GitHub Packages
      - name: Push Image
        run: docker push ghcr.io/[你的GitHub用户名]/keycloak-with-discord-plugins:latest

      # 部署到VPS
      - name: Deploy to VPS
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.VPS_HOST }}
          username: ${{ secrets.VPS_USER }}
          key: ${{ secrets.VPS_SSH_KEY }} # 推荐用SSH密钥,比密码安全
          script: |
            cd /path/to/your/docker-compose-directory
            docker-compose pull keycloak
            docker-compose up -d keycloak

5. 配置仓库Secrets

在GitHub仓库的「Settings」→「Secrets and variables」→「Actions」中添加以下变量:

  • VPS_HOST:你的VPS IP或域名
  • VPS_USER:VPS登录用户名
  • VPS_SSH_KEY:VPS的SSH私钥(公钥需提前添加到VPS的~/.ssh/authorized_keys)

方案二:挂载卷+Workflow同步插件(轻量,无需构建镜像)

通过Docker挂载本地目录到Keycloak的部署目录,再通过Workflow将仓库中的插件同步到服务器,重启容器即可生效。

1. 修改docker-compose.yml

添加卷挂载,将本地目录映射到Keycloak的插件部署目录:

keycloak:
  container_name: keycloak
  image: jboss/keycloak:16.1.1
  environment:
    # 保留原有环境变量
    ...
  volumes:
    # 挂载本地插件目录到Keycloak部署目录
    - ./keycloak-plugins:/opt/jboss/keycloak/standalone/deployments/
  # 保留其他配置

2. 仓库添加插件文件

在仓库根目录创建keycloak-plugins目录,放入两个插件的jar文件。

3. 配置GitHub Workflow同步部署

创建.github/workflows/sync-plugins.yml:

name: Sync Plugins and Restart Keycloak
on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      # 同步插件到VPS的挂载目录
      - name: Sync Plugins to VPS
        uses: appleboy/scp-action@v0.1.7
        with:
          host: ${{ secrets.VPS_HOST }}
          username: ${{ secrets.VPS_USER }}
          key: ${{ secrets.VPS_SSH_KEY }}
          source: "keycloak-plugins/*"
          target: "/path/to/your/docker-compose-directory/keycloak-plugins/"

      # 重启Keycloak容器加载新插件
      - name: Restart Keycloak
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.VPS_HOST }}
          username: ${{ secrets.VPS_USER }}
          key: ${{ secrets.VPS_SSH_KEY }}
          script: |
            cd /path/to/your/docker-compose-directory
            docker-compose restart keycloak

注意事项

  1. 插件版本兼容性:必须使用与Keycloak 16.1.1兼容的插件版本,否则会导致Keycloak启动失败。
  2. 验证插件加载:启动后登录Keycloak管理控制台,检查是否出现Discord认证提供商和角色同步的配置选项。
  3. SSH密钥安全:优先使用SSH密钥而非密码进行VPS登录,避免密码泄露风险。

内容的提问来源于stack exchange,提问作者Nullified

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:18:13