跳转到主要内容

Documentation Index

Fetch the complete documentation index at: https://dify-6c0370d8-docs-sync-pr-768.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版
Dify 使用默认配置即可开箱即用。你可以通过修改 .env 文件中的环境变量来自定义部署。
升级 Dify 后,在 docker 目录下运行 diff .env .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

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

默认值:false 工作流画布实时协作的总开关,涵盖多人同时编辑、画布评论和 @ 提及。 仅设置此变量还不够。协作通过 WebSocket 运行,还需要:
  • SERVER_WORKER_CLASS 设为 geventwebsocket.gunicorn.workers.GeventWebSocketWorker(参见 容器启动配置)。
  • NEXT_PUBLIC_SOCKET_URL 设为浏览器可访问的 WebSocket URL(参见 CORS 配置)。
如果使用自己的反向代理,需在 /socket.io/ 路径上转发 UpgradeConnection 请求头(Dify 自带的 nginx 模板已包含此配置)。多 API 副本部署需启用会话保持(sticky sessions)。

系统编码

变量默认值说明
LANGC.UTF-8系统区域设置,确保使用 UTF-8 编码。
LC_ALLC.UTF-8覆盖所有类别的区域设置。
PYTHONIOENCODINGutf-8Python I/O 编码。
UV_CACHE_DIR/tmp/.uv-cacheUV 包管理器缓存目录。避免因不存在的主目录导致权限问题。

服务器配置

日志

变量默认值说明
LOG_LEVELINFO最低日志级别。控制所有处理器(文件 + 控制台)的日志记录内容。级别从低到高:DEBUGINFOWARNINGERRORCRITICAL
LOG_OUTPUT_FORMATtexttext 输出包含时间戳、级别、线程和追踪 ID 的可读格式。json 输出结构化 JSON,适用于日志聚合工具(ELK、Datadog 等)。
LOG_FILE/app/logs/server.log日志文件路径。设置后启用基于文件的日志记录,并自动轮转。目录会自动创建。为空时日志仅输出到控制台。
LOG_FILE_MAX_SIZE20日志文件轮转前的最大大小(MB)。超过后当前文件重命名为 .1,并创建新文件。
LOG_FILE_BACKUP_COUNT5保留的轮转日志文件数量。使用默认配置时最多存在 6 个文件:当前文件加 5 个备份。
LOG_DATEFORMAT%Y-%m-%d %H:%M:%S文本格式日志的时间戳格式(strftime 代码)。JSON 格式忽略此设置。
LOG_TZUTC日志时间戳的时区(pytz 格式,例如 Asia/Shanghai)。仅适用于文本格式,JSON 始终使用 UTC。同时设置 Celery 的任务调度时区。

常规

变量默认值说明
DEBUGfalse启用详细日志记录:工作流节点输入/输出、工具执行详情、完整 LLM 提示和响应、应用启动耗时。适用于本地开发;不建议在生产环境使用,因为可能在日志中暴露敏感数据。
FLASK_DEBUGfalse标准 Flask 调试模式标志。Dify 未主动使用;DEBUG 是主要控制变量。
ENABLE_REQUEST_LOGGINGfalse为每个 HTTP 请求记录一条紧凑的访问日志(METHOD PATH STATUS DURATION TRACE_ID)。当 LOG_LEVEL 同时设为 DEBUG 时,还会以 JSON 格式记录完整的请求和响应体。
DEPLOY_ENVPRODUCTION在 Sentry 和 OpenTelemetry 中标记监控数据,以便按环境过滤错误和追踪。也作为 X-Env 响应头发送。不改变应用行为。
MIGRATION_ENABLEDtruetrue 时,容器启动时自动运行数据库架构迁移(flask upgrade-db)。仅限 Docker。如果你单独运行迁移,请设为 false。对于源码启动,需手动运行 flask db upgrade
CHECK_UPDATE_URLhttps://updates.dify.ai控制台通过此 URL 检查 Dify 的新版本。设为空可禁用,适用于离线环境或防止外部 HTTP 调用。
OPENAI_API_BASEhttps://api.openai.com/v1遗留变量。Dify 自身代码未主动使用。如果存在于环境中,可能会被 OpenAI Python SDK 读取。

SECRET_KEY

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

INIT_PASSWORD

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

令牌与请求限制

变量默认值说明
ACCESS_TOKEN_EXPIRE_MINUTES60登录会话的访问令牌有效时长(分钟)。过期后浏览器使用刷新令牌静默刷新,用户不会被登出。
REFRESH_TOKEN_EXPIRE_DAYS30用户无需重新输入凭证即可保持登录的时长(天)。如果用户在此期间未访问,则需要重新登录。
APP_MAX_EXECUTION_TIME1200应用执行的最大运行时间(秒),超时后终止。与 WORKFLOW_MAX_EXECUTION_TIME 配合使用:两者默认均为 20 分钟,但此变量作用于应用队列层面,另一个作用于工作流引擎层面。如果工作流需要更多时间,请同时增大两者。
APP_DEFAULT_ACTIVE_REQUESTS0每个应用的默认并发请求限制,在应用未在 UI 中设置自定义限制时使用。0 表示不限制。有效限制取此值与 APP_MAX_ACTIVE_REQUESTS 的较小值。
APP_MAX_ACTIVE_REQUESTS0每个应用的全局并发请求上限。如果应用自定义设置超过此值,将被覆盖。0 表示不限制。

容器启动配置

仅在使用 Docker 镜像或 Docker Compose 启动时生效。
变量默认值说明
DIFY_BIND_ADDRESS0.0.0.0API 服务器绑定的网络接口。0.0.0.0 监听所有接口;设为 127.0.0.1 限制为仅本地访问。
DIFY_PORT5001API 服务器监听端口。
SERVER_WORKER_AMOUNT1Gunicorn 工作进程数。使用 gevent(默认)时,每个工作进程通过 greenlet 处理多个并发连接,因此 1 通常足够。对于同步工作进程,使用 (2 x CPU 核心数) + 1参考文档
SERVER_WORKER_CLASSgeventGunicorn 工作进程类型。gevent 提供轻量级异步并发。当 ENABLE_COLLABORATION_MODEtrue 时,需设为 geventwebsocket.gunicorn.workers.GeventWebSocketWorker;若仍保留 gevent,WebSocket 握手将静默失败。其他值会破坏 psycopg2 和 gRPC 补丁。
SERVER_WORKER_CONNECTIONS10每个工作进程的最大并发连接数。仅适用于异步工作进程(gevent)。如果在高负载下遇到连接拒绝或响应缓慢,尝试增大此值。
GUNICORN_TIMEOUT360如果工作进程在此秒数内没有响应,Gunicorn 将终止并重启它。设为 360(6 分钟)以支持用于流式 LLM 响应的长连接 SSE。
CELERY_WORKER_CLASS(空;默认为 gevent)Celery 工作进程类型,与 SERVER_WORKER_CLASS 有相同的 gevent 补丁要求。强烈不建议修改。
CELERY_WORKER_AMOUNT4Celery 工作进程数。仅在禁用自动扩缩时使用。资源受限的 VM 可适当降低;若需弹性吞吐,建议启用 CELERY_AUTO_SCALE 而非仅调高此值。
CELERY_AUTO_SCALEfalse启用动态自动扩缩。启用后,Celery 监控队列深度,在 CELERY_MIN_WORKERSCELERY_MAX_WORKERS 之间动态创建/销毁工作进程。
CELERY_MAX_WORKERS(空;默认为 CPU 数量)自动扩缩启用时的最大工作进程数。
CELERY_MIN_WORKERS(空;默认为 1)自动扩缩启用时的最小工作进程数。
COMPOSE_WORKER_HEALTHCHECK_DISABLEDtrue禁用 Docker Compose 对 Celery Worker 容器的健康检查。默认禁用,因为在繁忙 Worker 上执行 celery inspect ping 开销较大。设为 false 可启用。仅在 Docker Compose 部署中生效。
COMPOSE_WORKER_HEALTHCHECK_INTERVAL30sCelery Worker 健康检查的间隔时间。仅在 COMPOSE_WORKER_HEALTHCHECK_DISABLED=false 时生效。接受 Docker Compose 的时间格式(如 30s1m)。
COMPOSE_WORKER_HEALTHCHECK_TIMEOUT30s单次 Celery Worker 健康检查的超时时间。仅在 COMPOSE_WORKER_HEALTHCHECK_DISABLED=false 时生效。

API 工具配置

变量默认值说明
API_TOOL_DEFAULT_CONNECT_TIMEOUT10API 工具节点调用外部 API 时建立 TCP 连接的最大等待时间(秒)。
API_TOOL_DEFAULT_READ_TIMEOUT60API 工具节点从外部 API 接收响应数据的最大等待时间(秒)。

数据库配置

数据库默认使用 PostgreSQL。同时支持 OceanBase、MySQL 和 seekdb。
变量默认值说明
DB_TYPEpostgresql数据库类型。支持的值:postgresqlmysqloceanbaseseekdb。TiDB 等 MySQL 兼容数据库可使用 mysql
DB_USERNAMEpostgres数据库用户名。在连接字符串中进行 URL 编码,因此特殊字符可以安全使用。
DB_PASSWORDdifyai123456数据库密码。在连接字符串中进行 URL 编码,因此 @:% 等字符可以安全使用。
DB_HOSTdb_postgres数据库服务器主机名。
DB_PORT5432数据库服务器端口。如果使用 MySQL,请设为 3306
DB_DATABASEdify数据库名称。

连接池

这些变量控制 Dify 管理数据库连接池的方式。默认配置适用于大多数部署。
变量默认值说明
SQLALCHEMY_POOL_SIZE30连接池中保持的持久连接数。
SQLALCHEMY_MAX_OVERFLOW10连接池满时允许的额外临时连接数。使用默认设置时,最多可同时存在 40 个连接(30 + 10)。
SQLALCHEMY_POOL_RECYCLE3600在此秒数后回收连接,防止连接过期。
SQLALCHEMY_POOL_TIMEOUT30连接池耗尽时等待连接的时长。如果在此时间内没有连接释放,请求将超时失败。
SQLALCHEMY_POOL_PRE_PINGfalse使用连接前通过轻量查询测试连接。防止「连接丢失」错误,但会增加少量延迟。建议在网络不稳定的生产环境中启用。
SQLALCHEMY_POOL_USE_LIFOfalse复用最近归还的连接(LIFO)而非均匀轮转(FIFO)。LIFO 使较少的连接保持「活跃」状态,可以减少开销。
SQLALCHEMY_ECHOfalse将所有 SQL 语句输出到日志。适用于调试查询问题。

PostgreSQL 性能调优

