values.yaml 文件中配置。Helm chart 会将一组固定变量写入 API、web、worker 和 enterprise 这几个 ConfigMap(默认值取自 values.yaml),其余 Dify 应用变量则通过各服务的 extraEnv 字段暴露。
此处列出的变量仅供参考。Dify 应用读取的变量远多于 Helm chart 直接设置的部分。完整的应用级变量列表见上游
.env.example。任何未在 values.yaml 中设置的变量都可通过 extraEnv 添加(见 常见问题)。如果在 values.yaml 中找不到某个变量,通过 extraEnv 设置即可。通用变量
以下 URL 变量用于配置 Dify 各服务的公开地址。Helm chart 根据values.yaml 中的域名设置(global.consoleApiDomain、global.consoleWebDomain 等)推导这些变量,因此通常设置域名即可,无需直接设置变量。
CONSOLE_API_URL
默认值:由global.consoleApiDomain 推导
Dify 后端 API 的公开 URL。用于构造 OAuth 授权回调(GitHub、Google 登录)、Notion 集成,以及任何需要 OAuth 的插件。同时决定是否使用安全(仅 HTTPS)Cookie。
范例:https://api.console.dify.ai
CONSOLE_WEB_URL
默认值:由global.consoleWebDomain 推导
Dify 控制台前端的公开 URL。用于构造所有系统邮件(邀请、密码重置、通知)中的链接,并在 OAuth 登录后将用户重定向回控制台。当 CONSOLE_CORS_ALLOW_ORIGINS 未设置时,它还作为默认的 CORS 允许来源。
范例:https://console.dify.ai
SERVICE_API_URL
默认值:由global.serviceApiDomain 推导
控制台中向开发者展示的 API Base URL,即开发者复制到代码里调用 Dify API 的地址。当服务器可通过多个地址访问时,设置该变量可确保 URL 一致。
范例:https://api.dify.ai
APP_API_URL
默认值:由global.appApiDomain 推导
WebApp 前端(已发布应用)使用的后端 API URL。该变量由 web 前端容器使用,而非 Python 后端。
范例:https://api.app.dify.ai
APP_WEB_URL
默认值:由global.appWebDomain 推导
已发布 WebApp 的公开访问 URL。工作流中的 Human Input 节点必须设置此项:邮件通知里的表单链接按 {APP_WEB_URL}/form/{token} 构造。若为空,Human Input 邮件将无法包含有效的表单链接。
范例:https://app.dify.ai
TRIGGER_URL
默认值:由global.triggerDomain 推导
Webhook 和集成触发端点的公开访问 URL。外部系统通过该地址调用你的工作流。Dify 按 {TRIGGER_URL}/triggers/webhook/{id} 构造触发器回调 URL 并在控制台中展示。要让触发器正常工作,此项必须指向外部系统可访问的公开域名或 IP。
FILES_URL
默认值:由global.filesDomain 推导
文件预览与下载链接的基础 URL。Dify 为所有文件(上传的文档、工具输出、工作空间 Logo)生成带签名、有时效的 URL,并提供给前端和多模态模型。为防止伪造,文件 URL 经过签名并会过期(见 FILES_ACCESS_TIMEOUT)。
范例:https://upload.example.com
INTERNAL_FILES_URL
默认值:(为空;回退到FILES_URL)
集群内部服务之间通信所用的文件访问 URL(例如插件守护进程和文档提取器)。若外部 FILES_URL 通过 ingress 或公开域名路由,内部服务可能无法访问。当内部服务无法访问外部 URL 时,通过 extraEnv 设置此项。
范例:http://dify-api-svc:5001
FILES_ACCESS_TIMEOUT
默认值:300(5 分钟)
签名文件 URL 的有效时长(秒)。超过该时间后 URL 会被拒绝,文件需重新请求。长耗时流程可调大;追求更严格的安全性可调小。
服务器配置
日志
通用
SECRET_KEY
默认值:由 chart 设置(见你部署的 secret 配置) 用于会话 Cookie 签名、JWT 鉴权令牌、文件 URL 签名(HMAC-SHA256),以及加密第三方 OAuth 凭据(AES-256)。Helm chart 通过一个 secret 管理该值。KEY_PROVIDER_TYPE
默认值:local
选择工作空间凭据加密密钥的存储方式。凭据包括模型供应商和工具的密钥:
local:将各工作空间的 RSA 私钥存入STORAGE_TYPE指定的存储后端。azure-keyvault:将工作空间的 RSA 密钥存入 Azure Key Vault。私钥保留在密钥保管库中,通过 AzureDefaultAzureCredential进行身份验证。
plugin_manager 的 KEY_PROVIDER_TYPE 必须保持一致。使用 Azure 时,AZURE_KEYVAULT_VAULT_URL 也须一致。通过 api.extraEnv、worker.extraEnv、workerBeat.extraEnv 和 plugin_manager.extraEnv 配置。additionalWorkers 中的每个 worker 也需要在自身的 extraEnv 中设置这些变量,不会继承 worker.extraEnv。
使用 azure-keyvault 时,配置以下变量:
Token 与请求限制
Worker 配置
Helm chart 通过values.yaml 而非环境变量管理 worker 数量。serverWorkerAmount 控制 API Gunicorn worker 数,celeryWorkerAmount 控制每个 worker 部署的 Celery worker 数。请在 values.yaml 中设置。
API Tool 配置
数据库配置
Helm chart 通过values.yaml 和共享的数据库 ConfigMap 配置主数据库连接(主机、端口、凭据、数据库名),而非通过各个 DB_* 变量。下列变量用于调优应用的连接池,可通过 extraEnv 设置。
Redis 配置
Helm chart 通过values.yaml(共享的 Redis 配置)配置 Redis 连接。应用支持单机、Sentinel 和 Cluster 三种模式。下列变量是应用级调节项;在 Helm 部署中,优先使用 chart 的 Redis 设置,调优时再用 extraEnv。
Redis SSL 配置
仅在REDIS_USE_SSL=true 时生效。
Redis 连接弹性
Celery 配置
Helm chart 通过values.yaml 和共享的 Celery secret 管理 Celery broker 连接。下列变量是应用级调优项。
CORS 配置
控制前端的跨域访问策略。chart 仅在values.yaml 中设置时才写入这些变量。
文件存储配置
配置 Dify 存放上传文件、知识库文档和加密密钥的位置。每种存储类型都有各自的凭据变量,只需配置你使用的那种。在 Helm 部署中,除非 chart 已暴露,否则通过extraEnv 设置。
STORAGE_TYPE
默认值:opendal
选择文件存储后端。支持的值:opendal、s3、azure-blob、aliyun-oss、google-storage、huawei-obs、volcengine-tos、tencent-cos、baidu-obs、oci-storage、supabase、clickzetta-volume、local(已弃用;内部通过 OpenDAL 的 filesystem 协议实现)。
OpenDAL(默认)
OpenDAL(默认)
默认存储后端,基于 Apache OpenDAL,提供支持多种存储服务的统一接口。Dify 会自动扫描匹配
OPENDAL_<SCHEME>_* 的环境变量并传给 OpenDAL。例如当 OPENDAL_SCHEME=s3 时,设置 OPENDAL_S3_ACCESS_KEY_ID、OPENDAL_S3_SECRET_ACCESS_KEY 等。所有可用协议及其配置选项,见 OpenDAL 服务文档。
S3
S3
Azure Blob
Azure Blob
Google Cloud Storage
Google Cloud Storage
Alibaba Cloud OSS
Alibaba Cloud OSS
Tencent Cloud COS
Tencent Cloud COS
OCI Object Storage
OCI Object Storage
Huawei OBS
Huawei OBS
Volcengine TOS
Volcengine TOS
Baidu OBS
Baidu OBS
Supabase
Supabase
ClickZetta Volume
ClickZetta Volume
ClickZetta Volume 复用 Vector Database 部分配置的
CLICKZETTA_* 连接参数。归档存储
用于归档工作流运行日志的独立 S3 兼容存储。把超过保留期的工作流运行记录归档为 JSONL 格式。向量数据库配置
配置用于知识库嵌入存储和相似度搜索的向量数据库。每个供应商都有各自的凭据变量,只需配置你使用的那个。VECTOR_STORE
默认值:weaviate
选择向量数据库后端。如果某个数据集已建立索引,该数据集存储的类型优先于此设置。
支持的值:weaviate、oceanbase、seekdb、qdrant、milvus、myscale、relyt、pgvector、pgvecto-rs、chroma、opensearch、oracle、tencent、elasticsearch、elasticsearch-ja、analyticdb、couchbase、vikingdb、opengauss、tablestore、vastbase、tidb、tidb_on_qdrant、baidu、lindorm、huawei_cloud、upstash、matrixone、clickzetta、alibabacloud_mysql、iris、hologres。
Weaviate
Weaviate
OceanBase / seekdb
OceanBase / seekdb
seekdb 是 OceanBase 的精简版,使用相同的连接配置。
Qdrant
Qdrant
Milvus
Milvus
MyScale
MyScale
Couchbase
Couchbase
Hologres
Hologres
PGVector
PGVector
Vastbase
Vastbase
PGVecto.RS
PGVecto.RS
AnalyticDB
AnalyticDB
TiDB Vector
TiDB Vector
MatrixOne
MatrixOne
Chroma
Chroma
Oracle
Oracle
AlibabaCloud MySQL
AlibabaCloud MySQL
Relyt
Relyt
OpenSearch
OpenSearch
Tencent Cloud VectorDB
Tencent Cloud VectorDB
Elasticsearch
Elasticsearch
Baidu Vector DB
Baidu Vector DB
VikingDB
VikingDB
Lindorm
Lindorm
OpenGauss
OpenGauss
Huawei Cloud Search
Huawei Cloud Search
Upstash Vector
Upstash Vector
TableStore
TableStore
ClickZetta
ClickZetta
InterSystems IRIS
InterSystems IRIS
知识库配置
标注导入
模型配置
多模态配置
Sentry 配置
Sentry 提供错误跟踪和性能监控。在 Helm 部署中,通过values.yaml(api.sentry、worker.sentry、web.sentry)按服务启用 Sentry。
Notion 集成配置
将 Dify 连接到 Notion 作为知识库数据源。在 https://www.notion.so/my-integrations 获取集成凭据。邮件配置
Dify 会为账户邀请、密码重置、登录验证码和 Human Input 节点通知发送邮件。配置三种受支持的服务商之一。邮件链接要求设置CONSOLE_WEB_URL(见 通用变量)。
Resend
Resend
SMTP
SMTP
三种 TLS 模式:隐式 TLS(
SMTP_USE_TLS=true、SMTP_OPPORTUNISTIC_TLS=false、端口 465)、STARTTLS(SMTP_USE_TLS=true、SMTP_OPPORTUNISTIC_TLS=true、端口 587)或明文(SMTP_USE_TLS=false、端口 25)。SendGrid
SendGrid
更多细节见 SendGrid 文档。
其他配置
索引
Token 与邀请
所有 token 过期变量都控制存于 Redis 的一次性令牌保持有效的时长。过期后用户须重新申请新令牌。代码执行沙箱
沙箱是一个独立服务,在隔离环境中运行 Python、JavaScript 和 Jinja2 代码节点。chart 会自动将CODE_EXECUTION_ENDPOINT 指向集群内的沙箱服务。
工作流运行时
工作流追踪
这些设置用于 API 和 worker 中的工作流追踪集成,与 OpenTelemetry 遥测配置相互独立。
启用统一追踪后,
OPS_TRACE_PARENT_CONTEXT_TTL_SECONDS 不得小于 OPS_TRACE_RETRYABLE_DISPATCH_MAX_RETRIES 与 OPS_TRACE_RETRYABLE_DISPATCH_DELAY_SECONDS 的乘积,否则无法通过应用配置校验。
重试间隔默认为 5 秒,可通过 extraEnv 修改。使用默认重试次数和间隔时,父级上下文至少需保留 780 × 5 = 3900 秒。
工作流存储仓库
以下变量选择由哪个后端实现处理工作流执行数据。默认的 SQLAlchemy 仓库将所有内容存于数据库。GraphEngine Worker 池
工作流日志清理
chart 通过workerBeat.enableWorkflowLogCleanup 启用此功能,它会在 beat ConfigMap 上设置 WORKFLOW_LOG_CLEANUP_ENABLED。其余变量不由 chart 设置,请通过 worker 和 beat 服务的 extraEnv 配置。
HTTP Request 节点
以下变量用于配置工作流中调用外部 API 的 HTTP Request 节点。Webhook
SSRF 防护
Dify 所有出站 HTTP 请求(HTTP 节点、图片下载等)都经由一个代理路由,该代理会拦截发往内部/私有 IP 段的请求,防止服务端请求伪造(SSRF)攻击。启用 SSRF 代理时,chart 会自动设置SSRF_PROXY_HTTP_URL 和 SSRF_PROXY_HTTPS_URL。
Helm 部署在
values.yaml 中配置 SSRF 代理策略:
- 代码执行节点的沙箱使用
ssrfProxy.squidConf。API 和 worker 经由同一代理发送的请求也受此策略控制。 - 由 Sandbox Gateway 管理的 Agent 沙箱使用独立策略,通过
sandboxGateway.ssrfProxy.squidConf配置。
ssrfProxy.extraEnv 不会改变代理策略。
Agent 配置
UPLOAD_SKILL_FILE_SIZE_LIMIT
默认值:50
导入 Skill 库或作为内嵌 Skill 上传到 Agent 的 .zip 或 .skill 包的最大大小(MiB)。通过 api.limits.uploadSkillFileSize 设置。
Dify CLI 与编程 API
Web 前端服务
以下变量仅由 Next.js web 前端容器使用,不影响 Python 后端。企业版专属配置
以下变量仅适用于 Dify 企业版。当enterprise.enabled 为 true 时,Helm chart 会将它们设置到 API 和 worker 的 ConfigMap 上。
部署环境(App Runner)
以下变量用于配置 部署环境,也就是你在企业管理后台的 环境管理 中创建、再把应用部署进去的那些环境。 Enterprise 服务会在 Kubernetes 中创建 App Runner 工作负载,用来运行各环境中的应用。共享 模式的环境只有一个工作负载,承载其中所有应用;隔离 模式下,每个应用各有一个工作负载。 chart 会将这些变量写入 enterprise 的 ConfigMap 和 Secret。它们不影响工作室中的运行,也不影响应用的内置环境(你发布的版本直接在此上线)。这两者运行在 API 和 worker 上,由本页其余部分的变量控制。 安装或升级前,把enterprise.appRunner.controlSigningKey 和 enterprise.webappPassportSigningKey 中的占位值 #REPLACE_ME# 替换为你自己的密钥。使用 ExternalSecret 时,把这两个密钥添加到 global.externalSecret.remoteKey 指定的远程 Secret(默认为 dify)中,属性名分别为 enterprise.appRunner.controlSigningKey 和 enterprise.webappPassportSigningKey。
有两个配置项限制单次运行的最长时间,分别适用于不同的运行:
- 部署环境中的运行:
enterprise.workflowMaxExecutionTimeSeconds,默认1200秒(20 分钟)。 - 工作室中的运行和内置环境:
api.workflowMaxExecutionTimeSeconds,默认3600秒(60 分钟)。
WORKFLOW_MAX_EXECUTION_TIME,但分属不同的 ConfigMap,改一个不会影响另一个。由于默认值不同,在工作室中能跑完的工作流,部署后仍可能中途停止。运行时间较长的工作流,请先在部署环境中测试,再投入使用。
以下变量由 chart 生成,无需配置:
App Runner 遥测
chart 只在global.otel.enabled 和 enterpriseCollector.enabled 均为 true 时设置以下变量,这两项默认都已开启。任一项关闭,App Runner 工作负载就不会发送遥测数据。
企业版遥测
用于企业版审计和追踪的 OpenTelemetry 导出。当enterprise.enabled 和 global.otel.enabled 均为 true 时,chart 会启用这些变量,并将端点接入集群内的企业版收集器。
模型供应商与工具排序配置
自定义应用界面中可用的工具和模型供应商及其显示顺序。使用逗号分隔的值,各项之间不加空格。chart 从values.yaml 中的 api.positionTool 和 api.positionProvider 写入这些变量。
插件守护进程配置
插件守护进程是一个独立服务,管理插件生命周期(安装、执行、升级)。启用插件守护进程时,chart 会自动设置守护进程 URL、密钥和市场相关设置。Agent Backend 配置
以下变量设置在 agent-backend 服务上,该服务为 Agent 功能提供支撑。完整部署方式见 Agent Sandbox 部署。Agent 快照与文件传输超时
这些超时设置控制请求和文件传输的等待时间,与 Agent 的运行时限相互独立。所有值的单位均为秒,且必须大于0;调高后,系统会等待更久才判定超时。
DIFY_AGENT_BINDING_FILE_DOWNLOAD_COMMAND_TIMEOUT_SECONDS 应大于 CLI 的上传时限 180 秒,且小于 AGENT_BACKEND_BINDING_FILE_DOWNLOAD_TIMEOUT_SECONDS。
Agent 后端 HTTP 客户端
这些设置用于 Agent 后端访问 Dify API 和插件守护进程的 HTTP 客户端。每个客户端有独立的连接池,使用该客户端的 Agent 运行共享这一连接池。
延长超时时间可给较慢的操作留出更多时间,但超时报错也会相应推迟。提高连接数上限可减少等待空闲连接的时间,但会增加目标服务的并发负载。保留更多空闲连接或延长保留时间有利于复用,同时也会持续占用资源。
OTLP / OpenTelemetry 配置
应用级 OpenTelemetry 埋点(区别于上面的企业版遥测)。启用时,Dify 会对 Flask 进行埋点并将遥测数据导出到 OTLP 收集器。杂项
定时任务配置
Dify 使用 Celery Beat 按可配置的计划运行后台维护任务。 通过workerBeat.conversationCleanup.enabled 启用或禁用会话清理任务。执行间隔通过 workerBeat.conversationCleanup.intervalMinutes 设置,批次大小通过 workerBeat.conversationCleanup.batchSize 设置。chart 会将这些设置应用于 API、所有 worker 和 Celery Beat。
记录保留与清理
阿里云 SLS Logstore 配置
与阿里云日志服务(SLS)的可选集成,将工作流执行日志存于外部而非数据库。事件总线配置
API 与 Celery worker 之间基于 Redis 的事件传输。插件守护进程存储配置
插件守护进程可将插件包存于不同的存储后端。只需配置与PLUGIN_STORAGE_TYPE 匹配的那个供应商。
Plugin S3 Storage
Plugin S3 Storage
Plugin Azure Blob Storage
Plugin Azure Blob Storage
Plugin Tencent COS Storage
Plugin Tencent COS Storage
Plugin Aliyun OSS Storage
Plugin Aliyun OSS Storage
Plugin Volcengine TOS Storage
Plugin Volcengine TOS Storage
常见问题
如何设置 values.yaml 中没有的变量?
通过需要该变量的服务(api、worker 或 web)的 extraEnv 字段添加。例如,在 API 服务上设置两个变量:
worker.extraEnv 和 web.extraEnv。在每个读取该变量的服务上都设置一遍。
如何配置 HTTP_PROXY 和 HTTPS_PROXY?
出于安全考虑,你可能需要让 Dify API 服务的出站流量经由代理路由。使用 extraEnv 字段: