开源SSO-ZITADEL

提供开箱即用的广泛功能。包括具有品牌自定义的多租户、安全登录、自助服务、OpenID Connect、OAuth2.x、SAML2、带 FIDO2 的无密码(包括通行密钥)、OTP、U2F 和无限制的审计跟踪。

官网地址:https://zitadel.com/
文档地址:https://zitadel.com/docs/

这里就不多废话了,直接说明如何快速搭建环境。

部署

简要说明大致流程,前提条件需要安装Docker、Docker Compose环境,详情请参考Ubuntu安装Docker

  1. 搭建数据库环境
  2. 创建 ZITADEL 的专属账号和数据库
  3. 初始化 ZITADEL 服务
  4. 启动 ZITADEL 服务
version: '3.8'

services:
  zitadel:
    restart: 'always'
    networks:
      - 'zitadel'
    image: 'ghcr.io/zitadel/zitadel:latest'
    command: 'start-from-init --masterkey "MasterkeyNeedsToHave32Characters" --tlsMode disabled'
    environment:
      - 'ZITADEL_DATABASE_POSTGRES_HOST=db'
      - 'ZITADEL_DATABASE_POSTGRES_PORT=5432'
      - 'ZITADEL_DATABASE_POSTGRES_DATABASE=zitadel'
      - 'ZITADEL_DATABASE_POSTGRES_USER_USERNAME=zitadel'
      - 'ZITADEL_DATABASE_POSTGRES_USER_PASSWORD=zitadel'
      - 'ZITADEL_DATABASE_POSTGRES_USER_SSL_MODE=disable'
      - 'ZITADEL_DATABASE_POSTGRES_ADMIN_USERNAME=postgres'
      - 'ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD=postgres'
      - 'ZITADEL_DATABASE_POSTGRES_ADMIN_SSL_MODE=disable'
      - 'ZITADEL_FIRSTINSTANCE_ORG_HUMAN_USERNAME=Cikaros@qq.com' #管理员账号
      - 'ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD=xxxxxxxxxx' #管理员密码
      - 'ZITADEL_EXTERNALSECURE=false'
    depends_on:
      db:
        condition: 'service_healthy'
    ports:
      - '8080:8080'

  db:
    restart: 'always'
    image: postgres:16-alpine
    environment:
      - POSTGRES_USER=postgres #超管账号
#      - POSTGRES_PASSWORD=xxxxxxxxxx #超管密码
#      - POSTGRES_DB=zitadel
    networks:
      - 'zitadel'
    healthcheck:
      test: ["CMD-SHELL", "pg_isready", "-d", "zitadel", "-U", "postgres"]
      interval: '10s'
      timeout: '30s'
      retries: 5
      start_period: '20s'

networks:
  zitadel:

注:请在部署前自行修改变量位置的内容,管理员账号密码请自行设置
MasterkeyNeedsToHave32Characters: $(openssl rand -base64 32 | head -c 32)

Postgres 配置

这里假设 Postgres 服务已经创建,在 Docker 容器中的容器名为 Postgres

首先需要登录到容器内部进行操作(主要是因为外部没有对应的指令可用)

#进入容器
sudo docker exec -it Postgres bash
#切换数据库用户
su postgres 

之后则进行用户和数据库的创建,并为其设置权限

#创建用户
createuser -D -R -S zitadel
#创建数据库并归属给上一步创建的用户
createdb -O zitadel -E "UTF-8" -l "C" -T template0 -e zitadel
#为其配置Public Schema
grant all on schema public to zitadel;

开源SSO-ZITADEL
https://blog.cikaros.top/doc/a28e181a.html
作者
Cikaros
发布于
2024年6月26日
许可协议