这些变量作为启动参数传递给 PostgreSQL 容器,配置的是数据库服务器,而非 Dify 应用。
变量默认值说明
POSTGRES_MAX_CONNECTIONS200最大数据库连接数。API 与 Celery 工作进程同时打开连接池时,建议至少保留 SERVER_WORKER_AMOUNT × SERVER_WORKER_CONNECTIONS + CELERY_WORKER_AMOUNT + 余量 的连接数,以避免出现 too many connections 错误。参考文档
POSTGRES_SHARED_BUFFERS128MB缓冲区共享内存。建议设为可用内存的 25%。参考文档
POSTGRES_WORK_MEM4MB每个数据库工作进程的工作内存。参考文档
POSTGRES_MAINTENANCE_WORK_MEM64MB维护操作预留的内存。参考文档
POSTGRES_EFFECTIVE_CACHE_SIZE4096MB查询规划器对有效缓存大小的估计值。参考文档
POSTGRES_STATEMENT_TIMEOUT0语句执行超时前的最大时长(毫秒)。0 表示不超时。参考文档
POSTGRES_IDLE_IN_TRANSACTION_SESSION_TIMEOUT0事务内空闲会话的最大时长(毫秒)。0 表示不超时。参考文档

MySQL 性能调优

这些变量作为启动参数传递给 MySQL 容器,配置的是数据库服务器,而非 Dify 应用。
变量默认值说明
MYSQL_MAX_CONNECTIONS1000最大 MySQL 连接数。
MYSQL_INNODB_BUFFER_POOL_SIZE512MInnoDB 缓冲池大小。建议值:专用 MySQL 服务器可用内存的 70~80%。参考文档
MYSQL_INNODB_LOG_FILE_SIZE128MInnoDB 日志文件大小。参考文档
MYSQL_INNODB_FLUSH_LOG_AT_TRX_COMMIT2事务提交时的 InnoDB 刷写日志方式。选项:0(不刷写)、1(刷写并同步)、2(刷写到操作系统缓存)。参考文档

Redis 配置

配置这些变量以将 Dify 连接到你的 Redis 实例。Dify 支持三种部署模式:单机(默认)、哨兵和集群。
变量默认值说明
REDIS_HOSTredisRedis 服务器主机名。仅在单机模式下使用;启用哨兵或集群模式时忽略。
REDIS_PORT6379Redis 服务器端口。仅在单机模式下使用。
REDIS_USERNAME(空)Redis 6.0+ ACL 用户名。适用于所有模式(单机、哨兵、集群)。
REDIS_PASSWORDdifyai123456Redis 认证密码。集群模式请使用 REDIS_CLUSTERS_PASSWORD 代替。
REDIS_DB0Redis 数据库编号(0~15)。仅适用于单机和哨兵模式。确保不与 Celery 的数据库冲突(在 CELERY_BROKER_URL 中配置;默认为 DB 1)。
REDIS_KEY_PREFIX(空)可选的全局前缀,应用于所有 Redis 键、Pub/Sub 频道、Redis Streams 名称以及 Celery broker 队列和结果后端键。Dify 会自动在前缀与键之间插入冒号,例如设为 staging 时实际写入的键形如 staging:session:abc。多个 Dify 实例共用同一 Redis 部署时(例如 staging 与 production),可借此前缀避免键冲突。留空则保持不加前缀的默认行为。为已有部署启用前缀会使此前以空前缀(或不同前缀)写入的键被遗留、无法再被读取。
REDIS_USE_SSLfalse启用 Redis 连接的 SSL/TLS。不会自动应用于哨兵协议。
REDIS_MAX_CONNECTIONS(空)Redis 连接池中的最大连接数。留空使用库默认值。如需要,可设置为与 Redis 服务器的 maxclients 匹配。

Redis SSL 配置

仅在 REDIS_USE_SSL=true 时适用。当 Celery broker URL 使用 rediss:// 协议时,这些设置也适用于 Celery broker。
变量默认值说明
REDIS_SSL_CERT_REQSCERT_NONE证书验证级别:CERT_NONE(不验证)、CERT_OPTIONAL(可选验证)或 CERT_REQUIRED(完整验证)。
REDIS_SSL_CA_CERTS(空)用于验证 Redis 服务器的 CA 证书文件路径。
REDIS_SSL_CERTFILE(空)用于双向 TLS 认证的客户端证书路径。
REDIS_SSL_KEYFILE(空)用于双向 TLS 认证的客户端私钥路径。

Redis 哨兵模式

哨兵提供自动主节点发现和故障转移以实现高可用。与集群模式互斥。
变量默认值说明
REDIS_USE_SENTINELfalse启用 Redis 哨兵模式。启用后 REDIS_HOST/REDIS_PORT 被忽略;Dify 连接到哨兵节点并查询当前主节点。
REDIS_SENTINELS(空)哨兵节点地址。格式:<ip1>:<port1>,<ip2>:<port2>,<ip3>:<port3>。这些是哨兵实例,而非 Redis 服务器。
REDIS_SENTINEL_SERVICE_NAME(空)哨兵监控的逻辑服务名称(在 sentinel.conf 中配置)。Dify 调用 master_for(service_name) 来发现当前主节点。
REDIS_SENTINEL_USERNAME(空)哨兵节点的认证用户名。与 REDIS_USERNAME 分开,后者用于 Redis 主/副本的认证。
REDIS_SENTINEL_PASSWORD(空)哨兵节点的认证密码。与 REDIS_PASSWORD 分开。
REDIS_SENTINEL_SOCKET_TIMEOUT0.1与哨兵节点通信的 Socket 超时(秒)。默认 0.1 秒假定快速本地网络。对于云/广域网部署,建议增大到 1.0~5.0 秒以防止间歇性超时。

Redis 集群模式

集群模式提供跨多个 Redis 节点的自动分片。与哨兵模式互斥。
变量默认值说明
REDIS_USE_CLUSTERSfalse启用 Redis 集群模式。
REDIS_CLUSTERS(空)集群节点。格式:<ip1>:<port1>,<ip2>:<port2>,<ip3>:<port3>
REDIS_CLUSTERS_PASSWORD(空)Redis 集群的密码。

Redis 连接健壮性配置

以下变量用于调节 Redis 连接的客户端重试、超时和健康检查行为。默认值较为保守;在网络延迟较高的云或广域网环境中,建议适当增大超时值。
变量默认值说明
REDIS_RETRY_RETRIES3单条 Redis 命令在出现瞬时故障(ConnectionErrorTimeoutErrorsocket.timeout)时的最大重试次数。设为 0 可禁用重试。使用带抖动的指数退避策略。
REDIS_RETRY_BACKOFF_BASE1.0重试之间指数退避的基础延迟(秒)。
REDIS_RETRY_BACKOFF_CAP10.0重试之间退避延迟的上限(秒)。
REDIS_SOCKET_TIMEOUT5.0Redis 读/写操作的 Socket 超时(秒)。若在高负载下出现间歇性命令超时,可适当增大此值。
REDIS_SOCKET_CONNECT_TIMEOUT5.0建立 Redis 连接的 Socket 超时(秒)。
REDIS_HEALTH_CHECK_INTERVAL30对空闲连接执行客户端健康检查的时间间隔(秒)。设为 0 可禁用。集群模式下不生效(redis-py 会静默忽略该参数)。

Celery 配置

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

CELERY_BROKER_URL

默认值:redis://:difyai123456@redis:6379/1 Celery 消息代理的 Redis 连接 URL。 直连格式:
redis://<redis_username>:<redis_password>@<redis_host>:<redis_port>/<redis_database>
哨兵模式格式(多个节点用分号分隔):
sentinel://<redis_username>:<redis_password>@<sentinel_host>:<sentinel_port>/<redis_database>
变量默认值说明
CELERY_BACKENDredisCelery 存储任务结果的位置。选项:redis(快速,内存存储)或 database(存储在主数据库中)。
BROKER_USE_SSLfalseCELERY_BROKER_URL 使用 rediss:// 协议时自动启用。将 Redis SSL 证书设置应用于 broker 连接。
CELERY_USE_SENTINELfalse为 Celery broker 启用 Redis 哨兵模式。
CELERY_SENTINEL_MASTER_NAME(空)哨兵服务名称(Master Name)。
CELERY_SENTINEL_PASSWORD(空)哨兵认证密码。与 REDIS_SENTINEL_PASSWORD 分开;如果缓存和任务队列使用不同的哨兵集群,两者可以不同。
CELERY_SENTINEL_SOCKET_TIMEOUT0.1连接哨兵的超时时间(秒)。
CELERY_TASK_ANNOTATIONSnull为特定任务应用运行时设置(例如速率限制)。格式:JSON 字典。示例:{"tasks.add": {"rate_limit": "10/s"}}。大多数用户不需要此设置。

CORS 配置

控制前端的跨域访问策略。
变量默认值说明
WEB_API_CORS_ALLOW_ORIGINS*Web API 跨域请求的允许来源。示例:https://dify.app
CONSOLE_CORS_ALLOW_ORIGINS*控制台 API 跨域请求的允许来源。如果未设置,回退到 CONSOLE_WEB_URL
COOKIE_DOMAIN(空)当前端和后端运行在不同子域上时,设为共享的顶级域名(例如 example.com)。这允许认证 Cookie 在子域间共享。为空时 Cookie 使用最安全的 __Host- 前缀,并锁定到单个域。
NEXT_PUBLIC_COOKIE_DOMAIN(空)跨子域 Cookie 的前端标志。设为 1(或任何非空值)启用,后端从 COOKIE_DOMAIN 读取实际域名。
NEXT_PUBLIC_SOCKET_URLws://localhost实时协作的浏览器端 WebSocket 端点。仅填写协议 + 主机 + 端口(路径 /socket.io/ 由客户端固定),把 http(s):// 替换为 ws(s)://。示例:wss://dify.example.com。默认值对应 Dify 自带 nginx 的 80 端口。运行时生效,容器重启即可应用。
NEXT_PUBLIC_BATCH_CONCURRENCY5仅前端。控制 UI 在批量操作时发起的并发 API 调用数。

文件存储配置

