| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602 | # ------------------------------# Environment Variables for API service & worker# ------------------------------# ------------------------------# Common Variables# ------------------------------# The backend URL of the console API,# used to concatenate the authorization callback.# If empty, it is the same domain.# Example: https://api.console.dify.aiCONSOLE_API_URL=# The front-end URL of the console web,# used to concatenate some front-end addresses and for CORS configuration use.# If empty, it is the same domain.# Example: https://console.dify.aiCONSOLE_WEB_URL=# Service API Url,# used to display Service API Base Url to the front-end.# If empty, it is the same domain.# Example: https://api.dify.aiSERVICE_API_URL=# WebApp API backend Url,# used to declare the back-end URL for the front-end API.# If empty, it is the same domain.# Example: https://api.app.dify.aiAPP_API_URL=# WebApp Url,# used to display WebAPP API Base Url to the front-end.# If empty, it is the same domain.# Example: https://app.dify.aiAPP_WEB_URL=# File preview or download Url prefix.# used to display File preview or download Url to the front-end or as Multi-model inputs;# Url is signed and has expiration time.FILES_URL=# ------------------------------# Server Configuration# ------------------------------# The log level for the application.# Supported values are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`LOG_LEVEL=INFO# Debug mode, default is false.# It is recommended to turn on this configuration for local development# to prevent some problems caused by monkey patch.DEBUG=false# Flask debug mode, it can output trace information at the interface when turned on,# which is convenient for debugging.FLASK_DEBUG=false# A secretkey that is used for securely signing the session cookie # and encrypting sensitive information on the database.# You can generate a strong key using `openssl rand -base64 42`.SECRET_KEY=sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U# Password for admin user initialization.# If left unset, admin user will not be prompted for a password# when creating the initial admin account.INIT_PASSWORD=# Deployment environment.# Supported values are `PRODUCTION`, `TESTING`. Default is `PRODUCTION`.# Testing environment. There will be a distinct color label on the front-end page,# indicating that this environment is a testing environment.DEPLOY_ENV=PRODUCTION# Whether to enable the version check policy.# If set to false, https://updates.dify.ai will not be called for version check.CHECK_UPDATE_URL=true# Used to change the OpenAI base address, default is https://api.openai.com/v1.# When OpenAI cannot be accessed in China, replace it with a domestic mirror address,# or when a local model provides OpenAI compatible API, it can be replaced.OPENAI_API_BASE=https://api.openai.com/v1# When enabled, migrations will be executed prior to application startup# and the application will start after the migrations have completed.MIGRATION_ENABLED=true# File Access Time specifies a time interval in seconds for the file to be accessed.# The default value is 300 seconds.FILES_ACCESS_TIMEOUT=300# ------------------------------# Container Startup Related Configuration# Only effective when starting with docker image or docker-compose.# ------------------------------# API service binding address, default: 0.0.0.0, i.e., all addresses can be accessed.DIFY_BIND_ADDRESS=0.0.0.0# API service binding port number, default 5001.DIFY_PORT=5001# The number of API server workers, i.e., the number of gevent workers.# Formula: number of cpu cores x 2 + 1# Reference: https://docs.gunicorn.org/en/stable/design.html#how-many-workersSERVER_WORKER_AMOUNT=# Defaults to gevent. If using windows, it can be switched to sync or solo.SERVER_WORKER_CLASS=# Similar to SERVER_WORKER_CLASS. Default is gevent.# If using windows, it can be switched to sync or solo.CELERY_WORKER_CLASS=# Request handling timeout. The default is 200,# it is recommended to set it to 360 to support a longer sse connection time.GUNICORN_TIMEOUT=360# The number of Celery workers. The default is 1, and can be set as needed.CELERY_WORKER_AMOUNT=# ------------------------------# Database Configuration# The database uses PostgreSQL. Please use the public schema.# It is consistent with the configuration in the 'db' service below.# ------------------------------DB_USERNAME=postgresDB_PASSWORD=difyai123456DB_HOST=dbDB_PORT=5432DB_DATABASE=dify# The size of the database connection pool.# The default is 30 connections, which can be appropriately increased.SQLALCHEMY_POOL_SIZE=30# Database connection pool recycling time, the default is 3600 seconds.SQLALCHEMY_POOL_RECYCLE=3600# Whether to print SQL, default is false.SQLALCHEMY_ECHO=false# ------------------------------# Redis Configuration# This Redis configuration is used for caching and for pub/sub during conversation.# ------------------------------REDIS_HOST=redisREDIS_PORT=6379REDIS_USERNAME=REDIS_PASSWORD=difyai123456REDIS_USE_SSL=false# ------------------------------# Celery Configuration# ------------------------------# Use redis as the broker, and redis db 1 for celery broker.# Format as follows: `redis://<redis_username>:<redis_password>@<redis_host>:<redis_port>/<redis_database>`# Example: redis://:difyai123456@redis:6379/1CELERY_BROKER_URL=redis://:difyai123456@redis:6379/1BROKER_USE_SSL=false# ------------------------------# CORS Configuration# Used to set the front-end cross-domain access policy.# ------------------------------# Specifies the allowed origins for cross-origin requests to the Web API,# e.g. https://dify.app or * for all origins.WEB_API_CORS_ALLOW_ORIGINS=*# Specifies the allowed origins for cross-origin requests to the console API,# e.g. https://cloud.dify.ai or * for all origins.CONSOLE_CORS_ALLOW_ORIGINS=*# ------------------------------# File Storage Configuration# ------------------------------# The type of storage to use for storing user files.# Supported values are `local` and `s3` and `azure-blob` and `google-storage` and `tencent-cos`,# Default: `local`STORAGE_TYPE=local# S3 Configuration# Whether to use AWS managed IAM roles for authenticating with the S3 service.# If set to false, the access key and secret key must be provided.S3_USE_AWS_MANAGED_IAM=false# The endpoint of the S3 service.S3_ENDPOINT=# The region of the S3 service.S3_REGION=us-east-1# The name of the S3 bucket to use for storing files.S3_BUCKET_NAME=difyai# The access key to use for authenticating with the S3 service.S3_ACCESS_KEY=# The secret key to use for authenticating with the S3 service.S3_SECRET_KEY=# Azure Blob Configuration# The name of the Azure Blob Storage account to use for storing files.AZURE_BLOB_ACCOUNT_NAME=difyai# The access key to use for authenticating with the Azure Blob Storage account.AZURE_BLOB_ACCOUNT_KEY=difyai# The name of the Azure Blob Storage container to use for storing files.AZURE_BLOB_CONTAINER_NAME=difyai-container# The URL of the Azure Blob Storage account.AZURE_BLOB_ACCOUNT_URL=https://<your_account_name>.blob.core.windows.net# Google Storage Configuration# The name of the Google Storage bucket to use for storing files.GOOGLE_STORAGE_BUCKET_NAME=your-bucket-name# The service account JSON key to use for authenticating with the Google Storage service.GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64=your-google-service-account-json-base64-string# The Alibaba Cloud OSS configurations,# only available when STORAGE_TYPE is `aliyun-oss`ALIYUN_OSS_BUCKET_NAME=your-bucket-nameALIYUN_OSS_ACCESS_KEY=your-access-keyALIYUN_OSS_SECRET_KEY=your-secret-keyALIYUN_OSS_ENDPOINT=https://oss-ap-southeast-1-internal.aliyuncs.comALIYUN_OSS_REGION=ap-southeast-1ALIYUN_OSS_AUTH_VERSION=v4# Tencent COS Configuration# The name of the Tencent COS bucket to use for storing files.TENCENT_COS_BUCKET_NAME=your-bucket-name# The secret key to use for authenticating with the Tencent COS service.TENCENT_COS_SECRET_KEY=your-secret-key# The secret id to use for authenticating with the Tencent COS service.TENCENT_COS_SECRET_ID=your-secret-id# The region of the Tencent COS service.TENCENT_COS_REGION=your-region# The scheme of the Tencent COS service.TENCENT_COS_SCHEME=your-scheme# ------------------------------# Vector Database Configuration# ------------------------------# The type of vector store to use. # Supported values are `weaviate`, `qdrant`, `milvus`, `relyt`, `pgvector`, `chroma`, `opensearch`, `tidb_vector`, `oracle`, `tencent`.VECTOR_STORE=weaviate# The Weaviate endpoint URL. Only available when VECTOR_STORE is `weaviate`.WEAVIATE_ENDPOINT=http://weaviate:8080# The Weaviate API key.WEAVIATE_API_KEY=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih# The Qdrant endpoint URL. Only available when VECTOR_STORE is `qdrant`.QDRANT_URL=http://qdrant:6333# The Qdrant API key.QDRANT_API_KEY=difyai123456# The Qdrant client timeout setting.QDRANT_CLIENT_TIMEOUT=20# The Qdrant client enable gRPC mode.QDRANT_GRPC_ENABLED=false# The Qdrant server gRPC mode PORT.QDRANT_GRPC_PORT=6334# Milvus configuration Only available when VECTOR_STORE is `milvus`.# The milvus host.MILVUS_HOST=127.0.0.1# The milvus host.MILVUS_PORT=19530# The milvus username.MILVUS_USER=root# The milvus password.MILVUS_PASSWORD=Milvus# The milvus tls switch.MILVUS_SECURE=false# pgvector configurations, only available when VECTOR_STORE is `pgvecto-rs or pgvector`PGVECTOR_HOST=pgvectorPGVECTOR_PORT=5432PGVECTOR_USER=postgresPGVECTOR_PASSWORD=difyai123456PGVECTOR_DATABASE=dify# TiDB vector configurations, only available when VECTOR_STORE is `tidb`TIDB_VECTOR_HOST=tidbTIDB_VECTOR_PORT=4000TIDB_VECTOR_USER=xxx.rootTIDB_VECTOR_PASSWORD=xxxxxxTIDB_VECTOR_DATABASE=dify# Chroma configuration, only available when VECTOR_STORE is `chroma`CHROMA_HOST=127.0.0.1CHROMA_PORT=8000CHROMA_TENANT=default_tenantCHROMA_DATABASE=default_databaseCHROMA_AUTH_PROVIDER=chromadb.auth.token_authn.TokenAuthClientProviderCHROMA_AUTH_CREDENTIALS=xxxxxx# Oracle configuration, only available when VECTOR_STORE is `oracle`ORACLE_HOST=oracleORACLE_PORT=1521ORACLE_USER=difyORACLE_PASSWORD=difyORACLE_DATABASE=FREEPDB1# relyt configurations, only available when VECTOR_STORE is `relyt`RELYT_HOST=dbRELYT_PORT=5432RELYT_USER=postgresRELYT_PASSWORD=difyai123456RELYT_DATABASE=postgres# open search configuration, only available when VECTOR_STORE is `opensearch`OPENSEARCH_HOST=opensearchOPENSEARCH_PORT=9200OPENSEARCH_USER=adminOPENSEARCH_PASSWORD=adminOPENSEARCH_SECURE=true# tencent vector configurations, only available when VECTOR_STORE is `tencent`TENCENT_VECTOR_DB_URL=http://127.0.0.1TENCENT_VECTOR_DB_API_KEY=difyTENCENT_VECTOR_DB_TIMEOUT=30TENCENT_VECTOR_DB_USERNAME=difyTENCENT_VECTOR_DB_DATABASE=difyTENCENT_VECTOR_DB_SHARD=1TENCENT_VECTOR_DB_REPLICAS=2# ------------------------------# Knowledge Configuration# ------------------------------# Upload file size limit, default 15M.UPLOAD_FILE_SIZE_LIMIT=15# The maximum number of files that can be uploaded at a time, default 5.UPLOAD_FILE_BATCH_LIMIT=5# ETl type, support: `dify`, `Unstructured`# `dify` Dify's proprietary file extraction scheme# `Unstructured` Unstructured.io file extraction schemeETL_TYPE=dify# Unstructured API path, needs to be configured when ETL_TYPE is Unstructured.# For example: http://unstructured:8000/general/v0/generalUNSTRUCTURED_API_URL=# ------------------------------# Multi-modal Configuration# ------------------------------# The format of the image sent when the multi-modal model is input,# the default is base64, optional url.# The delay of the call in url mode will be lower than that in base64 mode.# It is generally recommended to use the more compatible base64 mode.# If configured as url, you need to configure FILES_URL as an externally accessible address so that the multi-modal model can access the image.MULTIMODAL_SEND_IMAGE_FORMAT=base64# Upload image file size limit, default 10M.UPLOAD_IMAGE_FILE_SIZE_LIMIT=10# ------------------------------# Sentry Configuration# Used for application monitoring and error log tracking.# ------------------------------# API Service Sentry DSN address, default is empty, when empty,# all monitoring information is not reported to Sentry.# If not set, Sentry error reporting will be disabled.API_SENTRY_DSN=# API Service The reporting ratio of Sentry events, if it is 0.01, it is 1%.API_SENTRY_TRACES_SAMPLE_RATE=1.0# API Service The reporting ratio of Sentry profiles, if it is 0.01, it is 1%.API_SENTRY_PROFILES_SAMPLE_RATE=1.0# Web Service Sentry DSN address, default is empty, when empty,# all monitoring information is not reported to Sentry.# If not set, Sentry error reporting will be disabled.WEB_SENTRY_DSN=# ------------------------------# Notion Integration Configuration# Variables can be obtained by applying for Notion integration: https://www.notion.so/my-integrations# ------------------------------# Configure as "public" or "internal".# Since Notion's OAuth redirect URL only supports HTTPS,# if deploying locally, please use Notion's internal integration.NOTION_INTEGRATION_TYPE=public# Notion OAuth client secret (used for public integration type)NOTION_CLIENT_SECRET=# Notion OAuth client id (used for public integration type)NOTION_CLIENT_ID=# Notion internal integration secret.# If the value of NOTION_INTEGRATION_TYPE is "internal",# you need to configure this variable.NOTION_INTERNAL_SECRET=# ------------------------------# Mail related configuration# ------------------------------# Mail type, support: resend, smtpMAIL_TYPE=resend# Default send from email address, if not specifiedMAIL_DEFAULT_SEND_FROM=# API-Key for the Resend email provider, used when MAIL_TYPE is `resend`.RESEND_API_KEY=your-resend-api-key# SMTP server configuration, used when MAIL_TYPE is `smtp`SMTP_SERVER=SMTP_PORT=465SMTP_USERNAME=SMTP_PASSWORD=SMTP_USE_TLS=trueSMTP_OPPORTUNISTIC_TLS=false# ------------------------------# Others Configuration# ------------------------------# Maximum length of segmentation tokens for indexingINDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=1000# Member invitation link valid time (hours),# Default: 72.INVITE_EXPIRY_HOURS=72# The sandbox service endpoint.CODE_EXECUTION_ENDPOINT=http://sandbox:8194CODE_MAX_NUMBER=9223372036854775807CODE_MIN_NUMBER=-9223372036854775808CODE_MAX_STRING_LENGTH=80000TEMPLATE_TRANSFORM_MAX_LENGTH=80000CODE_MAX_STRING_ARRAY_LENGTH=30CODE_MAX_OBJECT_ARRAY_LENGTH=30CODE_MAX_NUMBER_ARRAY_LENGTH=1000# SSRF Proxy server HTTP URLSSRF_PROXY_HTTP_URL=http://ssrf_proxy:3128# SSRF Proxy server HTTPS URLSSRF_PROXY_HTTPS_URL=http://ssrf_proxy:3128# ------------------------------# Environment Variables for db Service# ------------------------------PGUSER=${DB_USERNAME}# The password for the default postgres user.POSTGRES_PASSWORD=${DB_PASSWORD}# The name of the default postgres database.POSTGRES_DB=${DB_DATABASE}# postgres data directoryPGDATA=/var/lib/postgresql/data/pgdata# ------------------------------# Environment Variables for sandbox Service# ------------------------------# The API key for the sandbox serviceSANDBOX_API_KEY=dify-sandbox# The mode in which the Gin framework runsSANDBOX_GIN_MODE=release# The timeout for the worker in secondsSANDBOX_WORKER_TIMEOUT=15# Enable network for the sandbox serviceSANDBOX_ENABLE_NETWORK=true# HTTP proxy URL for SSRF protectionSANDBOX_HTTP_PROXY=http://ssrf_proxy:3128# HTTPS proxy URL for SSRF protectionSANDBOX_HTTPS_PROXY=http://ssrf_proxy:3128# The port on which the sandbox service runsSANDBOX_PORT=8194# ------------------------------# Environment Variables for weaviate Service# (only used when VECTOR_STORE is weaviate)# ------------------------------WEAVIATE_PERSISTENCE_DATA_PATH='/var/lib/weaviate'WEAVIATE_QUERY_DEFAULTS_LIMIT=25WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=trueWEAVIATE_DEFAULT_VECTORIZER_MODULE=noneWEAVIATE_CLUSTER_HOSTNAME=node1WEAVIATE_AUTHENTICATION_APIKEY_ENABLED=trueWEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkihWEAVIATE_AUTHENTICATION_APIKEY_USERS=hello@dify.aiWEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED=trueWEAVIATE_AUTHORIZATION_ADMINLIST_USERS=hello@dify.ai# ------------------------------# Environment Variables for Chroma# (only used when VECTOR_STORE is chroma)# ------------------------------# Authentication credentials for Chroma serverCHROMA_SERVER_AUTHN_CREDENTIALS=difyai123456# Authentication provider for Chroma serverCHROMA_SERVER_AUTHN_PROVIDER=chromadb.auth.token_authn.TokenAuthenticationServerProvider# Persistence setting for Chroma serverCHROMA_IS_PERSISTENT=TRUE# ------------------------------# Environment Variables for Oracle Service# (only used when VECTOR_STORE is Oracle)# ------------------------------ORACLE_PWD=Dify123456ORACLE_CHARACTERSET=AL32UTF8# ------------------------------# Environment Variables for milvus Service# (only used when VECTOR_STORE is milvus)# ------------------------------# ETCD configuration for auto compaction modeETCD_AUTO_COMPACTION_MODE=revision# ETCD configuration for auto compaction retention in terms of number of revisionsETCD_AUTO_COMPACTION_RETENTION=1000# ETCD configuration for backend quota in bytesETCD_QUOTA_BACKEND_BYTES=4294967296# ETCD configuration for the number of changes before triggering a snapshotETCD_SNAPSHOT_COUNT=50000# MinIO access key for authenticationMINIO_ACCESS_KEY=minioadmin# MinIO secret key for authenticationMINIO_SECRET_KEY=minioadmin# ETCD service endpointsETCD_ENDPOINTS=etcd:2379# MinIO service addressMINIO_ADDRESS=minio:9000# Enable or disable security authorizationMILVUS_AUTHORIZATION_ENABLED=true# ------------------------------# Environment Variables for pgvector / pgvector-rs Service# (only used when VECTOR_STORE is pgvector / pgvector-rs)# ------------------------------PGVECTOR_PGUSER=postgres# The password for the default postgres user.PGVECTOR_POSTGRES_PASSWORD=difyai123456# The name of the default postgres database.PGVECTOR_POSTGRES_DB=dify# postgres data directoryPGVECTOR_PGDATA=/var/lib/postgresql/data/pgdata# ------------------------------# Environment Variables for opensearch# (only used when VECTOR_STORE is opensearch)# ------------------------------OPENSEARCH_DISCOVERY_TYPE=single-nodeOPENSEARCH_BOOTSTRAP_MEMORY_LOCK=trueOPENSEARCH_JAVA_OPTS_MIN=512mOPENSEARCH_JAVA_OPTS_MAX=1024mOPENSEARCH_INITIAL_ADMIN_PASSWORD=Qazwsxedc!@#123OPENSEARCH_MEMLOCK_SOFT=-1OPENSEARCH_MEMLOCK_HARD=-1OPENSEARCH_NOFILE_SOFT=65536OPENSEARCH_NOFILE_HARD=65536# ------------------------------# Environment Variables for Nginx reverse proxy# ------------------------------NGINX_SERVER_NAME=_NGINX_HTTPS_ENABLED=false# HTTP portNGINX_PORT=80# SSL settings are only applied when HTTPS_ENABLED is trueNGINX_SSL_PORT=443# if HTTPS_ENABLED is true, you're required to add your own SSL certificates/keys to the `./nginx/ssl` directory# and modify the env vars below accordingly.NGINX_SSL_CERT_FILENAME=dify.crtNGINX_SSL_CERT_KEY_FILENAME=dify.keyNGINX_SSL_PROTOCOLS=TLSv1.1 TLSv1.2 TLSv1.3# Nginx performance tuningNGINX_WORKER_PROCESSES=autoNGINX_CLIENT_MAX_BODY_SIZE=15MNGINX_KEEPALIVE_TIMEOUT=65# Proxy settingsNGINX_PROXY_READ_TIMEOUT=3600sNGINX_PROXY_SEND_TIMEOUT=3600s# ------------------------------# Environment Variables for SSRF Proxy# ------------------------------SSRF_HTTP_PORT=3128SSRF_COREDUMP_DIR=/var/spool/squidSSRF_REVERSE_PROXY_PORT=8194SSRF_SANDBOX_HOST=sandbox# ------------------------------# docker env var for specifying vector db type at startup# (based on the vector db type, the corresponding docker # compose profile will be used)# ------------------------------COMPOSE_PROFILES=${VECTOR_STORE:-weaviate}# ------------------------------# Docker Compose Service Expose Host Port Configurations# ------------------------------EXPOSE_NGINX_PORT=80EXPOSE_NGINX_SSL_PORT=443
 |