# ------------------------------------------------------------------
# Dify Full Environment Variables
# ------------------------------------------------------------------

# Core service URLs
CONSOLE_API_URL=http://SynologyIP:18080
CONSOLE_WEB_URL=http://SynologyIP:18081
SERVICE_API_URL=http://SynologyIP:18080
APP_API_URL=http://SynologyIP:18080
APP_WEB_URL=http://SynologyIP:18081
NEXT_PUBLIC_SOCKET_URL=ws://SynologyIP:18080
TRIGGER_URL=http://localhost
FILES_URL=
INTERNAL_FILES_URL=
ENDPOINT_URL_TEMPLATE=http://localhost/e/{hook_id}


# Runtime and security
LANG=C.UTF-8
LC_ALL=C.UTF-8
PYTHONIOENCODING=utf-8
UV_CACHE_DIR=/tmp/.uv-cache
SECRET_KEY=[48chars]
INIT_PASSWORD=
DEPLOY_ENV=PRODUCTION
CHECK_UPDATE_URL=https://updates.dify.ai
OPENAI_API_BASE=https://api.openai.com/v1
MIGRATION_ENABLED=true
FILES_ACCESS_TIMEOUT=600
ENABLE_COLLABORATION_MODE=true

# Logging and server workers
LOG_LEVEL=INFO
LOG_OUTPUT_FORMAT=text
LOG_FILE=/app/logs/server.log
LOG_FILE_MAX_SIZE=20
LOG_FILE_BACKUP_COUNT=5
LOG_DATEFORMAT=%Y-%m-%d %H:%M:%S
LOG_TZ=UTC
DEBUG=false
FLASK_DEBUG=false
ENABLE_REQUEST_LOGGING=False
DIFY_BIND_ADDRESS=0.0.0.0
DIFY_PORT=5001
SERVER_WORKER_AMOUNT=1
SERVER_WORKER_CLASS=gevent
SERVER_WORKER_CONNECTIONS=10
API_WEBSOCKET_WORKER_CLASS=geventwebsocket.gunicorn.workers.GeventWebSocketWorker
API_WEBSOCKET_WORKER_CONNECTIONS=1000
API_WEBSOCKET_GUNICORN_TIMEOUT=600
GUNICORN_TIMEOUT=600
CELERY_WORKER_CLASS=
CELERY_WORKER_AMOUNT=4
CELERY_AUTO_SCALE=false
COMPOSE_WORKER_HEALTHCHECK_DISABLED=true

# Database (db_postgres)
DB_TYPE=postgresql
DB_USERNAME=postgres
DB_PASSWORD=difyai123456
DB_HOST=db_postgres
DB_PORT=5432
DB_DATABASE=dify
SQLALCHEMY_POOL_SIZE=30
SQLALCHEMY_MAX_OVERFLOW=10
SQLALCHEMY_POOL_RECYCLE=3600
SQLALCHEMY_POOL_TIMEOUT=300
PGDATA=/var/lib/postgresql/data/pgdata
POSTGRES_MAX_CONNECTIONS=200

# Redis (dify_redis)
REDIS_HOST=dify_redis
REDIS_PORT=6379
REDIS_PASSWORD=difyai123456
REDIS_DB=0
REDIS_MAX_CONNECTIONS=100
REDIS_SOCKET_TIMEOUT=600
REDIS_SOCKET_CONNECT_TIMEOUT=600
CELERY_BROKER_URL=redis://:difyai123456@dify_redis:6379/1
CELERY_RESULT_BACKEND=redis://:difyai123456@dify_redis:6379/1
CELERY_BACKEND=redis

# Web and app limits
WEB_API_CORS_ALLOW_ORIGINS=*
CONSOLE_CORS_ALLOW_ORIGINS=*
NEXT_PUBLIC_BATCH_CONCURRENCY=5
TEXT_GENERATION_TIMEOUT_MS=600000
TOP_K_MAX_VALUE=10
INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=4000
LOOP_NODE_MAX_COUNT=100
MAX_TOOLS_NUM=10
MAX_PARALLEL_LIMIT=10
MAX_ITERATIONS_NUM=99
MAX_TREE_DEPTH=50
ENABLE_WEBSITE_JINAREADER=true
ENABLE_WEBSITE_FIRECRAWL=true
ENABLE_WEBSITE_WATERCRAWL=true
NEXT_PUBLIC_ENABLE_SINGLE_DOLLAR_LATEX=false

# Vector Store (Qdrant)
STORAGE_TYPE=opendal
OPENDAL_SCHEME=fs
OPENDAL_FS_ROOT=storage
VECTOR_STORE=qdrant
QDRANT_HOST=qdrant
QDRANT_PORT=6333
QDRANT_CLIENT_TIMEOUT=600

# Sandbox
CODE_EXECUTION_ENDPOINT=http://sandbox:8194
CODE_EXECUTION_API_KEY=dify-sandbox
SANDBOX_API_KEY=dify-sandbox
SANDBOX_GIN_MODE=release
SANDBOX_WORKER_TIMEOUT=60
SANDBOX_ENABLE_NETWORK=true
SANDBOX_PORT=8194

# Plugin daemon
DB_PLUGIN_DATABASE=dify
EXPOSE_PLUGIN_DAEMON_PORT=15002
PLUGIN_DAEMON_PORT=5002
PLUGIN_DAEMON_KEY=[56chars]
PLUGIN_DAEMON_URL=http://plugin_daemon:5002
PLUGIN_MAX_PACKAGE_SIZE=52428800
PLUGIN_MODEL_SCHEMA_CACHE_TTL=3600
PLUGIN_DEBUGGING_PORT=5003
EXPOSE_PLUGIN_DEBUGGING_PORT=15003
PLUGIN_DIFY_INNER_API_KEY=[56chars]
PLUGIN_DIFY_INNER_API_URL=http://api:5001
PLUGIN_PYTHON_ENV_INIT_TIMEOUT=300
PLUGIN_MAX_EXECUTION_TIMEOUT=600
PLUGIN_STORAGE_TYPE=local
PLUGIN_STORAGE_LOCAL_ROOT=/app/storage
PLUGIN_WORKING_PATH=/app/storage/cwd
MARKETPLACE_ENABLED=true
MARKETPLACE_API_URL=https://marketplace.dify.ai