配置 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 等。
变量默认值说明
OPENDAL_SCHEMEfs使用的存储服务。示例:fs(本地文件系统)、s3gcsazblob
对于默认的 fs 方案:
变量默认值说明
OPENDAL_FS_ROOTstorage本地文件系统存储的根目录。如不存在将自动创建。
有关所有可用方案及其配置选项,请参阅 OpenDAL 服务文档
变量默认值说明
S3_ENDPOINT(空)S3 端点地址。非 AWS S3 兼容服务(MinIO 等)必填。
S3_REGIONus-east-1S3 区域。
S3_BUCKET_NAMEdifyaiS3 存储桶名称。
S3_ACCESS_KEY(空)S3 Access Key。使用 IAM 角色时不需要。
S3_SECRET_KEY(空)S3 Secret Key。使用 IAM 角色时不需要。
S3_ADDRESS_STYLEautoS3 寻址方式:autopathvirtual。控制存储桶名称出现在 URL 路径中(path)还是作为子域名(virtual)。仅在 S3_USE_AWS_MANAGED_IAMfalse 时生效。
S3_USE_AWS_MANAGED_IAMfalse使用 AWS IAM 角色(EC2 实例配置文件、ECS 任务角色)代替显式的 access key/secret key。启用后从实例元数据自动发现凭证。
变量默认值说明
AZURE_BLOB_ACCOUNT_NAMEdifyaiAzure 存储账户名称。
AZURE_BLOB_ACCOUNT_KEYdifyaiAzure 存储账户密钥。
AZURE_BLOB_CONTAINER_NAMEdifyai-containerAzure Blob 容器名称。
AZURE_BLOB_ACCOUNT_URLhttps://<your_account_name>.blob.core.windows.netAzure Blob 账户 URL。
变量默认值说明
GOOGLE_STORAGE_BUCKET_NAME(空)Google Cloud Storage 存储桶名称。
GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64(空)Base64 编码的服务账号 JSON 密钥。
变量默认值说明
ALIYUN_OSS_BUCKET_NAME(空)OSS 存储桶名称。
ALIYUN_OSS_ACCESS_KEY(空)OSS access key。
ALIYUN_OSS_SECRET_KEY(空)OSS secret key。
ALIYUN_OSS_ENDPOINThttps://oss-ap-southeast-1-internal.aliyuncs.comOSS 端点。区域和端点参考
ALIYUN_OSS_REGIONap-southeast-1OSS 区域。
ALIYUN_OSS_AUTH_VERSIONv4OSS 认证版本。
ALIYUN_OSS_PATH(空)对象路径前缀。不要以 / 开头。参考文档
ALIYUN_CLOUDBOX_ID(空)基于 CloudBox 的 OSS 部署的 CloudBox ID。
变量默认值说明
TENCENT_COS_BUCKET_NAME(空)COS 存储桶名称。
TENCENT_COS_SECRET_KEY(空)COS secret key。
TENCENT_COS_SECRET_ID(空)COS secret ID。
TENCENT_COS_REGION(空)COS 区域,例如 ap-guangzhou参考文档
TENCENT_COS_SCHEME(空)访问 COS 的协议(httphttps)。
TENCENT_COS_CUSTOM_DOMAIN(空)COS 访问的自定义域名。
变量默认值说明
OCI_ENDPOINT(空)OCI 端点 URL。
OCI_BUCKET_NAME(空)OCI 存储桶名称。
OCI_ACCESS_KEY(空)OCI access key。
OCI_SECRET_KEY(空)OCI secret key。
OCI_REGIONus-ashburn-1OCI 区域。
变量默认值说明
HUAWEI_OBS_BUCKET_NAME(空)OBS 存储桶名称。
HUAWEI_OBS_ACCESS_KEY(空)OBS access key。
HUAWEI_OBS_SECRET_KEY(空)OBS secret key。
HUAWEI_OBS_SERVER(空)OBS 服务器 URL。参考文档
HUAWEI_OBS_PATH_STYLEfalse使用路径风格 URL 代替虚拟主机风格。
变量默认值说明
VOLCENGINE_TOS_BUCKET_NAME(空)TOS 存储桶名称。
VOLCENGINE_TOS_ACCESS_KEY(空)TOS access key。
VOLCENGINE_TOS_SECRET_KEY(空)TOS secret key。
VOLCENGINE_TOS_ENDPOINT(空)TOS 端点 URL。参考文档
VOLCENGINE_TOS_REGION(空)TOS 区域,例如 cn-guangzhou
变量默认值说明
BAIDU_OBS_BUCKET_NAME(空)百度 OBS 存储桶名称。
BAIDU_OBS_ACCESS_KEY(空)百度 OBS access key。
BAIDU_OBS_SECRET_KEY(空)百度 OBS secret key。
BAIDU_OBS_ENDPOINT(空)百度 OBS 服务器 URL。
变量默认值说明
SUPABASE_BUCKET_NAME(空)Supabase 存储桶名称。
SUPABASE_API_KEY(空)Supabase API key。
SUPABASE_URL(空)Supabase 服务器 URL。
变量默认值说明
CLICKZETTA_VOLUME_TYPEuserVolume 类型。选项:user(个人/小团队)、table(企业多租户)、external(数据湖集成)。
CLICKZETTA_VOLUME_NAME(空)外部 volume 名称(仅 TYPE=external 时必填)。
CLICKZETTA_VOLUME_TABLE_PREFIXdataset_Table volume 表前缀(仅 TYPE=table 时使用)。
CLICKZETTA_VOLUME_DIFY_PREFIXdify_kmDify 文件目录前缀,用于与其他应用隔离。
ClickZetta Volume 复用向量数据库部分配置的 CLICKZETTA_* 连接参数。

归档存储

用于归档工作流运行日志的独立 S3 兼容存储。付费方案的保留系统使用此存储将超过保留期的工作流运行记录归档为 JSONL 格式。需要 BILLING_ENABLED=true
变量默认值说明
ARCHIVE_STORAGE_ENABLEDfalse启用工作流日志归档存储。
ARCHIVE_STORAGE_ENDPOINT(空)S3 兼容端点 URL。
ARCHIVE_STORAGE_ARCHIVE_BUCKET(空)归档工作流运行日志的存储桶。
ARCHIVE_STORAGE_EXPORT_BUCKET(空)工作流运行导出的存储桶。
ARCHIVE_STORAGE_ACCESS_KEY(空)Access key。
ARCHIVE_STORAGE_SECRET_KEY(空)Secret key。
ARCHIVE_STORAGE_REGIONauto存储区域。

向量数据库配置

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

VECTOR_STORE

