跳转到主要内容
本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。
Dify 使用默认配置即可开箱即用。如需自定义部署,编辑相关文件中的环境变量:
  • 必要的启动值 位于 docker/.env 文件中(部署时从 docker/.env.example 复制创建)。直接编辑即可。
  • 可选或特定提供商的设置 在 docker/envs/ 下有对应模板。要覆盖默认值,复制相应模板(去掉 .example 后缀),然后编辑副本。例如:
docker/.env 中的值优先于任何 docker/envs/*.env 文件中的值。
升级 Dify 后,对照各 .env.example 文件检查对应的 .env,确认是否有新增或变更的变量。

通用变量

这些 URL 变量用于配置 Dify 各服务的访问地址。 对于 Nginx 后的单域名部署(默认 Docker Compose 配置),这些变量可以留空,系统会从请求中自动检测。当使用自定义域名、多域名部署或反向代理时,需要配置这些变量。

CONSOLE_API_URL

默认值:(空) Dify 后端 API 的公开 URL。如果你使用 OAuth 登录(GitHub、Google)、Notion 集成或任何需要 OAuth 的插件,请设置此变量;这些功能需要绝对回调 URL 才能在授权后将用户重定向回来。此变量还决定是否使用安全(仅 HTTPS)Cookie。 示例:https://api.console.dify.ai

SERVER_CONSOLE_API_URL

默认值:http://api:5001 Web 前端容器在服务端发起请求时所使用的 Console API 地址,经由 Docker 内部网络直接访问,而非通过你的公网域名。此变量仅由 Web 前端容器使用,不影响 Python 后端;浏览器端请求仍使用 CONSOLE_API_URL。若留空,则回退到 CONSOLE_API_URL。仅当 API 服务的内部访问地址不同时才需修改。

CONSOLE_WEB_URL

默认值:(空) Dify 控制台前端的公开 URL。用于构建所有系统邮件(邀请、密码重置、通知)中的链接,以及 OAuth 登录后将用户重定向回控制台。如果未设置 CONSOLE_CORS_ALLOW_ORIGINS,此变量也作为默认的 CORS 允许来源。 如果为空,邮件链接将无法正常工作;即使在单域名部署中,使用邮件功能时也需要设置此变量。 示例:https://console.dify.ai

SERVICE_API_URL

默认值:(空) 在 Dify 控制台中展示给开发者的 API Base URL,即他们复制到代码中用于调用 Dify API 的 URL。如果为空,将从当前请求自动检测(例如 http://localhost/v1)。当你的服务器可通过多个地址访问时,设置此变量以确保 URL 一致。 示例:https://api.dify.ai

APP_API_URL

默认值:(空) Web 应用前端(已发布应用)的后端 API URL。此变量仅由 Web 前端容器使用,不影响 Python 后端。如果为空,Docker 镜像默认使用 http://127.0.0.1:5001。 示例:https://api.app.dify.ai

APP_WEB_URL

默认值:(空) 已发布 Web 应用的公开访问 URL。工作流中的 人工输入节点 需要此变量;邮件通知中的表单链接以 {APP_WEB_URL}/form/{token} 格式构建。如果为空,人工输入邮件将不包含有效的表单链接。 示例:https://app.dify.ai

TRIGGER_URL

默认值:http://localhost Webhook 和集成触发端点的公开访问 URL。外部系统使用此地址来调用你的工作流。Dify 构建触发回调 URL 格式为 {TRIGGER_URL}/triggers/webhook/{id} 并在控制台中展示。 要使触发器能从外部系统正常工作,此变量必须指向它们可以访问的公共域名或 IP 地址。

FILES_URL

默认值:(空;回退到 CONSOLE_API_URL) 文件预览和下载链接的基础 URL。Dify 为所有文件(上传的文档、工具输出、工作空间 Logo)生成签名的限时 URL,并提供给前端和多模态模型使用。 如果你使用文件处理插件,或希望文件 URL 使用专用域名,请设置此变量。如果 FILES_URL 和 CONSOLE_API_URL 都为空,文件预览将无法工作。 示例:https://upload.example.com 或 http://<your-ip>:5001

INTERNAL_FILES_URL

默认值:(空;回退到 FILES_URL) Docker 网络内部服务间通信使用的文件访问 URL(例如插件守护进程、PDF/Word 提取器)。这些内部服务可能无法通过 Nginx 或公共域名访问外部的 FILES_URL。 如果为空,内部服务使用 FILES_URL。当内部服务无法访问外部 URL 时,请设置此变量。 示例:http://api:5001

FILES_ACCESS_TIMEOUT

默认值:300(5 分钟) 签名文件 URL 的有效时长(秒)。超过此时间后 URL 将被拒绝,文件需要重新请求。对于长时间运行的流程可以增大此值;对于更严格的安全要求可以减小此值。

ENABLE_COLLABORATION_MODE

默认值:true 启用工作流画布的实时协作功能:多人同时编辑、画布评论以及 @ 提及。 如果用户通过 localhost 以外的主机访问 Dify,将 NEXT_PUBLIC_SOCKET_URL 设置为浏览器可访问的 WebSocket URL(参见 CORS 配置)。默认值 ws://localhost 仅适用于本地访问场景。 如需禁用协作功能,将此值设为 false。使用 Docker Compose 时,还需从 COMPOSE_PROFILES 中移除 collaboration,否则专用的 api_websocket 容器会持续运行但无任何流量。 如果使用自己的反向代理,需在 /socket.io/ 路径上转发 Upgrade 与 Connection 请求头(Dify 自带的 nginx 模板已包含此配置)。多 API 副本部署需启用会话保持(sticky sessions)。 如果协作者编辑大型工作流时编辑器反复断开重连,可调高 WEBSOCKET_MAX_HTTP_BUFFER_SIZE。

系统编码

服务器配置

日志

常规

SECRET_KEY

默认值:(在 .env.example 中预填充;生产环境必须替换) 用于会话 Cookie 签名、JWT 认证令牌、文件 URL 签名(HMAC-SHA256)以及加密第三方 OAuth 凭证(AES-256)。首次启动前请生成一个强密钥:
部署后更改此密钥将立即使所有用户登出、使所有文件 URL 失效,并破坏使用 OAuth 的插件集成,其加密凭证将无法恢复。

PASSWORD_PEPPER

默认值:(空) 服务端密钥,Dify 会将其混入成员的登录密码。这样即使数据库泄露,仅凭其中的数据也无法破解密码。留空则一切照旧。 如需启用,请在首次安装时、创建管理员账户之前设置此变量。取值应为高熵随机值,例如用以下命令生成:
使用 Docker Compose 部署时,在 docker/envs/core-services/api.env 中设置(如尚未创建该文件,可从 api.env.example 复制)。不要写在 docker/.env 中,因为 Compose 也会把该文件中的变量传给 Worker、插件守护进程、Agent 后端、Web 前端和代码沙箱。源码部署则在 api/.env 中设置。
已有账户后再设置、修改或移除该值,这些账户用现有密码登录时都会提示密码无效。若是误操作,改回原值即可,其间未重置的密码都会恢复可用。请像保管 SECRET_KEY 一样妥善保管该值。
已有账户的部署若要启用,事后需确保每位成员都能重新登录:
  • 在 API 容器中运行 flask reset-password,逐个重置账户密码。完整命令详见 重置管理员密码。
  • 让成员通过「忘记密码」邮件自行重置密码,前提是已配置 邮件发送。
  • 如果启用了 ENABLE_EMAIL_CODE_LOGIN,成员也可改用邮件验证码登录。

KEY_PROVIDER_TYPE

默认值:local 决定 Dify 把加密存储凭证(模型供应商 API 密钥、工具凭证等工作空间机密)所用的密钥保存在哪里:
  • local:为每个工作空间生成一对 RSA 密钥,私钥保存在 STORAGE_TYPE 对应的存储后端中。
  • azure-keyvault:将每个工作空间的 RSA 密钥保存在 Azure Key Vault 中,私钥不会离开 Key Vault。Dify 通过 DefaultAzureCredential(托管身份、环境变量或 Azure CLI 登录)完成认证。
在创建第一个工作空间前确定密钥提供方。两种提供方加密的凭证互不兼容,在已存有凭证的部署上切换会导致这些凭证无法解密,只能重新录入。

INIT_PASSWORD

默认值:(空) 首次安装时的可选安全门控。设置后,/install 页面在创建管理员账户前需要输入此密码,防止服务器暴露时被未授权设置。安装完成后此变量不再生效。最大长度:30 个字符。

令牌与请求限制

容器启动配置

仅在使用 Docker 镜像或 Docker Compose 启动时生效。

MODE

默认值:worker(worker 服务 env 文件的预置值;完全未设置该变量时,容器运行 API 服务) 决定 dify-api 镜像在容器启动时运行的进程。三个 env 示例文件分别为各自服务固定取值:worker.env.example 为 worker,api.env.example 为 api,worker-beat.env.example 为 beat。可选值:
  • api(空值或无法识别的值同样生效):API 服务
  • worker:Celery 任务消费进程
  • beat:定时任务调度进程
  • job:执行一条 Flask CLI 命令后退出
  • migration:配合 MIGRATION_ENABLED=true,完成数据库迁移后退出
自带的 Compose 文件已为每个服务固定正确的值,只有 Kubernetes 等自定义部署才需要设置。配置错误会让容器运行错误的进程:没有 worker 时,索引和邮件任务会一直排队。

API 工具配置

数据库配置

数据库默认使用 PostgreSQL。同时支持 OceanBase、MySQL 和 seekdb。

连接池

这些变量控制 Dify 管理数据库连接池的方式。默认配置适用于大多数部署。

PostgreSQL 性能调优

这些变量作为启动参数传递给 PostgreSQL 容器,配置的是数据库服务器,而非 Dify 应用。

MySQL 性能调优

这些变量作为启动参数传递给 MySQL 容器,配置的是数据库服务器,而非 Dify 应用。

Redis 配置

配置这些变量以将 Dify 连接到你的 Redis 实例。Dify 支持三种部署模式:单机(默认)、哨兵和集群。

Redis SSL 配置

仅在 REDIS_USE_SSL=true 时适用。当 Celery broker URL 使用 rediss:// 协议时,这些设置也适用于 Celery broker。

Redis 哨兵模式

哨兵提供自动主节点发现和故障转移以实现高可用。与集群模式互斥。

Redis 集群模式

集群模式提供跨多个 Redis 节点的自动分片。与哨兵模式互斥。

Redis 连接健壮性配置

以下变量用于调节 Redis 连接的客户端重试、超时和健康检查行为。默认值较为保守;在网络延迟较高的云或广域网环境中,建议适当增大超时值。

Celery 配置

配置用于数据集索引、邮件发送和定时任务的后台任务队列。

CELERY_BROKER_URL

默认值:redis://:difyai123456@redis:6379/1 Celery 消息代理的 Redis 连接 URL。 直连格式:
哨兵模式格式(多个节点用分号分隔):

CORS 配置

控制前端的跨域访问策略。

Dify CLI 与编程 API

/openapi/v1/* 是面向用户的编程 API,Dify CLI(difyctl)等客户端通过 OAuth Bearer Token 访问。该接口默认关闭:将 OPENAPI_ENABLED 和 ENABLE_OAUTH_BEARER 都设为 true 后,CLI 才能连接你的部署。

文件存储配置

配置 Dify 存储上传文件、数据集文档和加密密钥的位置。每种存储类型有各自的凭证变量,仅配置你使用的那种。

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 的文件系统方案)。
使用 Apache OpenDAL 的默认存储后端,一个支持众多存储服务的统一接口。Dify 自动扫描匹配 OPENDAL_<SCHEME>_* 的环境变量并传递给 OpenDAL。例如,使用 OPENDAL_SCHEME=s3 时,设置 OPENDAL_S3_ACCESS_KEY_ID、OPENDAL_S3_SECRET_ACCESS_KEY 等。对于默认的 fs 方案:有关所有可用方案及其配置选项,请参阅 OpenDAL 服务文档。
ClickZetta Volume 复用向量数据库部分配置的 CLICKZETTA_* 连接参数。

归档存储

用于归档工作流运行日志的独立 S3 兼容存储。archive-workflow-runs 维护命令将超过指定期限的工作流运行打包为按月的 Parquet 归档包;由归档生成的 CSV 导出文件暂存于导出存储桶。

向量数据库配置

配置用于知识库嵌入存储和相似性搜索的向量数据库。每个提供商有各自的凭证变量,仅配置你使用的那个。

VECTOR_STORE

默认值:weaviate 选择向量数据库后端。如果数据集已有索引,数据集存储的类型优先于此设置。在 Docker Compose 中切换提供商时,COMPOSE_PROFILES 会根据此值自动启动匹配的容器。 支持的值: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 的轻量版本,共享相同的连接配置。

知识库配置

标注导入

模型配置

多模态配置

所有上传大小限制还受 NGINX_CLIENT_MAX_BODY_SIZE(默认 100M)限制。如果你将任何上传限制增大到超过 100 MB,还需要相应增大 NGINX_CLIENT_MAX_BODY_SIZE,否则 Nginx 会以 413 错误拒绝上传。

Sentry 配置

Sentry 提供错误跟踪和性能监控。每个服务有各自的 DSN 以分离错误报告。

Notion 集成配置

将 Dify 连接到 Notion 作为知识库数据源。在 https://www.notion.so/my-integrations 获取集成凭证。

邮件配置

Dify 发送邮件用于账户邀请、密码重置、登录验证码和人工输入节点通知。配置三个支持的提供商之一。邮件链接需要设置 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 文档。

其他配置

控制台功能

认证与账户

默认情况下,用户以邮箱和密码登录,新账户通过工作空间邀请或初始设置向导创建。以下开关可放宽或收紧这一策略。

LLMOps 追踪投递

应用运行的追踪数据由后台任务投递给所配置的 LLMOps 供应商(Langfuse、LangSmith、Arize/Phoenix 等)。使用 Docker Compose 部署时,在 docker/envs/core-services/shared.env 中设置这些变量。

索引

新用户默认配置

工作流生成

令牌与邀请

所有令牌过期变量控制存储在 Redis 中的一次性令牌的有效时长。过期后用户必须请求新令牌。

代码执行沙箱

以下设置决定 API 和 Worker 如何连接沙箱。沙箱是一个独立服务,在隔离环境中运行代码节点(Python、JavaScript)和模板转换节点(Jinja2)。

代码与模板输出限制

API 和 Worker 会对代码节点和模板转换节点的输出强制执行这些限制,沙箱服务不会读取这些变量。修改后需重启 API 和 Worker(而非沙箱)才会生效。

工作流运行时

工作流存储仓库

这些变量选择处理工作流执行数据的后端实现。默认的 SQLAlchemy 仓库将所有内容存储在数据库中。也可使用其他实现(例如 Celery、Logstore)实现不同的存储策略。

工作流日志清理

HTTP 请求节点

这些变量配置工作流中用于调用外部 API 的 HTTP 请求节点。

Webhook

SSRF 防护

Dify 的所有出站 HTTP 请求(HTTP 节点、图片下载等)都通过代理路由,该代理阻止对内部/私有 IP 范围的请求,防止服务端请求伪造(SSRF)攻击。

Agent 配置

Web 前端服务

这些变量仅由 Next.js Web 前端容器使用,不影响 Python 后端。

NEXT_PUBLIC_ENABLE_FEATURE_PREVIEW

默认值:true 启用 Go to Anything 命令面板中的 /create 和 /refine 命令,这两个命令可根据自然语言描述生成和修改 Workflow 与 Chatflow 应用。设为 false 即可隐藏它们。

新版 Agent

新 Agent 在 Docker Compose 部署中以额外服务运行:一个 Agent 后端、一个沙箱,以及供沙箱使用的专用出站代理。设置好 DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN 后,它们都会随 docker compose up 启动。该功能默认启用,且大部分设置会从现有的 Compose 配置中自动推导,因此通常只需关注下面这几个变量。

DIFY_AGENT_SERVER_SECRET_KEY

默认值:(.env.example 中预填了开发密钥,生产环境必须替换) Agent 后端的根密钥,用于派生各类内部令牌的密钥,其中包括沙箱内 Agent 回调后端时使用的令牌。 默认值是一个公开的开发密钥,部署可开箱即用;但任何知道该密钥的人都能伪造这些令牌,生产环境使用前务必替换。 值必须是不带填充的 base64url 文本,且解码后恰好为 32 字节;值格式错误时,Agent 后端将拒绝启动。 可用以下命令生成:

DIFY_AGENT_API_TOKEN

默认值:(.env.example 中预填了开发令牌,生产环境必须替换) Dify API 调用 Agent 后端运行接口时出示的 Bearer 令牌。Compose 会把同一个值传给两侧服务,设置一次即可保持一致。 默认值是一个公开的开发令牌,部署可开箱即用;但任何能访问 Agent 后端且知道该令牌的人都能发起运行,生产环境使用前务必替换为你自己的随机值。

DIFY_AGENT_LOCAL_SANDBOX_AUTH_TOKEN

默认值:(空;运行时后端 为默认的 local 时必填) Agent 后端向内置沙箱证明身份时使用的共享密钥。留空时,这两个服务一启动就会退出并反复重启,所以要在启动 Dify 之前设置好。 在 docker/.env 中设置一次即可,Compose 会把它传给两个服务。只写在 docker/envs/ 下某个文件里的值不会生效。 可用以下命令生成:
取代原 DIFY_AGENT_SHELLCTL_AUTH_TOKEN,旧名仍可作为兼容别名使用。

NEXT_PUBLIC_ENABLE_AGENT_V2

默认值:true 在 Web 界面中显示新 Agent:主导航中的 Agents 项,以及工作流节点选择器中的新 Agent 节点。 设为 false 可隐藏它并回退到经典 Agent 节点。此变量替代了 ENABLE_AGENT_V2,后者仍可作为回退。

UPLOAD_SKILL_FILE_SIZE_LIMIT

默认值:50 Skill 包(.zip 或 .skill)的最大大小,单位为 MB。无论将包上传到 Agent,还是导入 Skill 库,都受此限制。超过限制时会返回大小错误。 若将其提高到 100 以上,还需同步提高 NGINX_CLIENT_MAX_BODY_SIZE,否则 Nginx 会以 413 错误拒绝上传。 此变量只限制打包后的文件。包内的内容另有上限,以字节为单位设置:

Agent 包与应用包限制

这些限制适用于所有应用包(.ifpkg),不只针对 Agent:所有类型的应用默认都导出为这种格式。导出和导入时都会检查这些限制,无论包是以文件上传还是从 URL 导入。只要超出任一限制,整个导出或导入就会失败,需先调高超出的那项限制再重试。 上传超过 100 MB 的包时,还需调高 NGINX_CLIENT_MAX_BODY_SIZE,否则 Nginx 会先拒绝请求。 包内附带的每个 Skill 还须符合 Skill 限制:
  • 导入时,超出 UPLOAD_SKILL_FILE_SIZE_LIMIT 的 Skill 会导致整个导入失败;超出某项 SKILL_PACKAGE_* 限制的 Skill 则会被跳过,导入完成时给出警告。要导入该 Skill,调高它超出的限制后重新导入包。
  • 导出时,超出某项 SKILL_PACKAGE_* 限制的 Skill 会导致整个导出失败,调高该限制后才能导出。

AGENT_BACKEND_BASE_URL

默认值:http://agent_backend:5050 API 访问 Agent 后端所用的地址。在 Docker Compose 中保持默认值即可。 其余变量用于配置打包的服务,或从现有的 Compose 配置中推导,通常无需改动。

DIFY_AGENT_RUNTIME_BACKEND

默认值:local 选择 Agent 沙箱的运行位置:
  • local:使用内置沙箱容器。
  • e2b:每个 Agent 的沙箱运行在一台 E2B 云虚拟机中,隔离性比内置容器更强。
  • openshell:通过你自行运维的 NVIDIA OpenShell 网关,让沙箱运行在你自己的基础设施上。
此变量和两个回调地址(DIFY_AGENT_STUB_API_BASE_URL 与 DIFY_AGENT_SANDBOX_FILES_BASE_URL)都需在 docker/.env 中设置。Compose 从这里把这三个值传给 Agent 后端,因此写在 envs/core-services/dify-agent.env 中不会生效。 每种远程后端各有一组专用变量:
docker/docker-compose.e2b.yaml 叠加文件会为此后端调整 Compose 配置。
切换到 openshell 前,需准备好以下各项:
  • OpenShell 网关,版本不低于 0.0.106,且 agent_backend 容器能访问到它。
  • 网关凭证:Bearer 令牌、mTLS 客户端证书对,或两者兼有。Compose 未内置证书挂载,需自行将证书文件以只读方式挂载到 agent_backend,并确保 UID 1001 可读取。
  • 网关可用来启动沙箱的运行时镜像。
  • 一个共享卷,用于存放 Agent 跨对话保留的长期文件。该卷需在 Compose 之外创建,以免被 docker compose down -v 删除。
  • 沙箱回连 Dify 的网络路径:
    • 沙箱可访问的回调地址。
    • 通往 Agent 后端 /agent-stub 路径的路由。基础 Compose 文件没有发布 Agent 后端的 5050 端口。这个端口同时承载启动 Agent 运行的 API,所以不要整个暴露,只暴露 /agent-stub 路径,比如通过反向代理。
按以下步骤切换到 OpenShell:
  1. 参照 OpenShell 配置指南 搭建网关并完成上述准备,包括构建运行时镜像、初始化共享卷、挂载证书、Kubernetes 配置和冒烟测试。
  2. 在 docker/.env 中将 DIFY_AGENT_RUNTIME_BACKEND 设为 openshell,并填写下表中的变量。
  3. 运行 docker compose up -d 重建 Agent 后端。必填值缺失或格式有误时,Agent 后端会拒绝启动。
  4. 运行一个 Agent,确认配置无误。Agent 后端要等到 Agent 运行时,或在 Agent 的构建对话中点击 应用 时,才会首次连接网关。因此端点、凭证或镜像配置有误,要到那时才会暴露出来,表现为运行失败或 应用 失败。
运行结束后,沙箱会继续在网关上运行,直到 Dify 将其移除。因此规划网关容量时,除了活跃的沙箱,也要算上空闲的沙箱。内置沙箱的出站代理不覆盖 OpenShell 沙箱。如需限制其网络访问,设置 DIFY_AGENT_OPENSHELL_EGRESS_ALLOW。

Agent 轨迹导出

想在已有的追踪后端中查看 Agent 做了什么,可开启轨迹导出。开启后,Agent 后端会通过 OTLP/HTTP 把每次 Agent 运行的追踪数据(包括模型请求和工具调用)发送到 OpenTelemetry 收集器。部署中所有工作空间的运行都发往同一个收集器。 每个 span 都带有所属工作空间、应用、Agent、终端用户、对话、工作流运行和节点的 ID,因此可按 dify.app_id、dify.conversation.id 等属性,把追踪数据筛选到单个应用或单个对话。即使关闭内容导出,这些 ID 也会导出。 轨迹导出独立于 LLMOps 追踪投递(由应用构建者为每个应用单独配置 Langfuse 等供应商),也独立于 API 和 Worker 的 OpenTelemetry 插桩,两者的设置都不影响轨迹导出。 按以下步骤开启轨迹导出:
  1. 在 docker/.env 中,将 DIFY_AGENT_TRAJECTORY_ENABLED 设为 true,将 DIFY_AGENT_TRAJECTORY_OTLP_TRACES_ENDPOINT 设为收集器的 traces URL。凭证(如有)写在 DIFY_AGENT_TRAJECTORY_OTLP_HEADERS 中。 Agent 后端不读取 shared.env,因此这些变量写在其中不会生效。
  2. 运行 docker compose up -d 重建 Agent 后端。任一值无效时,Agent 后端都无法启动,修正之前 Agent 运行会一直失败。
  3. 让 Agent 执行一个会调用工具的任务,然后在追踪后端中查找服务名为 dify-agent-trajectory 的工具调用 span。
DIFY_AGENT_TRAJECTORY_INCLUDE_CONTENT 设为 true 时,收集器会收到所有工作空间的提示词、系统指令、模型回复,以及工具参数和结果。请像保护对话本身一样限制对收集器的访问。

数据库服务

这些变量直接在 Docker Compose 中配置数据库与 Redis 容器。标注「中间件栈」的行只适用于 源码部署 所启动的那套栈,在其 middleware.env 中设置;完整的 Compose 栈将这些服务保留在内部网络中。

沙箱服务

沙箱是用于执行代码节点(Python、JavaScript、Jinja2)的隔离服务。可以禁用网络访问以增强安全性。

Nginx 反向代理

启用 HTTPS 后,还需要将 通用变量 中的 URL 变量(例如 CONSOLE_API_URL、CONSOLE_WEB_URL)更新为使用 https://。

Certbot 配置

RESPECT_XFORWARD_HEADERS_ENABLED

默认值:Docker Compose 部署为 true,源码部署为 false 开启后,Dify 会读取 API 前面那一层代理发来的 X-Forwarded-For 请求头,从中获取每个访问者的 IP 地址。 Docker Compose 部署位于 Cloudflare、负载均衡器或其他代理之后时,保持开启,并 配置自带的 Nginx 信任你的代理。配置完成前,所有访问者都会显示为代理的地址,共用同一份限额,比如登录邮件的发送限额。
此变量开启时,凡是能直接连接 API 的来源,都可以任意指定 Dify 看到的地址。伪造的地址可以绕过按 IP 的限流,也会留在账户最近登录 IP 这类记录里。Docker Compose 没有发布 API 端口,但同一 Docker 网络中的其他容器(比如代码沙箱)仍然可以直接连接。把 Docker 网络设为 internal 也拦不住它们。只允许可信的调用方直接连接 API。如果这些容器运行着不可信的代码,请用网络或防火墙规则把它们隔离开。这些容器仍需发出的 API 请求,都要经过一个会重写 X-Forwarded-For 的网关。如已发布 API 端口,请把端口关掉,不要拿关闭此变量来代替。变量一旦关闭,所有访问者都会显示为 Nginx 的地址。
源码部署时,如果 API 前面只有一层代理,这层代理会设置 X-Forwarded-For,而且是访问 API 的唯一入口,就开启此变量。

SSRF 代理

这些变量配置基于 Squid 的 SSRF 代理容器,该容器阻止对内部/私有网络的请求。

Docker Compose

模型供应商与工具位置配置

自定义应用界面中可用的工具和模型供应商及其显示顺序。使用逗号分隔的值,项目之间不要有空格。

插件守护进程配置

插件守护进程是一个独立的服务,管理插件的生命周期(安装、执行、升级)。API 通过 HTTP 与其通信。

Creator Center 配置

Creator Center(creators.dify.ai)是用户将 Dify 应用以模板形式提交的入口。提交的模板经审核通过后会在 Dify Marketplace 上线。Dify 控制台会在新的浏览器标签页中打开 Creator Center 页面。 工作室中的「发布到 Marketplace」操作会把应用导出为应用包(.ifpkg)并上传至 Creator Center,用户随后在那里完成提交。详见 发布应用到市场。

OTLP / OpenTelemetry 配置

OpenTelemetry 提供分布式追踪和指标收集。启用后,Dify 对 Flask 进行仪器化并将遥测数据导出到 OTLP 收集器。

杂项

定时任务配置

Dify 使用 Celery Beat 按可配置的计划运行后台维护任务。

记录保留与清理

这些变量控制旧消息与工作流运行记录的定时清理,超过保留天数的记录会分批删除。

阿里云 SLS 日志存储配置

与阿里云简单日志服务(SLS)的可选集成,用于将工作流执行日志存储在外部而非数据库中。通过将仓库配置变量设置为使用 logstore 实现来启用。

事件总线配置

API 和 Celery 工作进程之间基于 Redis 的事件传输。

向量数据库服务配置

这些变量配置向量数据库容器本身(而非 Dify 客户端连接)。仅与你选择的 VECTOR_STORE 相关的变量有效。

插件守护进程存储配置

插件守护进程可以在不同的存储后端中存储插件包。仅配置与 PLUGIN_STORAGE_TYPE 匹配的提供商。
最后修改于 2026年10月23日