# 使用说明 # 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 # 时区设置,默认为 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