默认值:weaviate 选择向量数据库后端。如果数据集已有索引,数据集存储的类型优先于此设置。在 Docker Compose 中切换提供商时,COMPOSE_PROFILES 会根据此值自动启动匹配的容器。 支持的值:weaviateoceanbaseseekdbqdrantmilvusmyscalerelytpgvectorpgvecto-rschromaopensearchoracletencentelasticsearchelasticsearch-jaanalyticdbcouchbasevikingdbopengausstablestorevastbasetidbtidb_on_qdrantbaidulindormhuawei_cloudupstashmatrixoneclickzettaalibabacloud_mysqlirishologres
变量默认值说明
VECTOR_INDEX_NAME_PREFIXVector_index向量数据库中集合名称的前缀。如果在多个 Dify 部署间共享向量数据库实例,请更改此值。
变量默认值说明
WEAVIATE_ENDPOINThttp://weaviate:8080Weaviate REST API 端点。
WEAVIATE_API_KEY(空)Weaviate 认证的 API key。
WEAVIATE_GRPC_ENDPOINTgrpc://weaviate:50051独立的 gRPC 端点,用于高性能二进制协议。批量操作显著更快。如未设置,将从 HTTP 端点推断。
WEAVIATE_TOKENIZATIONword文本字段的分词方法。选项:word(按空格和标点分割)、whitespace(仅按空格分割)、character(字符级别,更适合中日韩语言)。
seekdb 是 OceanBase 的轻量版本,共享相同的连接配置。
变量默认值说明
OCEANBASE_VECTOR_HOSToceanbase主机名或 IP 地址。
OCEANBASE_VECTOR_PORT2881端口号。
OCEANBASE_VECTOR_USERroot@test数据库用户名。
OCEANBASE_VECTOR_PASSWORDdifyai123456数据库密码。
OCEANBASE_VECTOR_DATABASEtest数据库名称。
OCEANBASE_CLUSTER_NAMEdifyai集群名称(仅 Docker 部署)。
OCEANBASE_MEMORY_LIMIT6GOceanBase 内存限制(仅 Docker 部署)。
SEEKDB_MEMORY_LIMIT2Gseekdb 内存限制(仅 Docker 部署)。
OCEANBASE_ENABLE_HYBRID_SEARCHfalse启用全文索引用于 BM25 查询,配合向量搜索使用。需要 OceanBase >= 4.3.5.1。启用后需重新创建集合。
OCEANBASE_FULLTEXT_PARSERik全文解析器。内置:ngrambengspacengram2ik。外部(需要插件):japanese_ftparserthai_ftparser
变量默认值说明
QDRANT_URLhttp://qdrant:6333Qdrant 端点地址。
QDRANT_API_KEYdifyai123456Qdrant API key。
QDRANT_CLIENT_TIMEOUT20客户端超时(秒)。
QDRANT_GRPC_ENABLEDfalse启用 gRPC 通信。
QDRANT_GRPC_PORT6334gRPC 端口。
QDRANT_REPLICATION_FACTOR1每个分片的副本数。
变量默认值说明
MILVUS_URIhttp://host.docker.internal:19530Milvus URI。对于 Zilliz Cloud,使用 Public Endpoint。
MILVUS_DATABASE(空)数据库名称。
MILVUS_TOKEN(空)认证令牌。对于 Zilliz Cloud,使用 API Key。
MILVUS_USER(空)用户名。
MILVUS_PASSWORD(空)密码。
MILVUS_ENABLE_HYBRID_SEARCHfalse启用 BM25 稀疏索引用于全文搜索,配合向量相似性搜索使用。需要 Milvus >= 2.5.0。如果集合在未启用时创建,则需重新创建。
MILVUS_ANALYZER_PARAMS(空)文本字段的分析器参数。
变量默认值说明
MYSCALE_HOSTmyscaleMyScale 主机。
MYSCALE_PORT8123MyScale 端口。
MYSCALE_USERdefault用户名。
MYSCALE_PASSWORD(空)密码。
MYSCALE_DATABASEdify数据库名称。
MYSCALE_FTS_PARAMS(空)全文搜索参数。多语言支持参考
变量默认值说明
COUCHBASE_CONNECTION_STRINGcouchbase://couchbase-serverCouchbase 集群的连接字符串。
COUCHBASE_USERAdministrator用户名。
COUCHBASE_PASSWORDpassword密码。
COUCHBASE_BUCKET_NAMEEmbeddings存储桶名称。
COUCHBASE_SCOPE_NAME_defaultScope 名称。
变量默认值说明
HOLOGRES_HOST(空)主机名。
HOLOGRES_PORT80端口号。
HOLOGRES_DATABASE(空)数据库名称。
HOLOGRES_ACCESS_KEY_ID(空)Access key ID(用作 PG 用户名)。
HOLOGRES_ACCESS_KEY_SECRET(空)Access key secret(用作 PG 密码)。
HOLOGRES_SCHEMApublicSchema 名称。
HOLOGRES_TOKENIZERjieba文本字段的分词器。
HOLOGRES_DISTANCE_METHODCosine距离计算方法。
HOLOGRES_BASE_QUANTIZATION_TYPErabitq量化类型。
HOLOGRES_MAX_DEGREE64HNSW 最大度数。
HOLOGRES_EF_CONSTRUCTION400HNSW ef_construction 参数。
变量默认值说明
PGVECTOR_HOSTpgvector主机名。
PGVECTOR_PORT5432端口号。
PGVECTOR_USERpostgres用户名。
PGVECTOR_PASSWORDdifyai123456密码。
PGVECTOR_DATABASEdify数据库名称。
PGVECTOR_MIN_CONNECTION1最小连接池连接数。
PGVECTOR_MAX_CONNECTION5最大连接池连接数。
PGVECTOR_PG_BIGMfalse启用 pg_bigm 扩展用于全文搜索。
变量默认值说明
VASTBASE_HOSTvastbase主机名。
VASTBASE_PORT5432端口号。
VASTBASE_USERdify用户名。
VASTBASE_PASSWORDDifyai123456密码。
VASTBASE_DATABASEdify数据库名称。
VASTBASE_MIN_CONNECTION1最小连接池连接数。
VASTBASE_MAX_CONNECTION5最大连接池连接数。
变量默认值说明
PGVECTO_RS_HOSTpgvecto-rs主机名。
PGVECTO_RS_PORT5432端口号。
PGVECTO_RS_USERpostgres用户名。
PGVECTO_RS_PASSWORDdifyai123456密码。
PGVECTO_RS_DATABASEdify数据库名称。
变量默认值说明
ANALYTICDB_KEY_ID(空)阿里云 access key ID。创建 AccessKey
ANALYTICDB_KEY_SECRET(空)阿里云 access key secret。
ANALYTICDB_REGION_IDcn-hangzhou区域标识。
ANALYTICDB_INSTANCE_ID(空)实例 ID,例如 gp-xxxxxx创建实例
ANALYTICDB_ACCOUNT(空)账户名称。创建账户
ANALYTICDB_PASSWORD(空)账户密码。
ANALYTICDB_NAMESPACEdify命名空间(schema)。如不存在将自动创建。
ANALYTICDB_NAMESPACE_PASSWORD(空)命名空间密码。创建新命名空间时使用。
ANALYTICDB_HOST(空)直连主机(替代基于 API 的访问)。
ANALYTICDB_PORT5432直连端口。
ANALYTICDB_MIN_CONNECTION1最小连接池连接数。
ANALYTICDB_MAX_CONNECTION5最大连接池连接数。
变量默认值说明
TIDB_VECTOR_HOSTtidb主机名。
TIDB_VECTOR_PORT4000端口号。
TIDB_VECTOR_USER(空)用户名。
TIDB_VECTOR_PASSWORD(空)密码。
TIDB_VECTOR_DATABASEdify数据库名称。
变量默认值说明
MATRIXONE_HOSTmatrixone主机名。
MATRIXONE_PORT6001端口号。
MATRIXONE_USERdump用户名。
MATRIXONE_PASSWORD111密码。
MATRIXONE_DATABASEdify数据库名称。
变量默认值说明
CHROMA_HOST127.0.0.1Chroma 服务器主机。
CHROMA_PORT8000Chroma 服务器端口。
CHROMA_TENANTdefault_tenant租户名称。
CHROMA_DATABASEdefault_database数据库名称。
CHROMA_AUTH_PROVIDERchromadb.auth.token_authn.TokenAuthClientProvider认证提供者类。
CHROMA_AUTH_CREDENTIALS(空)认证凭证。
变量默认值说明
ORACLE_USERdifyOracle 用户名。
ORACLE_PASSWORDdifyOracle 密码。
ORACLE_DSNoracle:1521/FREEPDB1数据源名称。
ORACLE_CONFIG_DIR/app/api/storage/walletOracle 配置目录。
ORACLE_WALLET_LOCATION/app/api/storage/wallet自治数据库的 Wallet 位置。
ORACLE_WALLET_PASSWORDdifyWallet 密码。
ORACLE_IS_AUTONOMOUSfalse是否使用 Oracle 自治数据库。
变量默认值说明
ALIBABACLOUD_MYSQL_HOST127.0.0.1主机名。
ALIBABACLOUD_MYSQL_PORT3306端口号。
ALIBABACLOUD_MYSQL_USERroot用户名。
ALIBABACLOUD_MYSQL_PASSWORDdifyai123456密码。
ALIBABACLOUD_MYSQL_DATABASEdify数据库名称。
ALIBABACLOUD_MYSQL_MAX_CONNECTION5最大连接池连接数。
ALIBABACLOUD_MYSQL_HNSW_M6HNSW M 参数。
变量默认值说明
RELYT_HOSTdb主机名。
RELYT_PORT5432端口号。
RELYT_USERpostgres用户名。
RELYT_PASSWORDdifyai123456密码。
RELYT_DATABASEpostgres数据库名称。
变量默认值说明
OPENSEARCH_HOSTopensearch主机名。
OPENSEARCH_PORT9200端口号。
OPENSEARCH_SECUREtrue使用 HTTPS。
OPENSEARCH_VERIFY_CERTStrue验证 SSL 证书。
OPENSEARCH_AUTH_METHODbasicbasic 使用用户名/密码。aws_managed_iam 通过 Boto3 凭证使用 AWS SigV4 请求签名(适用于 AWS 托管的 OpenSearch 或 Serverless)。
OPENSEARCH_USERadmin用户名。仅在 basic 认证下使用。
OPENSEARCH_PASSWORDadmin密码。仅在 basic 认证下使用。
OPENSEARCH_AWS_REGIONap-southeast-1AWS 区域。仅在 aws_managed_iam 认证下使用。
OPENSEARCH_AWS_SERVICEaossAWS 服务类型:es(托管集群)或 aoss(OpenSearch Serverless)。仅在 aws_managed_iam 认证下使用。
变量默认值说明
TENCENT_VECTOR_DB_URLhttp://127.0.0.1访问地址。控制台
TENCENT_VECTOR_DB_API_KEYdifyAPI key。密钥管理
TENCENT_VECTOR_DB_TIMEOUT30请求超时(秒)。
TENCENT_VECTOR_DB_USERNAMEdify账户名称。账户管理
TENCENT_VECTOR_DB_DATABASEdify数据库名称。创建数据库
TENCENT_VECTOR_DB_SHARD1分片数量。
TENCENT_VECTOR_DB_REPLICAS2副本数量。
TENCENT_VECTOR_DB_ENABLE_HYBRID_SEARCHfalse启用混合搜索。稀疏向量文档
变量默认值说明
ELASTICSEARCH_HOST0.0.0.0主机名。
ELASTICSEARCH_PORT9200端口号。
ELASTICSEARCH_USERNAMEelastic用户名。
ELASTICSEARCH_PASSWORDelastic密码。
ELASTICSEARCH_USE_CLOUDfalse切换到 Elastic Cloud 模式。为 true 时使用 ELASTICSEARCH_CLOUD_URLELASTICSEARCH_API_KEY 代替 host/port/username/password。
ELASTICSEARCH_CLOUD_URL(空)Elastic Cloud 端点 URL。ELASTICSEARCH_USE_CLOUD=true 时必填。
ELASTICSEARCH_API_KEY(空)Elastic Cloud API key。ELASTICSEARCH_USE_CLOUD=true 时必填。
ELASTICSEARCH_VERIFY_CERTSfalse验证 SSL 证书。
ELASTICSEARCH_CA_CERTS(空)CA 证书路径。
ELASTICSEARCH_REQUEST_TIMEOUT100000请求超时(毫秒)。
ELASTICSEARCH_RETRY_ON_TIMEOUTtrue超时后重试。
ELASTICSEARCH_MAX_RETRIES10最大重试次数。
变量默认值说明
BAIDU_VECTOR_DB_ENDPOINThttp://127.0.0.1:5287端点 URL。
BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS30000连接超时(毫秒)。
BAIDU_VECTOR_DB_ACCOUNTroot账户名称。
BAIDU_VECTOR_DB_API_KEYdifyAPI key。
BAIDU_VECTOR_DB_DATABASEdify数据库名称。
BAIDU_VECTOR_DB_SHARD1分片数量。
BAIDU_VECTOR_DB_REPLICAS3副本数量。
BAIDU_VECTOR_DB_INVERTED_INDEX_ANALYZERDEFAULT_ANALYZER倒排索引分析器。
BAIDU_VECTOR_DB_INVERTED_INDEX_PARSER_MODECOARSE_MODE倒排索引解析模式。
BAIDU_VECTOR_DB_AUTO_BUILD_ROW_COUNT_INCREMENT500触发 Baidu Vector DB 端自动重建索引的绝对行数增量阈值。与 _RATIO 共同生效,先触及任一阈值的条件即生效。
BAIDU_VECTOR_DB_AUTO_BUILD_ROW_COUNT_INCREMENT_RATIO0.05触发自动重建索引的相对增长比例阈值(新增行数/现有行数)。与上述绝对阈值取先到者。
BAIDU_VECTOR_DB_REBUILD_INDEX_TIMEOUT_IN_SECONDS300客户端等待索引重建完成的最长时间(秒)。超时后客户端调用会失败,但服务端重建仍可能继续完成;稍后重试查询通常即可成功。
变量默认值说明
VIKINGDB_ACCESS_KEY(空)Access key。
VIKINGDB_SECRET_KEY(空)Secret key。
VIKINGDB_REGIONcn-shanghai区域。
VIKINGDB_HOSTapi-vikingdb.xxx.volces.comAPI 主机。替换为你所在区域的端点。
VIKINGDB_SCHEMAhttp协议方案(httphttps)。
VIKINGDB_CONNECTION_TIMEOUT30连接超时(秒)。
VIKINGDB_SOCKET_TIMEOUT30Socket 超时(秒)。
变量默认值说明
LINDORM_URLhttp://localhost:30070Lindorm 搜索引擎 URL。控制台
LINDORM_USERNAMEadmin用户名。
LINDORM_PASSWORDadmin密码。
LINDORM_USING_UGCtrue使用 UGC 模式。
LINDORM_QUERY_TIMEOUT1查询超时(秒)。
变量默认值说明
OPENGAUSS_HOSTopengauss主机名。
OPENGAUSS_PORT6600端口号。
OPENGAUSS_USERpostgres用户名。
OPENGAUSS_PASSWORDDify@123密码。
OPENGAUSS_DATABASEdify数据库名称。
OPENGAUSS_MIN_CONNECTION1最小连接池连接数。
OPENGAUSS_MAX_CONNECTION5最大连接池连接数。
OPENGAUSS_ENABLE_PQfalse启用 PQ 加速。
变量默认值说明
HUAWEI_CLOUD_HOSTShttps://127.0.0.1:9200集群端点 URL。
HUAWEI_CLOUD_USERadmin用户名。
HUAWEI_CLOUD_PASSWORDadmin密码。
变量默认值说明
UPSTASH_VECTOR_URL(空)Upstash Vector 端点 URL。
UPSTASH_VECTOR_TOKEN(空)Upstash Vector API 令牌。
变量默认值说明
TABLESTORE_ENDPOINThttps://instance-name.cn-hangzhou.ots.aliyuncs.com端点地址。将 instance-name 替换为你的实例名称。
TABLESTORE_INSTANCE_NAME(空)实例名称。
TABLESTORE_ACCESS_KEY_ID(空)Access key ID。
TABLESTORE_ACCESS_KEY_SECRET(空)Access key secret。
TABLESTORE_NORMALIZE_FULLTEXT_BM25_SCOREfalse标准化全文 BM25 分数。
变量默认值说明
CLICKZETTA_USERNAME(空)用户名。
CLICKZETTA_PASSWORD(空)密码。
CLICKZETTA_INSTANCE(空)实例名称。
CLICKZETTA_SERVICEapi.clickzetta.com服务端点。
CLICKZETTA_WORKSPACEquick_start工作空间名称。
CLICKZETTA_VCLUSTERdefault_ap虚拟集群。
CLICKZETTA_SCHEMAdifySchema 名称。
CLICKZETTA_BATCH_SIZE100操作批量大小。
CLICKZETTA_ENABLE_INVERTED_INDEXtrue启用倒排索引。
CLICKZETTA_ANALYZER_TYPEchinese分析器类型。
CLICKZETTA_ANALYZER_MODEsmart分析器模式。
CLICKZETTA_VECTOR_DISTANCE_FUNCTIONcosine_distance距离函数。
变量默认值说明
IRIS_HOSTiris主机名。
IRIS_SUPER_SERVER_PORT1972Super Server 端口。
IRIS_USER_SYSTEM用户名。
IRIS_PASSWORDDify@1234密码。
IRIS_DATABASEUSER数据库名称。
IRIS_SCHEMAdifySchema 名称。
IRIS_CONNECTION_URL(空)完整连接 URL(覆盖单独设置)。
IRIS_MIN_CONNECTION1最小连接池连接数。
IRIS_MAX_CONNECTION3最大连接池连接数。
IRIS_TEXT_INDEXtrue启用文本索引。
IRIS_TEXT_INDEX_LANGUAGEen文本索引语言。

