Skip to main content
Dify 企业版通过 Helm 部署,大多数变量在 values.yaml 文件中配置。Helm chart 会将一组固定变量写入 API、web、worker 和 enterprise 这几个 ConfigMap(默认值取自 values.yaml),其余 Dify 应用变量则通过各服务的 extraEnv 字段暴露。
此处列出的变量仅供参考。Dify 应用读取的变量远多于 Helm chart 直接设置的部分。完整的应用级变量列表见上游 .env.example。任何未在 values.yaml 中设置的变量都可通过 extraEnv 添加(见 常见问题)。如果在 values.yaml 中找不到某个变量,通过 extraEnv 设置即可。
标注为 (Helm default) 的默认值是 chart 从 values.yaml 写入 ConfigMap 的值。其余默认值均为 Dify 应用的内置默认值,在变量未通过 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 管理该值。
部署后更改此密钥会立即登出所有用户、使所有文件 URL 失效,并破坏所有使用 OAuth 的插件集成,因为它们的加密凭据将无法恢复。

KEY_PROVIDER_TYPE

默认值:local 选择工作空间凭据加密密钥的存储方式。凭据包括模型供应商和工具的密钥:
  • local:将各工作空间的 RSA 私钥存入 STORAGE_TYPE 指定的存储后端。
  • azure-keyvault:将工作空间的 RSA 密钥存入 Azure Key Vault。私钥保留在密钥保管库中,通过 Azure DefaultAzureCredential 进行身份验证。
在创建凭据前选定密钥提供方。已有部署切换提供方后,新提供方无法读取原有凭据,系统也不会自动迁移这些凭据。
Dify 应用各服务与 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 协议实现)。
默认存储后端,基于 Apache OpenDAL,提供支持多种存储服务的统一接口。Dify 会自动扫描匹配 OPENDAL_<SCHEME>_* 的环境变量并传给 OpenDAL。例如当 OPENDAL_SCHEME=s3 时,设置 OPENDAL_S3_ACCESS_KEY_ID、OPENDAL_S3_SECRET_ACCESS_KEY 等。所有可用协议及其配置选项,见 OpenDAL 服务文档。
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。
seekdb 是 OceanBase 的精简版,使用相同的连接配置。

知识库配置

标注导入

模型配置

多模态配置

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(见 通用变量)。
三种 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 文档。

其他配置

索引

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 配置。
将上述两个 Docker Compose 放行变量加入 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 上。
Dify Enterprise 3.13.0 用 DEPLOYMENT_EDITION(取值 ENTERPRISE 或 COMMUNITY)替代了 ENTERPRISE_ENABLED。chart 会自动设置新变量;升级时请同步更新仍引用 ENTERPRISE_ENABLED 的 extraEnv 条目、自定义 overlay 或自动化脚本。

部署环境(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 匹配的那个供应商。

常见问题

如何设置 values.yaml 中没有的变量?

通过需要该变量的服务(api、worker 或 web)的 extraEnv 字段添加。例如,在 API 服务上设置两个变量:
同样的方式适用于 worker.extraEnv 和 web.extraEnv。在每个读取该变量的服务上都设置一遍。

如何配置 HTTP_PROXY 和 HTTPS_PROXY?

出于安全考虑,你可能需要让 Dify API 服务的出站流量经由代理路由。使用 extraEnv 字段: