mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-09-19 10:28:49 +08:00
Closes #620 #497. Add opt-in Langfuse observability covering all five model types (chat, embedding, rerank, VLM, ASR) with HTTP-request-scoped traces and Docker Compose support (both cloud and self-hosted). Core package internal/tracing/langfuse: - HTTP client with batched async ingestion (non-blocking in request path) - Sampling, environment / release tagging, and graceful fallback when LANGFUSE_* env vars are absent (wrappers become no-ops) - Gin middleware opens one trace per traced request and finishes it after the handler chain returns, attaching method / path / user / session - Trace context is stored under a typed key exported from internal/types so logger.CloneContext can preserve it across handler / goroutine boundaries (otherwise each LLM call auto-created an orphan trace, fragmenting one request into many) Per-model generation wrappers (opt-in via NewChat/NewEmbedder/...): - chat: captures prompt, streaming output, token usage + TTFT - embedding: approximates tokens when the provider omits usage - rerank: previews query/docs, summarizes results to keep payload small - vlm: records image count and total bytes, never uploads raw pixels - asr: records file size and audio duration, never uploads audio bytes Async title generation (GenerateTitleAsync) now forwards the trace key into the goroutine so title calls appear under the parent chat trace. Docker Compose: - LANGFUSE_* env passthrough on the `app` service for cloud deployments - Optional `langfuse` profile spins up a self-hosted Langfuse stack that reuses WeKnora's existing PostgreSQL (separate database via an idempotent init container that fixes ICU collation drift) and Redis (separate DB number), adding only ClickHouse, MinIO, web and worker containers - web/worker entrypoints URL-encode DB_PASSWORD / REDIS_PASSWORD at start to avoid Prisma P1013 when passwords contain @ / # / etc. Docs: docs/Langfuse集成.md covers cloud vs self-hosted, per-model usage strategy, code map, and resource footprint.
437 lines
15 KiB
Bash
437 lines
15 KiB
Bash
# 使用说明
|
||
# 1. 复制此文件为 .env
|
||
# 2. 替换所有占位符为实际值
|
||
# 3. 确保 .env 文件不会被提交到版本控制系统
|
||
|
||
# ========== 镜像版本 ==========
|
||
# WeKnora 镜像版本标签,可选值: latest(稳定版), main(最新开发版)
|
||
# WEKNORA_VERSION=latest
|
||
|
||
# gin mod
|
||
# 可选值: debug(开发模式,有详细日志), release(生产模式,禁用Swagger文档)
|
||
GIN_MODE=release
|
||
|
||
# 日志级别,可选值:debug, info, warn, error, fatal,默认为debug
|
||
# LOG_LEVEL=debug
|
||
|
||
# LLM 调试日志:将每次大模型调用的完整请求和响应写入独立日志文件,便于排查上下文问题
|
||
# 可选值:true(自动放在 LOG_PATH 同目录下 llm_debug.log)、false/空(关闭)、或指定文件路径
|
||
# LLM_DEBUG_LOG=true
|
||
|
||
# ========== Langfuse 可观测性(可选) ==========
|
||
# 用于追踪 chat / embedding / rerank / VLM / ASR 模型调用,统计 token 消耗。
|
||
# 详细说明:docs/Langfuse集成.md
|
||
#
|
||
# 方案 A:接入 Langfuse Cloud(最简单)
|
||
# 1) 登录 https://cloud.langfuse.com 生成 API Key
|
||
# 2) 填入下方 PUBLIC_KEY / SECRET_KEY
|
||
# 3) docker compose up -d app
|
||
#
|
||
# 方案 B:自建 Langfuse(局域网/内网环境)
|
||
# 1) 启动自建栈:docker compose --profile langfuse up -d
|
||
# 首次启动后 ClickHouse 迁移约 1-2 分钟,耐心等待 langfuse-web 健康
|
||
# 2) 浏览器打开 http://localhost:3000 注册管理员账号并生成 API Key
|
||
# 3) 取消注释下方 LANGFUSE_HOST=http://langfuse-web:3000
|
||
# 填入刚生成的 PUBLIC_KEY / SECRET_KEY
|
||
# 4) docker compose up -d app
|
||
#
|
||
# 只要同时设置了 PUBLIC_KEY + SECRET_KEY 就会自动启用,无需显式开关。
|
||
LANGFUSE_PUBLIC_KEY=pk-lf-xxxxxxxx
|
||
LANGFUSE_SECRET_KEY=sk-lf-xxxxxxxx
|
||
LANGFUSE_HOST=http://langfuse-web:3000
|
||
# 自建模式下改成:LANGFUSE_HOST=http://langfuse-web:3000
|
||
#
|
||
# 可选:显式开关(true/false,默认根据 key 自动判断)
|
||
# LANGFUSE_ENABLED=true
|
||
# 可选:版本 / 环境标签,便于在 Langfuse UI 过滤
|
||
# LANGFUSE_RELEASE=v0.4.2
|
||
# LANGFUSE_ENVIRONMENT=production
|
||
# 可选:批量上报与采样策略(生产高流量建议调大 FLUSH_AT、降低 SAMPLE_RATE)
|
||
# LANGFUSE_FLUSH_AT=15
|
||
# LANGFUSE_FLUSH_INTERVAL=3s
|
||
# LANGFUSE_QUEUE_SIZE=2048
|
||
# LANGFUSE_REQUEST_TIMEOUT=10s
|
||
# LANGFUSE_SAMPLE_RATE=1.0
|
||
# LANGFUSE_DEBUG=false
|
||
|
||
# ========== Langfuse 自建栈配置(仅在使用 --profile langfuse 时需要) ==========
|
||
# 设计说明:为了最小化资源占用,Langfuse 自建栈会**复用** WeKnora 已有的
|
||
# - postgres:创建独立的 "langfuse" 数据库(由 langfuse-db-init 容器一次性创建)
|
||
# - redis :使用独立的 Redis DB 号(默认 1,WeKnora 用 0)
|
||
# 真正新增的只有 3 个常驻容器:langfuse-web、langfuse-worker、langfuse-clickhouse
|
||
# + 1 个专用 S3:langfuse-minio
|
||
# + 1 个一次性 init:langfuse-db-init
|
||
#
|
||
# Langfuse Web UI 对外端口
|
||
# LANGFUSE_WEB_PORT=3000
|
||
#
|
||
# Langfuse 专用 MinIO 端口(避免和 WeKnora 主 MinIO 9000/9001 冲突)
|
||
# LANGFUSE_MINIO_S3_PORT=9100
|
||
# LANGFUSE_MINIO_CONSOLE_PORT=9101
|
||
#
|
||
# 在 WeKnora-postgres 中创建的 Langfuse 库名
|
||
# LANGFUSE_DB_NAME=langfuse
|
||
#
|
||
# 在 WeKnora-redis 中使用的 DB 号(1~15,不要和 WeKnora 的 0 冲突)
|
||
# LANGFUSE_REDIS_DB=1
|
||
#
|
||
# ClickHouse / Langfuse 专用 MinIO 凭证(生产请务必修改)
|
||
# LANGFUSE_CLICKHOUSE_USER=clickhouse
|
||
# LANGFUSE_CLICKHOUSE_PASSWORD=clickhouse
|
||
# LANGFUSE_MINIO_USER=langfuseminio
|
||
# LANGFUSE_MINIO_PASSWORD=langfuseminiosecret
|
||
#
|
||
# Langfuse 核心安全字段,生产必须重新生成:
|
||
# LANGFUSE_SALT=$(openssl rand -base64 32)
|
||
# LANGFUSE_ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||
# LANGFUSE_NEXTAUTH_SECRET=$(openssl rand -base64 32)
|
||
# LANGFUSE_SALT=
|
||
# LANGFUSE_ENCRYPTION_KEY=
|
||
# LANGFUSE_NEXTAUTH_SECRET=
|
||
# LANGFUSE_NEXTAUTH_URL=http://localhost:3000
|
||
# LANGFUSE_TELEMETRY_ENABLED=false
|
||
#
|
||
# 可选:自动化首次启动(填写后直接注入管理员+项目,跳过 UI 注册)
|
||
# LANGFUSE_INIT_ORG_NAME=WeKnora
|
||
# LANGFUSE_INIT_PROJECT_NAME=WeKnora
|
||
# LANGFUSE_INIT_PROJECT_PUBLIC_KEY=pk-lf-weknora-init
|
||
# LANGFUSE_INIT_PROJECT_SECRET_KEY=sk-lf-weknora-init
|
||
# LANGFUSE_INIT_USER_EMAIL=admin@example.com
|
||
# LANGFUSE_INIT_USER_NAME=Admin
|
||
# LANGFUSE_INIT_USER_PASSWORD=change-me-please
|
||
|
||
# 时区设置,默认为 Asia/Shanghai
|
||
# 影响系统时间显示和日志时间戳
|
||
# 常用值:Asia/Shanghai, Asia/Tokyo, America/New_York, Europe/London, UTC
|
||
TZ=Asia/Shanghai
|
||
|
||
# 系统默认语言(BCP-47 格式),用于 Prompt 中 {{language}} 占位符的回退值
|
||
# 优先级:Accept-Language 请求头 > 此环境变量 > 内置默认值 (en-US)
|
||
# 常用值:zh-CN, en-US, ja-JP, ko-KR, ru-RU
|
||
# WEKNORA_LANGUAGE=zh-CN
|
||
|
||
# 禁止新用户注册(生产环境建议设为 true)
|
||
DISABLE_REGISTRATION=false
|
||
|
||
# Ollama 服务的基准 URL,用于连接本地/其他服务器上运行的 Ollama 服务
|
||
OLLAMA_BASE_URL=http://host.docker.internal:11434
|
||
|
||
# 存储配置
|
||
# 主数据库类型(postgres/mysql)
|
||
DB_DRIVER=postgres
|
||
|
||
# 向量存储类型(postgres/elasticsearch_v7/elasticsearch_v8/qdrant/milvus/weaviate)
|
||
RETRIEVE_DRIVER=postgres
|
||
|
||
# 文件存储类型(local/minio/cos/tos/s3)
|
||
STORAGE_TYPE=local
|
||
|
||
# 流处理后端(memory/redis)
|
||
STREAM_MANAGER_TYPE=redis
|
||
|
||
# 应用服务主机名,默认为app(Docker内部服务名)
|
||
# 如需代理到远程后端,可设为远程地址,如 remote-app.example.com
|
||
APP_HOST=app
|
||
|
||
# 应用服务宿主机映射端口,默认为8080(仅影响宿主机访问,不影响容器间通信)
|
||
APP_PORT=8080
|
||
|
||
# NGINX 代理到后端的目标端口,默认为8080(App容器内部监听端口)
|
||
# 本地部署:保持默认即可,无需随 APP_PORT 修改
|
||
# 远程部署:设为远程 App 服务的实际端口
|
||
# APP_BACKEND_PORT=8080
|
||
|
||
# NGINX 代理到后端的协议,默认为http
|
||
# 远程部署如后端为 HTTPS,需设为 https
|
||
# APP_SCHEME=http
|
||
|
||
# 前端服务端口,默认为80
|
||
FRONTEND_PORT=80
|
||
|
||
# 文档解析模块端口,默认为50051
|
||
DOCREADER_PORT=50051
|
||
|
||
# 数据库主机地址
|
||
DB_HOST=localhost
|
||
|
||
# 数据库端口
|
||
DB_PORT=5432
|
||
|
||
# 数据库用户名
|
||
DB_USER=postgres
|
||
|
||
# 数据库密码
|
||
DB_PASSWORD=postgres123!@#
|
||
|
||
# 数据库名称
|
||
DB_NAME=WeKnora
|
||
|
||
# 如果使用 redis 作为流处理后端,需要配置以下参数
|
||
# Redis用户名,Redis 6.0+ ACL 功能支持(可选)
|
||
# REDIS_USERNAME=
|
||
|
||
# Redis密码,如果没有设置密码,可以留空
|
||
REDIS_PASSWORD=redis123!@#
|
||
|
||
# Redis数据库索引,默认为0
|
||
REDIS_DB=0
|
||
|
||
# Redis key的前缀,用于命名空间隔离
|
||
REDIS_PREFIX=stream:
|
||
|
||
# 当使用本地存储时,文件保存的基础目录路径
|
||
LOCAL_STORAGE_BASE_DIR=/data/files
|
||
|
||
# 是否自动恢复脏数据
|
||
AUTO_RECOVER_DIRTY=true
|
||
|
||
TENANT_AES_KEY=weknorarag-api-key-secret-secret
|
||
|
||
# AES-256 密钥,用于数据库中 API Key 等敏感字段的落盘加密(必须为32字节)
|
||
SYSTEM_AES_KEY=weknora-system-aes-key-32bytes!!
|
||
|
||
# SSRF 校验白名单(可选)。逗号分隔;每条可为:精确域名(api.internal)、通配域名(*.example.com)、
|
||
# IPv4(203.0.113.5)、IPv6(2001:db8::1,不带方括号)或 CIDR(10.0.0.0/8, 2001:db8::/32)。
|
||
# 列入者会在 URL 校验等地方绕过常规 SSRF 规则,生产环境请谨慎配置。
|
||
# SSRF_WHITELIST=internal.service,*.corp.example,172.16.0.0/12,2001:db8::1,fd00::/8
|
||
|
||
# 是否开启知识图谱构建和检索(构建阶段需调用大模型,耗时较长)
|
||
ENABLE_GRAPH_RAG=false
|
||
|
||
|
||
# 配置 JWT_SECRET 用于前端登录刷新Token
|
||
JWT_SECRET=weknora-jwt-secret
|
||
|
||
# MinIO端口
|
||
# MINIO_PORT=9000
|
||
|
||
# MinIO控制台端口
|
||
# MINIO_CONSOLE_PORT=9001
|
||
|
||
# Embedding并发数,出现429错误时,可调小此参数
|
||
CONCURRENCY_POOL_SIZE=5
|
||
|
||
# (Removed: IMAGE_MAX_CONCURRENT, OCR_BACKEND — moved to Go App module after lightweight refactoring)
|
||
|
||
# 如果使用ElasticSearch作为向量存储,需要配置以下参数
|
||
# ElasticSearch地址,例如 http://localhost:9200
|
||
# ELASTICSEARCH_ADDR=your_elasticsearch_addr
|
||
|
||
# ElasticSearch用户名,如果需要身份验证
|
||
# ELASTICSEARCH_USERNAME=your_elasticsearch_username
|
||
|
||
# ElasticSearch密码,如果需要身份验证
|
||
# ELASTICSEARCH_PASSWORD=your_elasticsearch_password
|
||
|
||
# ElasticSearch索引名称,用于存储向量数据
|
||
# ELASTICSEARCH_INDEX=WeKnora
|
||
|
||
# 如果使用Qdrant作为向量存储,需要配置以下参数
|
||
# Qdrant服务主机地址
|
||
# QDRANT_HOST=localhost
|
||
|
||
# Qdrant服务端口
|
||
# QDRANT_PORT=6334
|
||
|
||
# Qdrant集合名称,用于存储向量数据
|
||
# QDRANT_COLLECTION=weknora_embeddings
|
||
|
||
# Qdrant API密钥,如果需要身份验证(可选)
|
||
# QDRANT_API_KEY=your_qdrant_api_key
|
||
|
||
# 是否启用TLS加密连接(可选,默认为false)
|
||
# QDRANT_USE_TLS=false
|
||
|
||
# 如果使用MinIO作为文件存储,需要配置以下参数
|
||
# MinIO访问端点(host:port),连接外部MinIO时需修改
|
||
# MINIO_ENDPOINT=minio:9000
|
||
|
||
# MinIO访问密钥
|
||
# MINIO_ACCESS_KEY_ID=your_minio_access_key
|
||
|
||
# MinIO密钥
|
||
# MINIO_SECRET_ACCESS_KEY=your_minio_secret_key
|
||
|
||
# MinIO桶名称,用于存储文件
|
||
# MINIO_BUCKET_NAME=your_minio_bucket_name
|
||
|
||
# 如果使用腾讯云COS作为文件存储,需要配置以下参数
|
||
# 腾讯云COS的访问密钥ID
|
||
# COS_SECRET_ID=your_cos_secret_id
|
||
|
||
# 腾讯云COS的密钥
|
||
# COS_SECRET_KEY=your_cos_secret_key
|
||
|
||
# 腾讯云COS的区域,例如 ap-guangzhou
|
||
# COS_REGION=your_cos_region
|
||
|
||
# 腾讯云COS的桶名称
|
||
# COS_BUCKET_NAME=your_cos_bucket_name
|
||
|
||
# 腾讯云COS的应用ID
|
||
# COS_APP_ID=your_cos_app_id
|
||
|
||
# 腾讯云COS的路径前缀,用于存储文件
|
||
# COS_PATH_PREFIX=your_cos_path_prefix
|
||
|
||
# COS_ENABLE_OLD_DOMAIN=true 表示启用旧的域名格式,默认为 true
|
||
COS_ENABLE_OLD_DOMAIN=true
|
||
|
||
# 如果使用火山引擎TOS作为文件存储,需要配置以下参数
|
||
# 火山引擎TOS的访问端点,例如 https://tos-cn-beijing.volces.com
|
||
# TOS_ENDPOINT=https://tos-cn-beijing.volces.com
|
||
|
||
# 火山引擎TOS的区域,例如 cn-beijing
|
||
# TOS_REGION=cn-beijing
|
||
|
||
# 火山引擎TOS访问密钥 Access Key
|
||
# TOS_ACCESS_KEY=your_tos_access_key
|
||
|
||
# 火山引擎TOS访问密钥 Secret Key
|
||
# TOS_SECRET_KEY=your_tos_secret_key
|
||
|
||
# 火山引擎TOS桶名称
|
||
# TOS_BUCKET_NAME=your_tos_bucket_name
|
||
|
||
# 火山引擎TOS可选路径前缀(可选)
|
||
# TOS_PATH_PREFIX=your_tos_path_prefix
|
||
|
||
# 火山引擎TOS临时桶名称(可选,用于存放自动过期临时文件)
|
||
# TOS_TEMP_BUCKET_NAME=your_tos_temp_bucket_name
|
||
|
||
# 火山引擎TOS临时桶区域(可选,默认与主桶相同)
|
||
# TOS_TEMP_REGION=your_tos_temp_region
|
||
|
||
# 如果使用AWS S3作为文件存储,需要配置以下参数
|
||
# AWS S3的访问端点,例如 https://s3.amazonaws.com
|
||
# S3_ENDPOINT=https://s3.amazonaws.com
|
||
|
||
# AWS S3的区域,例如 us-east-1
|
||
# S3_REGION=us-east-1
|
||
|
||
# AWS S3访问密钥 Access Key
|
||
# S3_ACCESS_KEY=your_s3_access_key
|
||
|
||
# AWS S3访问密钥 Secret Key
|
||
# S3_SECRET_KEY=your_s3_secret_key
|
||
|
||
# AWS S3桶名称
|
||
# S3_BUCKET_NAME=your_s3_bucket_name
|
||
|
||
# AWS S3可选路径前缀(可选)
|
||
# S3_PATH_PREFIX=your_s3_path_prefix
|
||
|
||
# 如果解析网络连接使用Web代理,需要配置以下参数
|
||
# WEB_PROXY=your_web_proxy
|
||
|
||
# Neo4j 开关
|
||
# NEO4J_ENABLE=false
|
||
|
||
# Neo4j的访问地址
|
||
# NEO4J_URI=neo4j://neo4j:7687
|
||
|
||
# Neo4j的用户名和密码
|
||
# NEO4J_USERNAME=neo4j
|
||
|
||
# Neo4j的密码
|
||
# NEO4J_PASSWORD=password
|
||
|
||
# ========== 文件上传大小限制 ==========
|
||
# 统一的文件大小限制(MB),默认为50MB
|
||
# 影响:单文件上传、gRPC消息大小、Nginx请求体大小
|
||
# MAX_FILE_SIZE_MB=50
|
||
|
||
# ========== Agent Skills Sandbox 配置 ==========
|
||
# Sandbox 模式: docker(默认), local, disabled
|
||
WEKNORA_SANDBOX_MODE=docker
|
||
|
||
# 脚本执行超时时间(秒),默认60
|
||
WEKNORA_SANDBOX_TIMEOUT=60
|
||
|
||
# 自定义 Sandbox Docker 镜像
|
||
WEKNORA_SANDBOX_DOCKER_IMAGE=wechatopenai/weknora-sandbox:latest
|
||
|
||
# ========== Agent 配置 ==========
|
||
# 智能体大模型调用默认超时时间(秒),默认 120
|
||
# 对于复杂的推理行为,建议调大此值(如 300 或 600)
|
||
# 注:此值为全局默认值。若单个智能体在数据库中配置了独立的 llm_call_timeout,则以智能体配置为准(优先级更高)。
|
||
# WEKNORA_AGENT_LLM_TIMEOUT=300
|
||
|
||
# APK 镜像源设置(可选)
|
||
APK_MIRROR_ARG=mirrors.tencent.com
|
||
|
||
# 如果使用Milvus作为向量存储,需要配置以下参数
|
||
# Milvus服务地址
|
||
# MILVUS_ADDRESS=milvus:19530
|
||
|
||
# Milvus集合名称,用于存储向量数据
|
||
# MILVUS_COLLECTION=weknora_embeddings
|
||
|
||
# Milvus向量搜索度量类型,支持 IP(默认)、COSINE、L2
|
||
# 注意:修改度量类型后需要重建collection才能生效
|
||
# MILVUS_METRIC_TYPE=IP
|
||
|
||
# Milvus 用户名(可选)
|
||
# MILVUS_USERNAME=your_milvus_username
|
||
|
||
# Milvus 密码(可选)
|
||
# MILVUS_PASSWORD=your_milvus_password
|
||
|
||
# Milvus 数据库名称(可选)
|
||
# MILVUS_DB_NAME=your_milvus_db_name
|
||
|
||
# Docreader 地址
|
||
DOCREADER_ADDR=docreader:50051
|
||
|
||
# Docreader 连接方式
|
||
DOCREADER_TRANSPORT=grpc
|
||
|
||
# Docreader 中 DOCX 解析的最大页数,默认 100
|
||
# 用于限制超大 Word 文档的解析开销;超过页数的内容将不会继续解析
|
||
# DOCREADER_DOCX_MAX_PAGES=100
|
||
|
||
# 如果使用Weaviate作为向量存储,需要配置以下参数
|
||
# 注意:容器内访问请使用 service:port(不要用 localhost,也不要用宿主机映射端口)
|
||
# Weaviate HTTP 地址(Docker 内:weaviate:8080;宿主机访问:localhost:9035)
|
||
# WEAVIATE_HOST=weaviate:8080
|
||
|
||
# Weaviate gRPC 地址(Docker 内:weaviate:50051;宿主机访问:localhost:50052)
|
||
# WEAVIATE_GRPC_ADDRESS=weaviate:50051
|
||
|
||
# Weaviate 架构模式
|
||
# WEAVIATE_SCHEME=http
|
||
|
||
# 是否开启认证(如果你在 weaviate 里启用了 APIKey/OIDC 认证,再把这里设为 true 并配置 WEAVIATE_API_KEY)
|
||
# WEAVIATE_AUTH_ENABLED=false
|
||
|
||
# API Key(可选)
|
||
# WEAVIATE_API_KEY=your_secret_key
|
||
|
||
# Weaviate 数据库名称(可选)
|
||
#WEAVIATE_COLLECTION=your_weaviate_db_name
|
||
|
||
# Tavily Search API Key(可选,启用 Tavily 网页搜索提供者)
|
||
# TAVILY_API_KEY=tvly-your_tavily_api_key
|
||
|
||
# ----- OIDC Auth -----
|
||
# 如果需要启用OIDC登录,设为true并填写后续字段
|
||
# OIDC_AUTH_ENABLE=false
|
||
|
||
# (Optional) 用于OIDC自动发现端点配置
|
||
# OIDC_AUTH_ISSUER_URL=http://127.0.0.1:5556/dex
|
||
# OIDC_AUTH_DISCOVERY_URL=http://127.0.0.1:5556/dex/.well-known/openid-configuration
|
||
|
||
# OIDC_AUTH_PROVIDER_DISPLAY_NAME=OIDC
|
||
# OIDC_AUTH_CLIENT_ID=client_id_for_oidc_client
|
||
# OIDC_AUTH_CLIENT_SECRET=secret_for_oidc_client
|
||
|
||
# (Optional) OIDC 端点配置, 如果上面的OIDC_AUTH_DISCOVERY_URL填过了,下面的这些可以留空
|
||
# OIDC_AUTH_AUTHORIZATION_ENDPOINT=http://127.0.0.1:5556/dex/auth
|
||
# OIDC_AUTH_TOKEN_ENDPOINT=http://127.0.0.1:5556/dex/token
|
||
# OIDC_AUTH_USER_INFO_ENDPOINT=http://127.0.0.1:5556/dex/userinfo
|
||
|
||
# OIDC_AUTH_SCOPES="openid profile email"
|
||
|
||
# 用于OIDC用于信息中提取用户数据
|
||
# OIDC_USER_INFO_MAPPING_USER_NAME=name
|
||
# OIDC_USER_INFO_MAPPING_EMAIL=email |