知识库配置

变量默认值说明
UPLOAD_FILE_SIZE_LIMIT15文档上传的最大文件大小(MB),包括 PDF、Word 文档等。超过时用户会看到「文件过大」错误。不适用于图片、视频或音频,它们有各自的大小限制(见下文)。
UPLOAD_FILE_BATCH_LIMIT5前端每次上传批次允许的最大文件数。
UPLOAD_FILE_EXTENSION_BLACKLIST(空)禁止上传的文件扩展名安全黑名单。逗号分隔,小写,不含点号。示例:exe,bat,cmd,com,scr,vbs,ps1,msi,dll。为空允许所有类型。
SINGLE_CHUNK_ATTACHMENT_LIMIT10单个知识库段落(chunk)中可嵌入的最大图片数量。
IMAGE_FILE_BATCH_LIMIT10每次上传批次的最大图片文件数。
ATTACHMENT_IMAGE_FILE_SIZE_LIMIT2知识库索引过程中从外部 URL 获取图片的最大大小(MB)。超过此大小的图片将被跳过。不同于 UPLOAD_IMAGE_FILE_SIZE_LIMIT(适用于直接上传)。
ATTACHMENT_IMAGE_DOWNLOAD_TIMEOUT60知识库索引过程中从外部 URL 下载图片的超时时间(秒)。响应缓慢或无响应的图片服务器在此超时后将被放弃。
ETL_TYPEdify文档提取库。dify 支持 txt、md、pdf、html、xlsx、docx、csv。Unstructured 额外支持 doc、msg、eml、ppt、pptx、xml、epub(需要 UNSTRUCTURED_API_URL)。
UNSTRUCTURED_API_URL(空)Unstructured.io API 端点。ETL_TYPEUnstructured 时必填。.ppt 文件支持也需要此设置。示例:http://unstructured:8000/general/v0/general
UNSTRUCTURED_API_KEY(空)Unstructured.io 认证的 API key。
SCARF_NO_ANALYTICStrue禁用 Unstructured 库的遥测/分析收集。
TOP_K_MAX_VALUE10知识库检索中用户可设置的 top_k 参数最大值(每次搜索返回的结果数)。
DATASET_MAX_SEGMENTS_PER_REQUEST0每个数据集 API 请求的最大段落数。0 表示不限制。

标注导入

变量默认值说明
ANNOTATION_IMPORT_FILE_SIZE_LIMIT2标注导入的最大 CSV 文件大小(MB)。超过时返回 HTTP 413。
ANNOTATION_IMPORT_MAX_RECORDS10000每次标注导入的最大记录数。超过的文件必须分批导入。
ANNOTATION_IMPORT_MIN_RECORDS1每次标注导入所需的最少有效记录数。
ANNOTATION_IMPORT_RATE_LIMIT_PER_MINUTE5每个工作空间每分钟的最大标注导入请求数。超过时返回 HTTP 429。
ANNOTATION_IMPORT_RATE_LIMIT_PER_HOUR20每个工作空间每小时的最大标注导入请求数。
ANNOTATION_IMPORT_MAX_CONCURRENT5每个工作空间的最大并发标注导入任务数。过期任务在 2 分钟后自动清理。

模型配置

变量默认值说明
PROMPT_GENERATION_MAX_TOKENS512系统使用 LLM 自动生成提示时的最大 token 数。防止失控生成浪费 API 配额。
CODE_GENERATION_MAX_TOKENS1024系统使用 LLM 自动生成代码时的最大 token 数。
PLUGIN_BASED_TOKEN_COUNTING_ENABLEDfalse使用基于插件的 token 计数以实现精确用量跟踪。禁用时 token 计数返回 0(更快但成本跟踪不够精确)。

多模态配置

变量默认值说明
MULTIMODAL_SEND_FORMATbase64文件发送到多模态 LLM 的方式。base64 将文件数据嵌入请求(兼容性更好,支持离线,负载更大)。url 发送签名 URL 让模型获取(更快,请求更小,但模型必须能访问 FILES_URL)。
UPLOAD_IMAGE_FILE_SIZE_LIMIT10直接上传图片的最大文件大小(MB),支持 jpg、png、webp、gif、svg。
UPLOAD_VIDEO_FILE_SIZE_LIMIT100直接上传视频的最大文件大小(MB),支持 mp4、mov、mpeg、webm。
UPLOAD_AUDIO_FILE_SIZE_LIMIT50直接上传音频的最大文件大小(MB),支持 mp3、m4a、wav、amr、mpga。
所有上传大小限制还受 NGINX_CLIENT_MAX_BODY_SIZE(默认 100M)限制。如果你将任何上传限制增大到超过 100 MB,还需要相应增大 NGINX_CLIENT_MAX_BODY_SIZE,否则 Nginx 会以 413 错误拒绝上传。

Sentry 配置

Sentry 提供错误跟踪和性能监控。每个服务有各自的 DSN 以分离错误报告。
变量默认值说明
SENTRY_DSN(空)跨服务共享的 Sentry DSN。
API_SENTRY_DSN(空)API 服务的 Sentry DSN。如果设置,覆盖 SENTRY_DSN。为空则禁用后端的 Sentry。
API_SENTRY_TRACES_SAMPLE_RATE1.0包含在性能追踪中的请求比例(0.01 = 1%,1.0 = 100%)。追踪跨服务跟踪请求流。
API_SENTRY_PROFILES_SAMPLE_RATE1.0包含在 CPU/内存性能分析中的请求比例(0.01 = 1%)。分析显示代码中时间花费在哪里。
WEB_SENTRY_DSN(空)Web 前端(Next.js)的 Sentry DSN。仅前端使用。
PLUGIN_SENTRY_ENABLEDfalse为插件守护进程服务启用 Sentry。
PLUGIN_SENTRY_DSN(空)插件守护进程的 Sentry DSN。

Notion 集成配置

将 Dify 连接到 Notion 作为知识库数据源。在 https://www.notion.so/my-integrations 获取集成凭证。
变量默认值说明
NOTION_INTEGRATION_TYPEpublicpublic 使用标准 OAuth 2.0(需要 HTTPS 重定向 URL,需要 CLIENT_ID + CLIENT_SECRET)。internal 使用直接集成令牌(支持 HTTP)。本地部署建议使用 internal
NOTION_CLIENT_SECRET(空)OAuth 客户端密钥。public 集成必填。
NOTION_CLIENT_ID(空)OAuth 客户端 ID。public 集成必填。
NOTION_INTERNAL_SECRET(空)Notion 的直接集成令牌。internal 集成必填。

邮件配置

Dify 发送邮件用于账户邀请、密码重置、登录验证码和人工输入节点通知。配置三个支持的提供商之一。邮件链接需要设置 CONSOLE_WEB_URL,参见 通用变量
变量默认值说明
MAIL_TYPEresend邮件提供商:resendsmtpsendgrid
MAIL_DEFAULT_SEND_FROM(空)所有外发邮件的默认「发件人」地址。必填。
变量默认值说明
RESEND_API_URLhttps://api.resend.comResend API 端点。用于自托管 Resend 或代理时覆盖。
RESEND_API_KEY(空)Resend API key。MAIL_TYPE=resend 时必填。
三种 TLS 模式:隐式 TLS(SMTP_USE_TLS=trueSMTP_OPPORTUNISTIC_TLS=false,端口 465)、STARTTLS(SMTP_USE_TLS=trueSMTP_OPPORTUNISTIC_TLS=true,端口 587)或明文(SMTP_USE_TLS=false,端口 25)。
变量默认值说明
SMTP_SERVER(空)SMTP 服务器地址。
SMTP_PORT465SMTP 服务器端口。STARTTLS 模式使用 587
SMTP_USERNAME(空)SMTP 用户名。IP 白名单服务器可留空。
SMTP_PASSWORD(空)SMTP 密码。IP 白名单服务器可留空。
SMTP_USE_TLStrue启用 TLS。为 trueSMTP_OPPORTUNISTIC_TLS=false 时使用隐式 TLS(SMTP_SSL)。
SMTP_OPPORTUNISTIC_TLSfalse使用 STARTTLS(显式 TLS)代替隐式 TLS。必须与 SMTP_USE_TLS=true 配合使用。
SMTP_LOCAL_HOSTNAME(空)覆盖 SMTP HELO/EHLO 中发送的主机名。在 Docker 中当 SMTP 服务器拒绝容器主机名时必填(常见于 Google Workspace、Microsoft 365)。设为你的域名,例如 mail.yourdomain.com
变量默认值说明
SENDGRID_API_KEY(空)SendGrid API key。MAIL_TYPE=sendgrid 时必填。
更多详情请参阅 SendGrid 文档

其他配置

索引

变量默认值说明
INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH4000知识库文档分块时每个文本段落的最大 token 长度。值越大每个块保留的上下文越多;值越小提供更细的粒度。

令牌与邀请

所有令牌过期变量控制存储在 Redis 中的一次性令牌的有效时长。过期后用户必须请求新令牌。
变量默认值说明
INVITE_EXPIRY_HOURS72工作空间邀请链接的有效时长(小时)。
RESET_PASSWORD_TOKEN_EXPIRY_MINUTES5密码重置令牌的有效时长(分钟)。
EMAIL_REGISTER_TOKEN_EXPIRY_MINUTES5邮箱注册令牌的有效时长(分钟)。
CHANGE_EMAIL_TOKEN_EXPIRY_MINUTES5更改邮箱令牌的有效时长(分钟)。
OWNER_TRANSFER_TOKEN_EXPIRY_MINUTES5工作空间所有者转让令牌的有效时长(分钟)。

代码执行沙箱

