Skip to main content
本文档由 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

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

APP_WEB_URL

默认值:(空) 已发布 WebApp 的公开访问 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_URLCONSOLE_API_URL 都为空,文件预览将无法工作。 示例:https://upload.example.comhttp://<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/ 路径上转发 UpgradeConnection 请求头(Dify 自带的 nginx 模板已包含此配置)。多 API 副本部署需启用会话保持(sticky sessions)。

系统编码

服务器配置

日志

常规

SECRET_KEY

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

INIT_PASSWORD

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

令牌与请求限制

容器启动配置

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

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

STORAGE_TYPE

默认值:opendal 选择文件存储后端。支持的值:opendals3azure-blobaliyun-ossgoogle-storagehuawei-obsvolcengine-tostencent-cosbaidu-obsoci-storagesupabaseclickzetta-volumelocal(已弃用;内部使用 OpenDAL 的文件系统方案)。
使用 Apache OpenDAL 的默认存储后端,一个支持众多存储服务的统一接口。Dify 自动扫描匹配 OPENDAL_<SCHEME>_* 的环境变量并传递给 OpenDAL。例如,使用 OPENDAL_SCHEME=s3 时,设置 OPENDAL_S3_ACCESS_KEY_IDOPENDAL_S3_SECRET_ACCESS_KEY 等。对于默认的 fs 方案:有关所有可用方案及其配置选项,请参阅 OpenDAL 服务文档
ClickZetta Volume 复用向量数据库部分配置的 CLICKZETTA_* 连接参数。

归档存储

用于归档工作流运行日志的独立 S3 兼容存储。付费方案的保留系统使用此存储将超过保留期的工作流运行记录归档为 JSONL 格式。需要 BILLING_ENABLED=true

向量数据库配置

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

VECTOR_STORE

默认值:weaviate 选择向量数据库后端。如果数据集已有索引,数据集存储的类型优先于此设置。在 Docker Compose 中切换提供商时,COMPOSE_PROFILES 会根据此值自动启动匹配的容器。 支持的值:weaviateoceanbaseseekdbqdrantmilvusmyscalerelytpgvectorpgvecto-rschromaopensearchoracletencentelasticsearchelasticsearch-jaanalyticdbcouchbasevikingdbopengausstablestorevastbasetidbtidb_on_qdrantbaidulindormhuawei_cloudupstashmatrixoneclickzettaalibabacloud_mysqlirishologres
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=trueSMTP_OPPORTUNISTIC_TLS=false,端口 465)、STARTTLS(SMTP_USE_TLS=trueSMTP_OPPORTUNISTIC_TLS=true,端口 587)或明文(SMTP_USE_TLS=false,端口 25)。
更多详情请参阅 SendGrid 文档

其他配置

索引

新用户默认配置

工作流生成

令牌与邀请

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

代码执行沙箱

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

代码与模板输出限制

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

工作流运行时

工作流存储仓库

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

GraphEngine 工作线程池

工作流日志清理

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(Beta)

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

DIFY_AGENT_SERVER_SECRET_KEY

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

NEXT_PUBLIC_ENABLE_AGENT_V2

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

AGENT_BACKEND_BASE_URL

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

数据库服务

这些变量直接在 Docker Compose 中配置数据库容器。

沙箱服务

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

Nginx 反向代理

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

Certbot 配置

SSRF 代理

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

Docker Compose

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

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

插件守护进程配置

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

Creator Center 配置

Creator Center(creators.dify.ai)是用户将 Dify 应用以模板形式提交的入口。提交的模板经审核通过后会在 Dify Marketplace 上线。控制台中的「发布到市场」操作会代为导出应用的 DSL 并上传至 Creator Center。详见 发布应用到市场

OTLP / OpenTelemetry 配置

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

杂项

定时任务配置

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

记录保留与清理

这些变量控制旧记录的清理方式。当 BILLING_ENABLED 激活时,清理针对沙箱层租户并有宽限期。当计费禁用时(自部署),清理适用于保留窗口内的所有记录。

阿里云 SLS 日志存储配置

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

事件总线配置

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

向量数据库服务配置

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

插件守护进程存储配置

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