沙箱是一个独立的服务,在隔离环境中运行 Python、JavaScript 和 Jinja2 代码节点。
变量默认值说明
CODE_EXECUTION_ENDPOINThttp://sandbox:8194沙箱服务端点。
CODE_EXECUTION_API_KEYdify-sandbox沙箱认证的 API key。必须与沙箱服务中的 SANDBOX_API_KEY 匹配。
CODE_EXECUTION_SSL_VERIFYtrue验证沙箱连接的 SSL。开发环境使用自签名证书时可禁用。
CODE_EXECUTION_CONNECT_TIMEOUT10连接超时(秒)。
CODE_EXECUTION_READ_TIMEOUT60读取超时(秒)。
CODE_EXECUTION_WRITE_TIMEOUT10写入超时(秒)。
CODE_EXECUTION_POOL_MAX_CONNECTIONS100到沙箱服务的最大并发 HTTP 连接数。
CODE_EXECUTION_POOL_MAX_KEEPALIVE_CONNECTIONS20沙箱连接池中保持的最大空闲连接数。
CODE_EXECUTION_POOL_KEEPALIVE_EXPIRY5.0空闲沙箱连接关闭前的等待秒数。
CODE_MAX_NUMBER9223372036854775807代码节点输出允许的最大数值(64 位有符号整数最大值)。
CODE_MIN_NUMBER-9223372036854775808代码节点输出允许的最小数值(64 位有符号整数最小值)。
CODE_MAX_STRING_LENGTH400000代码节点输出的最大字符串长度。防止无限字符串生成导致的内存耗尽。
CODE_MAX_DEPTH5输出数据结构的最大嵌套深度。
CODE_MAX_PRECISION20输出中浮点数的最大小数位数。
CODE_MAX_STRING_ARRAY_LENGTH30字符串数组输出的最大元素数。
CODE_MAX_OBJECT_ARRAY_LENGTH30对象数组输出的最大元素数。
CODE_MAX_NUMBER_ARRAY_LENGTH1000数字数组输出的最大元素数。
TEMPLATE_TRANSFORM_MAX_LENGTH400000模板转换节点输出的最大字符长度。

工作流运行时

变量默认值说明
WORKFLOW_MAX_EXECUTION_STEPS500每次工作流运行的最大节点执行数。超过此值将终止工作流。
WORKFLOW_MAX_EXECUTION_TIME1200每次工作流运行的最大实际运行时间(秒)。超过此值将终止工作流。
WORKFLOW_CALL_MAX_DEPTH5嵌套工作流调用工作流的最大深度。防止无限递归。
MAX_VARIABLE_SIZE204800单个工作流变量的最大大小(字节,200 KB)。
WORKFLOW_FILE_UPLOAD_LIMIT10单次工作流执行中可上传的最大文件数。
WORKFLOW_NODE_EXECUTION_STORAGErdbms工作流节点执行记录的存储位置。rdbms 将所有内容存储在数据库中。hybrid 将新数据存储在对象存储中,并从两者读取。
DSL_EXPORT_ENCRYPT_DATASET_IDtrue导出 DSL 文件时加密数据集 ID。设为 false 以导出明文 ID,便于跨环境导入。

工作流存储仓库

这些变量选择处理工作流执行数据的后端实现。默认的 SQLAlchemy 仓库将所有内容存储在数据库中。也可使用其他实现(例如 Celery、Logstore)实现不同的存储策略。
变量默认值说明
CORE_WORKFLOW_EXECUTION_REPOSITORYcore.repositories.sqlalchemy_workflow_execution_repository.SQLAlchemyWorkflowExecutionRepository工作流执行记录的仓库实现。
CORE_WORKFLOW_NODE_EXECUTION_REPOSITORYcore.repositories.sqlalchemy_workflow_node_execution_repository.SQLAlchemyWorkflowNodeExecutionRepository工作流节点执行记录的仓库实现。
API_WORKFLOW_RUN_REPOSITORYrepositories.sqlalchemy_api_workflow_run_repository.DifyAPISQLAlchemyWorkflowRunRepository工作流运行 API 操作的服务层仓库。
API_WORKFLOW_NODE_EXECUTION_REPOSITORYrepositories.sqlalchemy_api_workflow_node_execution_repository.DifyAPISQLAlchemyWorkflowNodeExecutionRepository工作流节点执行 API 操作的服务层仓库。
LOOP_NODE_MAX_COUNT100循环节点的最大迭代次数。防止无限循环。
MAX_PARALLEL_LIMIT10工作流中并行分支的最大数量。

GraphEngine 工作线程池

变量默认值说明
GRAPH_ENGINE_MIN_WORKERS1每个 GraphEngine 实例的最小工作线程数。
GRAPH_ENGINE_MAX_WORKERS10每个 GraphEngine 实例的最大工作线程数。
GRAPH_ENGINE_SCALE_UP_THRESHOLD3触发创建额外工作线程的队列深度。
GRAPH_ENGINE_SCALE_DOWN_IDLE_TIME5.0多余工作线程在空闲此秒数后被移除。

工作流日志清理

变量默认值说明
WORKFLOW_LOG_CLEANUP_ENABLEDfalse启用每天凌晨 2:00 自动清理工作流执行日志。
WORKFLOW_LOG_RETENTION_DAYS30清理前保留工作流日志的天数。
WORKFLOW_LOG_CLEANUP_BATCH_SIZE100每次清理批次处理的日志条目数。根据系统性能调整。
WORKFLOW_LOG_CLEANUP_SPECIFIC_WORKFLOW_IDS(空)限制清理范围的工作流 ID 列表(逗号分隔)。为空时清理所有工作流日志。

HTTP 请求节点

这些变量配置工作流中用于调用外部 API 的 HTTP 请求节点。
变量默认值说明
HTTP_REQUEST_NODE_MAX_TEXT_SIZE1048576最大文本响应大小(字节,1 MB)。超过此大小的响应将被截断。
HTTP_REQUEST_NODE_MAX_BINARY_SIZE10485760最大二进制响应大小(字节,10 MB)。
HTTP_REQUEST_NODE_SSL_VERIFYtrue验证 SSL 证书。测试自签名证书时可禁用。
HTTP_REQUEST_MAX_CONNECT_TIMEOUT10用户在工作流编辑器中可设置的最大连接超时(秒)。每个节点的超时不能超过此值。
HTTP_REQUEST_MAX_READ_TIMEOUT600最大读取超时上限(秒)。
HTTP_REQUEST_MAX_WRITE_TIMEOUT600最大写入超时上限(秒)。

Webhook

变量默认值说明
WEBHOOK_REQUEST_BODY_MAX_SIZE10485760最大 webhook 负载大小(字节,10 MB)。超过的负载以 413 错误拒绝。

SSRF 防护

Dify 的所有出站 HTTP 请求(HTTP 节点、图片下载等)都通过代理路由,该代理阻止对内部/私有 IP 范围的请求,防止服务端请求伪造(SSRF)攻击。
变量默认值说明
SSRF_PROXY_HTTP_URLhttp://ssrf_proxy:3128HTTP 请求的 SSRF 代理 URL。
SSRF_PROXY_HTTPS_URLhttp://ssrf_proxy:3128HTTPS 请求的 SSRF 代理 URL。
SSRF_POOL_MAX_CONNECTIONS100SSRF HTTP 客户端连接池的最大并发连接数。
SSRF_POOL_MAX_KEEPALIVE_CONNECTIONS20SSRF 连接池中保持的最大空闲连接数。
SSRF_POOL_KEEPALIVE_EXPIRY5.0空闲 SSRF 连接关闭前的等待秒数。
RESPECT_XFORWARD_HEADERS_ENABLEDfalse信任来自反向代理的 X-Forwarded-For/Proto/Port 头。仅在单个受信反向代理后启用,否则允许 IP 欺骗。

Agent 配置

变量默认值说明
MAX_TOOLS_NUM10Agent 可同时使用的最大工具数。
MAX_ITERATIONS_NUM99每次 Agent 执行的最大推理迭代次数。防止 Agent 无限循环。

Web 前端服务

这些变量仅由 Next.js Web 前端容器使用,不影响 Python 后端。
变量默认值说明
TEXT_GENERATION_TIMEOUT_MS60000流式文本生成 UI 的前端超时。如果流中断超过此时间,UI 暂停渲染。
ALLOW_INLINE_STYLESfalse允许在用户生成的 Markdown 内容中使用内联 style 属性和 <style> 块。出于安全考虑默认禁用(内联样式可能被用于钓鱼攻击)。仅在需要来自可信来源的富样式内容时启用。
ALLOW_UNSAFE_DATA_SCHEMEfalse允许渲染 data: 协议的 URL。出于安全考虑默认禁用。
MAX_TREE_DEPTH50单条执行路径中的最大节点数。超过此限制的工作流无法发布。调整仅对新发布的工作流生效。

数据库服务

这些变量直接在 Docker Compose 中配置数据库容器。
变量默认值说明
PGDATA/var/lib/postgresql/data/pgdata容器内 PostgreSQL 数据目录。
MYSQL_HOST_VOLUME./volumes/mysql/data挂载为 MySQL 数据卷的宿主机路径。

沙箱服务

沙箱是用于执行代码节点(Python、JavaScript、Jinja2)的隔离服务。可以禁用网络访问以增强安全性。
变量默认值说明
SANDBOX_API_KEYdify-sandbox沙箱认证的 API key。必须与 API 服务中的 CODE_EXECUTION_API_KEY 匹配。
SANDBOX_GIN_MODErelease沙箱服务模式:releasedebug
SANDBOX_WORKER_TIMEOUT15单次代码运行的最大执行时间(秒)。
SANDBOX_ENABLE_NETWORKtrue允许代码发起出站 HTTP 请求。禁用可防止代码节点访问外部服务。
SANDBOX_HTTP_PROXYhttp://ssrf_proxy:3128网络启用时用于 SSRF 防护的 HTTP 代理。
SANDBOX_HTTPS_PROXYhttp://ssrf_proxy:3128SSRF 防护的 HTTPS 代理。
SANDBOX_PORT8194沙箱服务端口。

Nginx 反向代理

变量默认值说明
NGINX_SERVER_NAME_Nginx 服务器名称。_ 匹配任何主机名。
NGINX_HTTPS_ENABLEDfalse启用 HTTPS。为 true 时将 SSL 证书和密钥放在 ./nginx/ssl/ 中。
NGINX_PORT80HTTP 端口。
NGINX_SSL_PORT443HTTPS 端口(仅在 NGINX_HTTPS_ENABLED=true 时使用)。
NGINX_SSL_CERT_FILENAMEdify.crt./nginx/ssl/ 中的 SSL 证书文件名。
NGINX_SSL_CERT_KEY_FILENAMEdify.key./nginx/ssl/ 中的 SSL 私钥文件名。
NGINX_SSL_PROTOCOLSTLSv1.2 TLSv1.3允许的 TLS 协议版本。
NGINX_WORKER_PROCESSESautoNginx 工作进程数。auto 匹配 CPU 核心数。
NGINX_CLIENT_MAX_BODY_SIZE100M最大请求体大小。影响代理级别的文件上传限制。
NGINX_KEEPALIVE_TIMEOUT65Keepalive 超时(秒)。
NGINX_PROXY_READ_TIMEOUT3600s代理读取超时。设置较高(1 小时)以支持长时间运行的 SSE 流。
NGINX_PROXY_SEND_TIMEOUT3600s代理发送超时。
NGINX_ENABLE_CERTBOT_CHALLENGEfalse/.well-known/acme-challenge/ 接受 Let’s Encrypt ACME 验证请求。启用以支持自动证书续期。
启用 HTTPS 后,还需要将 通用变量 中的 URL 变量(例如 CONSOLE_API_URLCONSOLE_WEB_URL)更新为使用 https://

Certbot 配置

变量默认值说明
CERTBOT_EMAIL(空)Let’s Encrypt 用于证书通知的邮箱地址。
CERTBOT_DOMAIN(空)SSL 证书的域名。
CERTBOT_OPTIONS(空)额外的 certbot CLI 选项(例如 --force-renewal--dry-run)。

SSRF 代理

这些变量配置基于 Squid 的 SSRF 代理容器,该容器阻止对内部/私有网络的请求。
变量默认值说明
SSRF_HTTP_PORT3128代理监听端口。
SSRF_COREDUMP_DIR/var/spool/squid核心转储目录。
SSRF_REVERSE_PROXY_PORT8194转发到沙箱服务的反向代理端口。
SSRF_SANDBOX_HOSTsandbox沙箱服务的主机名。
SSRF_DEFAULT_TIME_OUT5代理请求的默认总超时(秒)。
SSRF_DEFAULT_CONNECT_TIME_OUT5默认连接超时(秒)。
SSRF_DEFAULT_READ_TIME_OUT5默认读取超时(秒)。
SSRF_DEFAULT_WRITE_TIME_OUT5默认写入超时(秒)。

Docker Compose

变量默认值说明
COMPOSE_PROFILES${VECTOR_STORE:-weaviate},${DB_TYPE:-postgresql}根据你的数据库和向量存储选择自动决定启动哪些服务容器。例如设置 DB_TYPE=mysql 将启动 MySQL 而非 PostgreSQL。
EXPOSE_NGINX_PORT80映射到 Nginx HTTP 的宿主机端口。
EXPOSE_NGINX_SSL_PORT443映射到 Nginx HTTPS 的宿主机端口。

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

自定义应用界面中可用的工具和模型提供商及其显示顺序。使用逗号分隔的值,项目之间不要有空格。
变量默认值说明
POSITION_TOOL_PINS(空)将特定工具固定在列表顶部。示例:bing,google
POSITION_TOOL_INCLUDES(空)仅显示列出的工具。如未设置,所有工具可用。
POSITION_TOOL_EXCLUDES(空)隐藏特定工具(固定的工具不受影响)。
POSITION_PROVIDER_PINS(空)将特定模型提供商固定在顶部。示例:openai,anthropic
POSITION_PROVIDER_INCLUDES(空)仅显示列出的提供商。如未设置,所有提供商可用。
POSITION_PROVIDER_EXCLUDES(空)隐藏特定提供商(固定的提供商不受影响)。

插件守护进程配置

插件守护进程是一个独立的服务,管理插件的生命周期(安装、执行、升级)。API 通过 HTTP 与其通信。
变量默认值说明
PLUGIN_DAEMON_URLhttp://plugin_daemon:5002插件守护进程服务 URL。
PLUGIN_DAEMON_KEY(自动生成)插件守护进程的认证密钥。
PLUGIN_DAEMON_PORT5002插件守护进程监听端口。
PLUGIN_DAEMON_TIMEOUT600.0所有插件守护进程请求(安装、执行、列表)的超时时间(秒)。
PLUGIN_MAX_PACKAGE_SIZE52428800最大插件包大小(字节,50 MB)。在市场下载时验证。
PLUGIN_MODEL_SCHEMA_CACHE_TTL3600缓存插件模型 Schema 的时间(秒)。减少重复查找。
PLUGIN_DIFY_INNER_API_KEY(自动生成)插件守护进程回调 Dify API 使用的 API key。必须与插件守护进程服务配置中的 DIFY_INNER_API_KEY 匹配。
PLUGIN_DIFY_INNER_API_URLhttp://api:5001插件守护进程回调的内部 API URL。
PLUGIN_DEBUGGING_HOST0.0.0.0插件远程调试连接的主机。
PLUGIN_DEBUGGING_PORT5003插件远程调试连接的端口。
MARKETPLACE_ENABLEDtrue启用插件市场。禁用时仅本地安装的插件可用,浏览和自动升级不可用。
MARKETPLACE_API_URLhttps://marketplace.dify.ai用于插件浏览、下载和升级检查的市场 API 端点。
FORCE_VERIFYING_SIGNATUREtrue安装插件前要求有效签名。防止安装被篡改或未签名的包。
PLUGIN_MAX_EXECUTION_TIMEOUT600插件执行超时(秒,插件守护进程侧)。应与 API 侧的 PLUGIN_DAEMON_TIMEOUT 匹配。
PIP_MIRROR_URL(空)插件守护进程安装插件依赖时使用的自定义 PyPI 镜像 URL。适用于加速安装或离线环境。

Creator Center 配置

Creator Center(creators.dify.ai)是用户将 Dify 应用以模板形式提交的入口。提交的模板经审核通过后会在 Dify Marketplace 上线。控制台中的「发布到市场」操作会代为导出应用的 DSL 并上传至 Creator Center。详见 发布应用到市场
变量默认值说明
CREATORS_PLATFORM_FEATURES_ENABLEDtrue控制应用构建器中是否显示「发布到市场」操作。设为 false 时该操作被隐藏,对应的控制台 API 也会返回 403。适用于不希望用户拥有一键对外提交模板路径的部署。
CREATORS_PLATFORM_API_URLhttps://creators.dify.ai「发布到市场」操作上传 DSL 的目标地址。仅在运行自托管 Creator Center 实例时修改。
CREATORS_PLATFORM_OAUTH_CLIENT_ID(空)Creator Center 颁发的 OAuth 客户端 ID。设置后,上传后的重定向会携带 OAuth 授权码,Creator Center 可据此将提交归属到具体用户。留空表示匿名上传。

OTLP / OpenTelemetry 配置

OpenTelemetry 提供分布式追踪和指标收集。启用后,Dify 对 Flask 进行仪器化并将遥测数据导出到 OTLP 收集器。
变量默认值说明
ENABLE_OTELfalseOpenTelemetry 仪器化的主开关。
OTLP_TRACE_ENDPOINT(空)专用追踪端点 URL。如未设置,回退到 {OTLP_BASE_ENDPOINT}/v1/traces
OTLP_METRIC_ENDPOINT(空)专用指标端点 URL。如未设置,回退到 {OTLP_BASE_ENDPOINT}/v1/metrics
OTLP_BASE_ENDPOINThttp://localhost:4318OTLP 收集器基础 URL。当未设置特定追踪/指标端点时作为回退使用。
OTLP_API_KEY(空)OTLP 认证的 API key。以 Authorization: Bearer 头发送。
OTEL_EXPORTER_TYPEotlp导出器类型。otlp 导出到收集器;其他值使用控制台导出器(用于调试)。
OTEL_EXPORTER_OTLP_PROTOCOL(空)OTLP 导出协议。grpc 使用 gRPC 导出器;其他值使用 HTTP。
OTEL_SAMPLING_RATE0.1追踪的请求比例(0.1 = 10%)。在高流量生产环境中降低此值可减少开销。
OTEL_BATCH_EXPORT_SCHEDULE_DELAY5000批次导出之间的延迟(毫秒)。
OTEL_MAX_QUEUE_SIZE2048丢弃前可排队的最大 span 数。
OTEL_MAX_EXPORT_BATCH_SIZE512每次导出批次的最大 span 数。
OTEL_METRIC_EXPORT_INTERVAL60000指标导出间隔(毫秒)。
OTEL_BATCH_EXPORT_TIMEOUT10000批次 span 导出超时(毫秒)。
OTEL_METRIC_EXPORT_TIMEOUT30000指标导出超时(毫秒)。

杂项

变量默认值说明
CSP_WHITELIST(空)在 Content Security Policy 头中允许的额外域名。
ALLOW_EMBEDfalse允许 Dify 页面在 iframe 中嵌入。为 false 时设置 X-Frame-Options: DENY 以防止点击劫持。
SWAGGER_UI_ENABLEDfalseSWAGGER_UI_PATH 暴露 Swagger UI 以浏览 API 文档。Swagger 端点绕过认证。
SWAGGER_UI_PATH/swagger-ui.htmlSwagger UI 的 URL 路径。
MAX_SUBMIT_COUNT100线程池中用于并行工作流节点执行的最大并发任务提交数。
TENANT_ISOLATED_TASK_CONCURRENCY1每个租户同时处理的文档索引或 RAG 管道任务数。增大可加快索引速度但增加数据库负载。

定时任务配置

Dify 使用 Celery Beat 按可配置的计划运行后台维护任务。
变量默认值说明
ENABLE_CLEAN_EMBEDDING_CACHE_TASKfalse每天凌晨 2:00 从数据库中删除过期的嵌入缓存记录。管理数据库大小。
ENABLE_CLEAN_UNUSED_DATASETS_TASKfalse禁用在保留期内没有活动的知识库中的文档。每天凌晨 3:00 运行。
ENABLE_CLEAN_MESSAGESfalse每天凌晨 4:00 删除超过保留期的对话消息。
ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASKfalse向工作空间所有者发送邮件,列出被清理任务自动禁用文档的知识库。每周一上午 10:00 运行。
ENABLE_DATASETS_QUEUE_MONITORfalse监控 Redis 中的数据集处理队列积压。当队列超过阈值时发送邮件警报。
QUEUE_MONITOR_INTERVAL30检查队列的频率(分钟)。
QUEUE_MONITOR_THRESHOLD200触发警报邮件的队列大小。
QUEUE_MONITOR_ALERT_EMAILS(空)接收队列警报的邮箱地址(逗号分隔)。
ENABLE_CHECK_UPGRADABLE_PLUGIN_TASKtrue每 15 分钟检查市场中是否有更新的插件版本。根据每个租户的自动升级计划分发升级任务。
ENABLE_WORKFLOW_SCHEDULE_POLLER_TASKtrue启用工作流调度轮询器,检查并触发计划的工作流运行。
WORKFLOW_SCHEDULE_POLLER_INTERVAL1检查到期计划工作流的频率(分钟)。
WORKFLOW_SCHEDULE_POLLER_BATCH_SIZE100每次轮询周期获取的最大到期计划数。
WORKFLOW_SCHEDULE_MAX_DISPATCH_PER_TICK0熔断器:每个周期分发的最大计划数。0 表示不限制。
ENABLE_WORKFLOW_RUN_CLEANUP_TASKfalse启用工作流运行记录的自动清理。
ENABLE_CREATE_TIDB_SERVERLESS_TASKfalse预创建 TiDB Serverless 集群用于向量数据库池。
ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASKfalse定期更新 TiDB Serverless 集群状态。
ENABLE_HUMAN_INPUT_TIMEOUT_TASKtrue检查过期的人工输入表单,恢复或停止超时的工作流。
HUMAN_INPUT_TIMEOUT_TASK_INTERVAL1检查过期人工输入表单的频率(分钟)。

记录保留与清理

这些变量控制旧记录的清理方式。当 BILLING_ENABLED 激活时,清理针对沙箱层租户并有宽限期。当计费禁用时(自托管),清理适用于保留窗口内的所有记录。
变量默认值说明
SANDBOX_EXPIRED_RECORDS_RETENTION_DAYS30超过此天数的记录有资格被删除。
SANDBOX_EXPIRED_RECORDS_CLEAN_GRACEFUL_PERIOD21订阅到期后删除记录前的宽限期天数(仅计费启用时)。
SANDBOX_EXPIRED_RECORDS_CLEAN_BATCH_SIZE1000每次清理批次处理的记录数。
SANDBOX_EXPIRED_RECORDS_CLEAN_BATCH_MAX_INTERVAL200清理批次间的最大随机延迟(毫秒),用于减少数据库负载。
SANDBOX_EXPIRED_RECORDS_CLEAN_TASK_LOCK_TTL90000Redis 锁 TTL(秒,约 25 小时),防止清理任务并发执行。

阿里云 SLS 日志存储配置

与阿里云简单日志服务(SLS)的可选集成,用于将工作流执行日志存储在外部而非数据库中。通过将仓库配置变量设置为使用 logstore 实现来启用。
变量默认值说明
ALIYUN_SLS_ACCESS_KEY_ID(空)阿里云 SLS 认证的 access key ID。
ALIYUN_SLS_ACCESS_KEY_SECRET(空)阿里云 SLS 认证的 access key secret。
ALIYUN_SLS_ENDPOINT(空)SLS 服务端点 URL(例如 cn-hangzhou.log.aliyuncs.com)。
ALIYUN_SLS_REGION(空)阿里云区域(例如 cn-hangzhou)。
ALIYUN_SLS_PROJECT_NAME(空)存储工作流日志的 SLS 项目名称。
ALIYUN_SLS_LOGSTORE_TTL365SLS logstore 的数据保留天数。使用 3650 表示永久存储。
LOGSTORE_DUAL_WRITE_ENABLEDfalse同时将工作流数据写入 SLS 和 PostgreSQL。迁移到 SLS 时有用。
LOGSTORE_DUAL_READ_ENABLEDtrue当 SLS 无结果时回退到 PostgreSQL。迁移期间历史数据仅存在于数据库中时有用。
LOGSTORE_ENABLE_PUT_GRAPH_FIELDtrue在 SLS 日志中包含完整的工作流图定义。设为 false 可通过省略大型图数据来减少存储。

事件总线配置

API 和 Celery 工作进程之间基于 Redis 的事件传输。
变量默认值说明
EVENT_BUS_REDIS_URL(空)事件流的 Redis 连接 URL。为空时使用主 Redis 连接设置。
EVENT_BUS_REDIS_CHANNEL_TYPEpubsub传输类型:pubsub(Pub/Sub,至多一次投递)、sharded(分片 Pub/Sub)或 streams(Redis Streams,至少一次投递)。
EVENT_BUS_REDIS_USE_CLUSTERSfalse为事件总线启用 Redis 集群模式。建议在大规模部署中使用。

向量数据库服务配置

这些变量配置向量数据库容器本身(而非 Dify 客户端连接)。仅与你选择的 VECTOR_STORE 相关的变量有效。
变量默认值说明
WEAVIATE_PERSISTENCE_DATA_PATH/var/lib/weaviate容器内的数据持久化目录。
WEAVIATE_QUERY_DEFAULTS_LIMIT25默认查询结果限制。
WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLEDtrue允许匿名访问。
WEAVIATE_DEFAULT_VECTORIZER_MODULEnone默认向量化模块。
WEAVIATE_CLUSTER_HOSTNAMEnode1集群节点主机名。
WEAVIATE_AUTHENTICATION_APIKEY_ENABLEDtrue启用 API key 认证。
WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS(自动生成)允许的 API key。必须与客户端配置中的 WEAVIATE_API_KEY 匹配。
WEAVIATE_AUTHENTICATION_APIKEY_USERShello@dify.ai与 API key 关联的用户。
WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLEDtrue启用管理员列表授权。
WEAVIATE_AUTHORIZATION_ADMINLIST_USERShello@dify.ai管理员用户。
WEAVIATE_DISABLE_TELEMETRYfalse禁用 Weaviate 遥测。
WEAVIATE_ENABLE_TOKENIZER_GSEfalse启用 GSE 分词器(中文)。
WEAVIATE_ENABLE_TOKENIZER_KAGOME_JAfalse启用 Kagome 分词器(日文)。
WEAVIATE_ENABLE_TOKENIZER_KAGOME_KRfalse启用 Kagome 分词器(韩文)。
变量默认值说明
ETCD_AUTO_COMPACTION_MODErevisionETCD 自动压缩模式。
ETCD_AUTO_COMPACTION_RETENTION1000自动压缩保留的修订数。
ETCD_QUOTA_BACKEND_BYTES4294967296后端配额(字节,4 GB)。
ETCD_SNAPSHOT_COUNT50000触发快照前的变更数。
ETCD_ENDPOINTSetcd:2379ETCD 服务端点。
MINIO_ACCESS_KEYminioadminMinIO access key。
MINIO_SECRET_KEYminioadminMinIO secret key。
MINIO_ADDRESSminio:9000MinIO 服务地址。
MILVUS_AUTHORIZATION_ENABLEDtrue启用 Milvus 安全授权。
变量默认值说明
OPENSEARCH_DISCOVERY_TYPEsingle-node集群形成的发现类型。
OPENSEARCH_BOOTSTRAP_MEMORY_LOCKtrue启动时锁定内存以防止交换。
OPENSEARCH_JAVA_OPTS_MIN512mJVM 最小堆大小。
OPENSEARCH_JAVA_OPTS_MAX1024mJVM 最大堆大小。
OPENSEARCH_INITIAL_ADMIN_PASSWORDQazwsxedc!@#123OpenSearch 服务的初始管理员密码。
OPENSEARCH_MEMLOCK_SOFT-1软内存锁限制(-1 = 无限制)。
OPENSEARCH_MEMLOCK_HARD-1硬内存锁限制(-1 = 无限制)。
OPENSEARCH_NOFILE_SOFT65536软文件描述符限制。
OPENSEARCH_NOFILE_HARD65536硬文件描述符限制。
变量默认值说明
PGVECTOR_PGUSERpostgresPGVector 容器的 PostgreSQL 用户。
PGVECTOR_POSTGRES_PASSWORD(自动生成)PGVector 容器的 PostgreSQL 密码。
PGVECTOR_POSTGRES_DBdifyPGVector 容器中的数据库名称。
PGVECTOR_PGDATA/var/lib/postgresql/data/pgdata容器内的数据目录。
PGVECTOR_PG_BIGM_VERSION1.2-20240606pg_bigm 扩展版本。
变量默认值说明
ORACLE_PWDDify123456容器的 Oracle 数据库密码。
ORACLE_CHARACTERSETAL32UTF8Oracle 字符集。
CHROMA_SERVER_AUTHN_CREDENTIALS(自动生成)Chroma 服务器容器的认证凭证。
CHROMA_SERVER_AUTHN_PROVIDERchromadb.auth.token_authn.TokenAuthenticationServerProviderChroma 服务器的认证提供者。
CHROMA_IS_PERSISTENTTRUE为 Chroma 启用持久化存储。
KIBANA_PORT5601Kibana 端口(Elasticsearch UI)。
变量默认值说明
IRIS_WEB_SERVER_PORT52773IRIS Web 服务器管理端口。
IRIS_TIMEZONEUTCIRIS 容器的时区。
DB_PLUGIN_DATABASEdify_plugin插件数据的独立数据库名称。

插件守护进程存储配置

插件守护进程可以在不同的存储后端中存储插件包。仅配置与 PLUGIN_STORAGE_TYPE 匹配的提供商。
变量默认值说明
PLUGIN_STORAGE_TYPElocal插件存储后端:localaws_s3tencent_cosazure_blobaliyun_ossvolcengine_tos
PLUGIN_STORAGE_LOCAL_ROOT/app/storage本地插件存储的根目录。
PLUGIN_WORKING_PATH/app/storage/cwd插件执行的工作目录。
PLUGIN_INSTALLED_PATHplugin已安装插件的子目录。
PLUGIN_PACKAGE_CACHE_PATHplugin_packages缓存插件包的子目录。
PLUGIN_MEDIA_CACHE_PATHassets缓存媒体资源的子目录。
PLUGIN_STORAGE_OSS_BUCKET(空)对象存储桶名称(跨 S3/COS/OSS/TOS 提供商共享)。
PLUGIN_PPROF_ENABLEDfalse为插件守护进程启用 Go pprof 性能分析。
PLUGIN_PYTHON_ENV_INIT_TIMEOUT120初始化插件 Python 环境的超时时间(秒)。
PLUGIN_STDIO_BUFFER_SIZE1024插件标准 I/O 通信的缓冲区大小(字节)。
PLUGIN_STDIO_MAX_BUFFER_SIZE5242880插件标准 I/O 通信的最大缓冲区大小(字节,5 MB)。
ENFORCE_LANGGENIUS_PLUGIN_SIGNATUREStrue强制验证 LangGenius 官方插件的签名。
ENDPOINT_URL_TEMPLATEhttp://localhost/e/{hook_id}插件端点的 URL 模板。{hook_id} 将被替换为实际的 hook ID。
EXPOSE_PLUGIN_DAEMON_PORT5002映射到插件守护进程的宿主机端口。
EXPOSE_PLUGIN_DEBUGGING_HOSTlocalhost插件远程调试的主机。
EXPOSE_PLUGIN_DEBUGGING_PORT5003插件远程调试的宿主机端口。
变量默认值说明
PLUGIN_S3_USE_AWSfalse使用 AWS S3(相对于 S3 兼容服务)。
PLUGIN_S3_USE_AWS_MANAGED_IAMfalse使用 IAM 角色代替显式凭证。
PLUGIN_S3_ENDPOINT(空)S3 端点 URL。
PLUGIN_S3_USE_PATH_STYLEfalse使用路径风格 URL 代替虚拟主机风格。
PLUGIN_AWS_ACCESS_KEY(空)AWS access key。
PLUGIN_AWS_SECRET_KEY(空)AWS secret key。
PLUGIN_AWS_REGION(空)AWS 区域。
变量默认值说明
PLUGIN_AZURE_BLOB_STORAGE_CONTAINER_NAME(空)Azure Blob 容器名称。
PLUGIN_AZURE_BLOB_STORAGE_CONNECTION_STRING(空)Azure Blob 连接字符串。
变量默认值说明
PLUGIN_TENCENT_COS_SECRET_KEY(空)腾讯 COS secret key。
PLUGIN_TENCENT_COS_SECRET_ID(空)腾讯 COS secret ID。
PLUGIN_TENCENT_COS_REGION(空)腾讯 COS 区域。
变量默认值说明
PLUGIN_ALIYUN_OSS_REGION(空)阿里云 OSS 区域。
PLUGIN_ALIYUN_OSS_ENDPOINT(空)阿里云 OSS 端点。
PLUGIN_ALIYUN_OSS_ACCESS_KEY_ID(空)阿里云 OSS access key ID。
PLUGIN_ALIYUN_OSS_ACCESS_KEY_SECRET(空)阿里云 OSS access key secret。
PLUGIN_ALIYUN_OSS_AUTH_VERSIONv4阿里云 OSS 认证版本。
PLUGIN_ALIYUN_OSS_PATH(空)阿里云 OSS 路径前缀。
变量默认值说明
PLUGIN_VOLCENGINE_TOS_ENDPOINT(空)火山引擎 TOS 端点。
PLUGIN_VOLCENGINE_TOS_ACCESS_KEY(空)火山引擎 TOS access key。
PLUGIN_VOLCENGINE_TOS_SECRET_KEY(空)火山引擎 TOS secret key。
PLUGIN_VOLCENGINE_TOS_REGION(空)火山引擎 TOS 区域。