https://hub.docker.com/r/langgenius/dify-web
https://hub.docker.com/r/semitechnologies/weaviate
https://hub.docker.com/r/langgenius/dify-sandbox
https://hub.docker.com/r/langgenius/dify-api
https://hub.docker.com/r/ubuntu/squid
https://docs.dify.ai/v/zh-hans
https://github.com/langgenius/dify/releases
# docker
-postgres
https://abc.htmltoo.com/thread-45066.htm
-keydb
https://abc.htmltoo.com/thread-45629.htm
-Dify - 工具
https://abc.htmltoo.com/thread-46887.htm
-dify-web
docker run -d --name dify-web --hostname web --restart=always --privileged=true --user=root --ulimit nofile=262144:262144 --network mgr --ip 172.18.0.201 -v /data/file:/data/file/ -e APP_API_URL='' -e SENTRY_DSN='' -e CONSOLE_API_URL='' --workdir=/app/web hub.htmltoo.com:5000/bigdata:dify-web - docker run -d --name dify-web --hostname web --restart=always --privileged=true --user=root --ulimit nofile=262144:262144 --network mgr --ip 172.18.0.201 -v /data/file:/data/file/ -e APP_API_URL='' -e SENTRY_DSN='' -e CONSOLE_API_URL='' --workdir=/app/web langgenius/dify-web:main
-dify-proxy
docker run -d --name dify-proxy --hostname proxy --restart=always --privileged=true --user=root --ulimit nofile=262144:262144 --network mgr --ip 172.18.0.202 -e HTTP_PORT='3128' -e COREDUMP_DIR='/var/spool/squid' -e REVERSE_PROXY_PORT=8194 -e SANDBOX_HOST='sandbox' -e SANDBOX_PORT=8194 -v /data/site/docker/env/nginx/squid/squid.conf:/etc/squid/squid.conf:ro -v /data/site/docker/env/nginx/squid/docker-entrypoint.sh:/docker-entrypoint-mount.sh:rw ubuntu/squid:latest
-dify-weaviate
docker run -d --name dify-weaviate --hostname weaviate --restart=always --privileged=true --user=root --ulimit nofile=262144:262144 --network mgr --ip 172.18.0.203 -e AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true -e DEFAULT_VECTORIZER_MODULE=none -e AUTHENTICATION_APIKEY_ALLOWED_KEYS=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih -e AUTHENTICATION_APIKEY_ENABLED=true -e AUTHORIZATION_ADMINLIST_ENABLED=true -e AUTHENTICATION_APIKEY_USERS=hello@dify.ai -e PERSISTENCE_DATA_PATH=/var/lib/weaviate -e QUERY_DEFAULTS_LIMIT=25 -e AUTHORIZATION_ADMINLIST_USERS=hello@dify.ai -e CLUSTER_HOSTNAME=node1 -v /data/site/docker/data/dify/weaviate:/var/lib/weaviate:rw semitechnologies/weaviate:latest --host 0.0.0.0 --port 8080 --scheme http-dify-weaviate
-dify-sandbox
docker run -d --name dify-sandbox --hostname sandbox --restart=always --privileged=true --user=root --ulimit nofile=262144:262144 --network mgr --ip 172.18.0.204 --env=WORKER_TIMEOUT=15 --env=ENABLE_NETWORK=true --env=HTTP_PROXY=http://172.18.0.202:3128 --env=HTTPS_PROXY=http://172.18.0.202:3128 --env=SANDBOX_PORT=8194 --env=API_KEY=dify-sandbox --env=GIN_MODE=release -v /data/site/docker/data/dify/dependencies:/dependencies:rw langgenius/dify-sandbox:main
-dify-worker
docker run -d --name dify-worker --hostname worker --restart=always --privileged=true --user=root --ulimit nofile=262144:262144 --network mgr --ip 172.18.0.205 --env=SENTRY_TRACES_SAMPLE_RATE=1.0 --env=DB_DATABASE=dify --env=CODE_MIN_NUMBER=-9223372036854775808 --env=QDRANT_GRPC_PORT=6334 --env=DIFY_PORT=5001 --env=STORAGE_LOCAL_PATH=storage --env=AZURE_BLOB_CONTAINER_NAME=difyai-container --env=NOTION_CLIENT_SECRET= --env=RELYT_PASSWORD=WdqOpt --env=DB_HOST=172.18.0.32 --env=CONSOLE_WEB_URL= --env=MILVUS_USER=root --env=SERVER_WORKER_CLASS= --env=ANALYTICDB_REGION_ID= --env=OCI_ENDPOINT= --env=QDRANT_GRPC_ENABLED=false --env=DB_PASSWORD=WdqOpt --env=CODE_MAX_NUMBER=9223372036854775807 --env=BROKER_USE_SSL=false --env=OPENSEARCH_PASSWORD=admin --env=RELYT_HOST=172.18.0.32 --env=OPENSEARCH_HOST=opensearch --env=SSRF_PROXY_HTTP_URL=http://172.18.0.202:3128 --env=DIFY_BIND_ADDRESS=0.0.0.0 --env=CODE_EXECUTION_ENDPOINT=http://172.18.0.202:8194 --env=OPENSEARCH_USER=admin --env=SMTP_USERNAME= --env=CHROMA_AUTH_CREDENTIALS=xxxxxx --env=OCI_REGION= --env=STORAGE_TYPE=local --env=CODE_EXECUTION_API_KEY=dify-sandbox --env=CHECK_UPDATE_URL=https://updates.dify.ai --env=RESEND_API_URL=https://api.resend.com --env=OCI_SECRET_KEY= --env=SQLALCHEMY_POOL_RECYCLE=3600 --env=TENCENT_COS_BUCKET_NAME=your-bucket-name --env=INIT_PASSWORD= --env=PGVECTOR_USER=root --env=ORACLE_DATABASE=FREEPDB1 --env=SENTRY_PROFILES_SAMPLE_RATE=1.0 --env=CELERY_BROKER_URL=redis://:'wdqdmm@r'@172.18.0.79:6379/8 --env=S3_ACCESS_KEY= --env=SECRET_KEY=sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U --env=NOTION_INTERNAL_SECRET= --env=DEBUG=false --env=AZURE_BLOB_ACCOUNT_NAME=difyai --env=TENCENT_COS_REGION=your-region --env=OPENSEARCH_PORT=9200 --env=CHROMA_PORT=8000 --env=ALIYUN_OSS_BUCKET_NAME=your-bucket-name --env=SQLALCHEMY_ECHO=false --env=RELYT_PORT=5432 --env=WEAVIATE_ENDPOINT='http://172.18.0.203:8080' --env=SENTRY_TRACES_SAMPLE_RATE=1.0 --env=DB_DATABASE=dify --env=CODE_MIN_NUMBER=-9223372036854775808 --env=QDRANT_GRPC_PORT=6334 --env=DIFY_PORT=5001 --env=STORAGE_LOCAL_PATH=storage --env=AZURE_BLOB_CONTAINER_NAME=difyai-container --env=NOTION_CLIENT_SECRET= --env=RELYT_PASSWORD=WdqOpt --env=DB_HOST=172.18.0.32 --env=CONSOLE_WEB_URL= --env=MILVUS_USER=root --env=SERVER_WORKER_CLASS= --env=ANALYTICDB_REGION_ID= --env=OCI_ENDPOINT= --env=QDRANT_GRPC_ENABLED=false --env=DB_PASSWORD=WdqOpt --env=CODE_MAX_NUMBER=9223372036854775807 --env=BROKER_USE_SSL=false --env=OPENSEARCH_PASSWORD=admin --env=RELYT_HOST=172.18.0.32 --env=OPENSEARCH_HOST=opensearch --env=SSRF_PROXY_HTTP_URL=http://172.18.0.202:3128 --env=DIFY_BIND_ADDRESS=0.0.0.0 --env=CODE_EXECUTION_ENDPOINT=http://172.18.0.204:8194 --env=OPENSEARCH_USER=admin --env=SMTP_USERNAME= --env=CHROMA_AUTH_CREDENTIALS=xxxxxx --env=OCI_REGION= --env=STORAGE_TYPE=local --env=CODE_EXECUTION_API_KEY=dify-sandbox --env=CHECK_UPDATE_URL=https://updates.dify.ai --env=RESEND_API_URL=https://api.resend.com --env=OCI_SECRET_KEY= --env=SQLALCHEMY_POOL_RECYCLE=3600 --env=TENCENT_COS_BUCKET_NAME=your-bucket-name --env=INIT_PASSWORD= --env=PGVECTOR_USER=root --env=ORACLE_DATABASE=FREEPDB1 --env=SENTRY_PROFILES_SAMPLE_RATE=1.0 --env=CELERY_BROKER_URL=redis://:'wdqdmm@r'@172.18.0.79:6379/8 --env=S3_ACCESS_KEY= --env=SECRET_KEY=sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U --env=NOTION_INTERNAL_SECRET= --env=DEBUG=false --env=AZURE_BLOB_ACCOUNT_NAME=difyai --env=TENCENT_COS_REGION=your-region --env=OPENSEARCH_PORT=9200 --env=CHROMA_PORT=8000 --env=ALIYUN_OSS_BUCKET_NAME=your-bucket-name --env=SQLALCHEMY_ECHO=false --env=RELYT_PORT=5432 --env=WEAVIATE_ENDPOINT='http://172.18.0.203:8080' --env=CHROMA_AUTH_PROVIDER=chromadb.auth.token_authn.TokenAuthClientProvider --env=S3_SECRET_KEY= --env=MULTIMODAL_SEND_IMAGE_FORMAT=base64 --env=CHROMA_TENANT=default_tenant --env=WEAVIATE_API_KEY=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih --env=CODE_MAX_OBJECT_ARRAY_LENGTH=30 --env=REDIS_PASSWORD='wdqdmm@r' --env=TENCENT_VECTOR_DB_REPLICAS=2 --env=SSRF_PROXY_HTTPS_URL=http://172.18.0.202:3128 --env=TENCENT_COS_SECRET_ID=your-secret-id --env=DB_USERNAME=root --env=TENCENT_VECTOR_DB_DATABASE=dify --env='CONSOLE_CORS_ALLOW_ORIGINS=*' --env=TIDB_VECTOR_DATABASE=dify --env=SMTP_SERVER= --env=TIDB_VECTOR_PASSWORD=xxxxxx --env=SERVER_WORKER_AMOUNT= --env=INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=1000 --env=MIGRATION_ENABLED=true --env=REDIS_HOST=172.18.0.79 --env=SMTP_USE_TLS=true --env=SMTP_OPPORTUNISTIC_TLS=false --env=REDIS_USERNAME= --env=RELYT_USER=root --env=MILVUS_HOST=127.0.0.1 --env=MODE=worker --env=MYSCALE_HOST=myscale --env=S3_REGION=us-east-1 --env=TENCENT_COS_SCHEME=your-scheme --env=TENCENT_VECTOR_DB_USERNAME=dify --env=S3_BUCKET_NAME=difyai --env=FLASK_DEBUG=false --env=SMTP_PORT=465 --env=SERVICE_API_URL= --env=TEMPLATE_TRANSFORM_MAX_LENGTH=80000 --env=GOOGLE_STORAGE_BUCKET_NAME=your-bucket-name --env=RESET_PASSWORD_TOKEN_EXPIRY_HOURS=24 --env=SQLALCHEMY_POOL_SIZE=30 --env=ORACLE_PORT=1521 --env=S3_ENDPOINT= --env=NOTION_CLIENT_ID= --env=ANALYTICDB_PASSWORD= --env=FILES_ACCESS_TIMEOUT=300 --env=RELYT_DATABASE=postgres --env=ALIYUN_OSS_REGION=ap-southeast-1 --env=ANALYTICDB_NAMESPACE=dify --env=AZURE_BLOB_ACCOUNT_KEY=difyai --env=MAIL_DEFAULT_SEND_FROM= --env=DB_PORT=5432 --env=CHROMA_DATABASE=default_database --env=UPLOAD_FILE_SIZE_LIMIT=15 --env=CELERY_WORKER_CLASS= --env=PGVECTOR_PASSWORD=WdqOpt --env=CODE_MAX_STRING_ARRAY_LENGTH=30 --env=SMTP_PASSWORD= --env=MYSCALE_DATABASE=dify --env=APP_WEB_URL= --env=QDRANT_CLIENT_TIMEOUT=20 --env='AZURE_BLOB_ACCOUNT_URL=https://<your_account_name>.blob.core.windows.net' --env=UNSTRUCTURED_API_URL= --env=FILES_URL= --env=REDIS_DB=0 --env=INVITE_EXPIRY_HOURS=72 --env=LOG_LEVEL=INFO --env=QDRANT_URL=http://qdrant:6333 --env=ALIYUN_OSS_SECRET_KEY=your-secret-key --env=MYSCALE_FTS_PARAMS= --env=REDIS_USE_SSL=false --env=ETL_TYPE=dify --env=OCI_BUCKET_NAME= --env=TIDB_VECTOR_PORT=4000 --env=UPLOAD_IMAGE_FILE_SIZE_LIMIT=10 --env=ANALYTICDB_KEY_ID= --env=OCI_ACCESS_KEY= --env=MYSCALE_PASSWORD= --env=MILVUS_SECURE=false --env=OPENSEARCH_SECURE=true --env=MYSCALE_PORT=8123 --env=ALIYUN_OSS_ENDPOINT=https://oss-ap-southeast-1-internal.aliyuncs.com --env=TENCENT_VECTOR_DB_URL=http://127.0.0.1 --env=OPENAI_API_BASE=https://api.openai.com/v1 --env=CHROMA_HOST=127.0.0.1 --env=NOTION_INTEGRATION_TYPE=public --env=PGVECTOR_HOST=172.18.0.32 --env=ORACLE_USER=dify --env=MILVUS_PORT=19530 --env=CELERY_WORKER_AMOUNT= --env=ORACLE_HOST=oracle --env=TIDB_VECTOR_HOST=tidb --env=REDIS_PORT=6379 --env=MYSCALE_USER=default --env=CODE_MAX_NUMBER_ARRAY_LENGTH=1000 --env=CODE_MAX_STRING_LENGTH=80000 --env=TIDB_VECTOR_USER=xxx.root --env=ORACLE_PASSWORD=dify --env=PGVECTOR_DATABASE=dify --env=TENCENT_VECTOR_DB_API_KEY=dify --env=TENCENT_VECTOR_DB_SHARD=1 --env=QDRANT_API_KEY=difyai123456 --env=S3_USE_AWS_MANAGED_IAM=false --env=ANALYTICDB_INSTANCE_ID= --env=ANALYTICDB_KEY_SECRET= --env=TENCENT_COS_SECRET_KEY=your-secret-key --env=APP_MAX_ACTIVE_REQUESTS=0 --env=ANALYTICDB_NAMESPACE_PASSWORD= --env=RESEND_API_KEY=your-resend-api-key --env=PGVECTOR_PORT=5432 --env=GUNICORN_TIMEOUT=360 --env='WEB_API_CORS_ALLOW_ORIGINS=*' --env=MAIL_TYPE=resend --env=MILVUS_PASSWORD=Milvus --env=ALIYUN_OSS_ACCESS_KEY=your-access-key --env=TENCENT_VECTOR_DB_TIMEOUT=30 --env=UPLOAD_FILE_BATCH_LIMIT=5 --env=GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64=your-google-service-account-json-base64-string --env=VECTOR_STORE=weaviate --env=SENTRY_DSN= --env=CONSOLE_API_URL= --env=ALIYUN_OSS_AUTH_VERSION=v4 --env=ANALYTICDB_ACCOUNT= --volume=/data/site/docker/data/dify/app/storage:/app/api/storage:rw --workdir=/app/api langgenius/dify-api:main
-dify-api
docker run -d --name dify-api --hostname api --restart=always --privileged=true --user=root --ulimit nofile=262144:262144 --network mgr --ip 172.18.0.206 --env=MAIL_DEFAULT_SEND_FROM= --env=SERVICE_API_URL= --env=RESEND_API_KEY=your-resend-api-key --env=DB_PASSWORD=WdqOpt --env=INVITE_EXPIRY_HOURS=72 --env=NOTION_INTERNAL_SECRET= --env=PGVECTOR_HOST=172.18.0.32 --env=OPENSEARCH_SECURE=true --env=TENCENT_COS_REGION=your-region --env=SMTP_USERNAME= --env=SMTP_OPPORTUNISTIC_TLS=false --env=SENTRY_DSN= --env=MYSCALE_HOST=myscale --env=ANALYTICDB_REGION_ID= --env=RELYT_PASSWORD=WdqOpt --env=ANALYTICDB_PASSWORD= --env=SSRF_PROXY_HTTP_URL=http://172.18.0.202:3128 --env=RELYT_USER=root --env=MYSCALE_FTS_PARAMS= --env=WEAVIATE_ENDPOINT=http://172.18.0.203:8080 --env=QDRANT_GRPC_PORT=6334 --env=QDRANT_URL=http://qdrant:6333 --env=CELERY_BROKER_URL=redis://:'wdqdmm@r'@172.18.0.79:6379/8 --env=TIDB_VECTOR_HOST=tidb --env=REDIS_PORT=6379 --env=CHECK_UPDATE_URL=https://updates.dify.ai --env=OPENSEARCH_USER=admin --env=ORACLE_PASSWORD=dify --env=FLASK_DEBUG=false --env=FILES_URL= --env=S3_SECRET_KEY= --env=UPLOAD_FILE_BATCH_LIMIT=5 --env=OCI_ENDPOINT= --env=CHROMA_DATABASE=default_database --env=CELERY_WORKER_AMOUNT= --env=ANALYTICDB_NAMESPACE=dify --env=WEAVIATE_API_KEY=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih --env=PGVECTOR_PORT=5432 --env=TENCENT_VECTOR_DB_USERNAME=dify --env=ORACLE_USER=dify --env=ETL_TYPE=dify --env=GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64=your-google-service-account-json-base64-string --env=QDRANT_GRPC_ENABLED=false --env=LOG_LEVEL=INFO --env=TENCENT_COS_SCHEME=your-scheme --env=CODE_MAX_STRING_LENGTH=80000 --env=OPENAI_API_BASE=https://api.openai.com/v1 --env=TIDB_VECTOR_PORT=4000 --env=RELYT_DATABASE=postgres --env=DB_PORT=5432 --env=VECTOR_STORE=weaviate --env=ALIYUN_OSS_REGION=ap-southeast-1 --env=PGVECTOR_USER=root --env=TIDB_VECTOR_USER=xxx.root --env=S3_USE_AWS_MANAGED_IAM=false --env=ANALYTICDB_ACCOUNT= --env=CODE_MAX_STRING_ARRAY_LENGTH=30 --env=TENCENT_VECTOR_DB_API_KEY=dify --env=SQLALCHEMY_ECHO=false --env=MYSCALE_PORT=8123 --env=S3_ENDPOINT= --env=ALIYUN_OSS_AUTH_VERSION=v4 --env=OPENSEARCH_PASSWORD=admin --env=SERVER_WORKER_AMOUNT= --env=MILVUS_SECURE=false --env=SECRET_KEY=sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U --env=ANALYTICDB_NAMESPACE_PASSWORD= --env=MYSCALE_DATABASE=dify --env=ALIYUN_OSS_ENDPOINT=https://oss-ap-southeast-1-internal.aliyuncs.com --env=QDRANT_API_KEY=difyai123456 --env=TENCENT_VECTOR_DB_URL=http://127.0.0.1 --env=ALIYUN_OSS_ACCESS_KEY=your-access-key --env='CONSOLE_CORS_ALLOW_ORIGINS=*' --env=ORACLE_DATABASE=FREEPDB1 --env=APP_MAX_ACTIVE_REQUESTS=0 --env=APP_WEB_URL= --env=AZURE_BLOB_ACCOUNT_NAME=difyai --env=ALIYUN_OSS_SECRET_KEY=your-secret-key --env=S3_REGION=us-east-1 --env=TEMPLATE_TRANSFORM_MAX_LENGTH=80000 --env=S3_ACCESS_KEY= --env=SMTP_SERVER= --env=OCI_BUCKET_NAME= --env=MILVUS_PASSWORD=Milvus --env=GOOGLE_STORAGE_BUCKET_NAME=your-bucket-name --env=RELYT_HOST=172.18.0.32 --env=CHROMA_AUTH_PROVIDER=chromadb.auth.token_authn.TokenAuthClientProvider --env=CHROMA_TENANT=default_tenant --env=PGVECTOR_PASSWORD=WdqOpt --env=CONSOLE_WEB_URL= --env=RESEND_API_URL=https://api.resend.com --env=CHROMA_AUTH_CREDENTIALS=xxxxxx --env=DB_HOST=172.18.0.32 --env=SENTRY_TRACES_SAMPLE_RATE=1.0 --env=CODE_MIN_NUMBER=-9223372036854775808 --env=RELYT_PORT=5432 --env=CODE_MAX_OBJECT_ARRAY_LENGTH=30 --env=CODE_MAX_NUMBER_ARRAY_LENGTH=1000 --env=SQLALCHEMY_POOL_SIZE=30 --env='AZURE_BLOB_ACCOUNT_URL=https://<your_account_name>.blob.core.windows.net' --env=ANALYTICDB_KEY_ID= --env=OPENSEARCH_HOST=opensearch --env=MULTIMODAL_SEND_IMAGE_FORMAT=base64 --env=SMTP_PORT=465 --env=OCI_REGION= --env=OCI_ACCESS_KEY= --env=REDIS_USERNAME= --env=REDIS_USE_SSL=false --env=REDIS_PASSWORD='wdqdmm@r' --env=DEBUG=false --env=TENCENT_VECTOR_DB_TIMEOUT=30 --env=RESET_PASSWORD_TOKEN_EXPIRY_HOURS=24 --env=OPENSEARCH_PORT=9200 --env=TIDB_VECTOR_DATABASE=dify --env=TENCENT_COS_SECRET_ID=your-secret-id --env=MILVUS_USER=root --env=ORACLE_HOST=oracle --env=TENCENT_VECTOR_DB_REPLICAS=2 --env=INIT_PASSWORD= --env=SQLALCHEMY_POOL_RECYCLE=3600 --env=REDIS_DB=0 --env=STORAGE_TYPE=local --env=DIFY_PORT=5001 --env=MILVUS_HOST=127.0.0.1 --env=S3_BUCKET_NAME=difyai --env=OCI_SECRET_KEY= --env=SERVER_WORKER_CLASS= --env=SMTP_USE_TLS=true --env=PGVECTOR_DATABASE=dify --env=CHROMA_PORT=8000 --env=MYSCALE_USER=default --env=DB_USERNAME=root --env=CHROMA_HOST=127.0.0.1 --env=UNSTRUCTURED_API_URL= --env=NOTION_CLIENT_ID= --env=QDRANT_CLIENT_TIMEOUT=20 --env=NOTION_CLIENT_SECRET= --env=MODE=api --env=TIDB_VECTOR_PASSWORD=xxxxxx --env=TENCENT_VECTOR_DB_SHARD=1 --env=AZURE_BLOB_ACCOUNT_KEY=difyai --env=TENCENT_COS_SECRET_KEY=your-secret-key --env=SSRF_PROXY_HTTPS_URL=http://172.18.0.202:3128 --env=MYSCALE_PASSWORD= --env=TENCENT_COS_BUCKET_NAME=your-bucket-name --env=INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=1000 --env=FILES_ACCESS_TIMEOUT=300 --env=BROKER_USE_SSL=false --env=NOTION_INTEGRATION_TYPE=public --env=CODE_EXECUTION_ENDPOINT=http://172.18.0.204:8194 --env=TENCENT_VECTOR_DB_DATABASE=dify --env=ANALYTICDB_INSTANCE_ID= --env=UPLOAD_IMAGE_FILE_SIZE_LIMIT=10 --env=AZURE_BLOB_CONTAINER_NAME=difyai-container --env=SENTRY_PROFILES_SAMPLE_RATE=1.0 --env=DB_DATABASE=dify --env=CODE_MAX_NUMBER=9223372036854775807 --env=UPLOAD_FILE_SIZE_LIMIT=15 --env=SMTP_PASSWORD= --env=ALIYUN_OSS_BUCKET_NAME=your-bucket-name --env=MAIL_TYPE=resend --env=DIFY_BIND_ADDRESS=0.0.0.0 --env=ANALYTICDB_KEY_SECRET= --env=MILVUS_PORT=19530 --env=ORACLE_PORT=1521 --env=STORAGE_LOCAL_PATH=storage --env='WEB_API_CORS_ALLOW_ORIGINS=*' --env=CODE_EXECUTION_API_KEY=dify-sandbox --env=CELERY_WORKER_CLASS= --env=CONSOLE_API_URL= --env=MIGRATION_ENABLED=true --env=REDIS_HOST=172.18.0.79 --env=GUNICORN_TIMEOUT=360 --volume=/data/site/docker/data/dify/app/storage:/app/api/storage:rw --workdir=/app/api langgenius/dify-api:main
---升级
docker pull langgenius/dify-api:0.9.1 docker pull langgenius/dify-web:0.9.1 docker pull langgenius/dify-sandbox:0.2.9 -# docker pull semitechnologies/weaviate:1.19.0 docker pull postgres:15-alpine docker pull redis:6-alpine docker pull ubuntu/squid:latest docker pull nginx:latest docker save langgenius/dify-api:0.9.1 | gzip > /data/site/htmltoo.f/htmltoo.up/soft/docker.tar/dify-api-0.9.1.tar.gz docker save langgenius/dify-web:0.9.1 | gzip > /data/site/htmltoo.f/htmltoo.up/soft/docker.tar/dify-web-0.9.1.tar.gz docker save langgenius/dify-sandbox:0.2.9 | gzip > /data/site/htmltoo.f/htmltoo.up/soft/docker.tar/dify-sandbox-0.2.9.tar.gz -# docker save semitechnologies/weaviate:1.19.0 | gzip > /data/site/htmltoo.f/htmltoo.up/soft/docker.tar/dify-weaviate-1.19.0.tar.gz docker save postgres:15-alpine | gzip > /data/site/htmltoo.f/htmltoo.up/soft/docker.tar/dify-postgres-15.tar.gz docker save redis:6-alpine | gzip > /data/site/htmltoo.f/htmltoo.up/soft/docker.tar/dify-redis-6.tar.gz docker save ubuntu/squid:latest | gzip > /data/site/htmltoo.f/htmltoo.up/soft/docker.tar/dify-squid.tar.gz docker save nginx:latest | gzip > /data/site/htmltoo.f/htmltoo.up/soft/docker.tar/dify-nginx.tar.gz -# docker rmi langgenius/dify-api:0.9.1 docker rmi langgenius/dify-web:0.9.1 docker rmi langgenius/dify-sandbox:0.2.9
cd /data/site/htmltoo.opt/dify
cp docker-compose.yaml docker-compose.yaml.$(date +%Y%m%d).bak
cp .env .env.$(date +%Y%m%d).bak
cp middleware.env middleware.env.$(date +%Y%m%d).bak
vim docker-compose.yaml
---增加--- web: volumes: - /data/file:/data/file ... db: ports: - "5432:5432"
docker compose down
-备份数据
tar -cvf volumes-$(date +%s).tgz volumes
-运行
docker compose up -d
---设置模型
# ollama
docker run -d --name ollama --hostname ollama -p 11434:11434 --restart=always --gpus=all --network dify_default --ip 172.19.0.34 -v /etc/localtime:/etc/localtime:ro --privileged=true --user=root -e TZ='Asia/Shanghai' --ulimit nofile=262144:262144 -e OLLAMA_ORIGINS='*' -e OLLAMA_HOST='0.0.0.0' -v /data/file:/data/file/ -v /data/file/soft/ollama:/root/.ollama ollama/ollama:0.3.12
-模型名称
qwen2:7b qwen2:72b codegemma:7b
-基础url
http://172.19.0.34:11434
-模型类型
对话
-模型上下文长度,最大 token 上限
4096
-是否支持 Vision
是
---SQL: postgres/difyai123456
UPDATE "public"."sites" SET "copyright" = '码途 AI'
UPDATE "public"."sites" SET "default_language" = 'zh-Hans'
---替换---
docker exec -it dify-web-1 /bin/sh
docker network inspect dify_default
cp -r /app/web /data/file
docker cp /data/file/web dify-web-1:/app/
public/logo/logo-site.png
Dify ---> HtmlToo # 前面有空格
"Dify ---> "HtmlToo # 后面有空格
Dify, HtmlToo,
你好Dify 你好
Hello Dify Hello
Hello, Dify Hello, HtmlToo
你好,Dify 你好, HtmlToo
title:"Dify" title:"HtmlToo"
Dify HtmlToo 两边空格
author:"Dify" author:"HtmlToo"
"Dify Service "HtmlToo Service
Dify {{version}} HtmlToo {{version}}
Powered by Dify Powered by HtmlToo
"name": "dify"
"name":"Dify" "name":"HtmlToo"
"id":"Dify" "id":"HtmlToo"
-
"dify" "HtmlToo"
Dify! HtmlToo!
--- http://b.htmltoo.com, admin@htmltoo.com ---
github.com
LangGenius
/privacy
/terms
discord.gg
5AEfbxcd9k
FngNHpbcY7
docs.dify.ai
support@dify.ai
request-invitation@langgenius.ai
https://dify.ai
https://docs.dify.ai/features/extension/api_based_extension
https://docs.dify.ai/user-agreement/open-source
===
Dify\
"Dify
'Dify ---> 'HtmlToo # 后面有空格
title:"Dify" ---> title:"HtmlToo"
-重置密码
docker exec -it dify-api-1 flask reset-password
#
---nginx
-htmltoo.ai.conf
server {
listen 80;
server_name i.htmltoo.com;
charset utf-8;
index index.html index.htm;
#access_log /data/file/logs/nginx/nginx_i.htmltoo.log main;
error_log /data/file/logs/nginx/error_i.htmltoo.log warn;
location /console/api {
proxy_pass http://172.18.0.206:5001;
include /etc/nginx/conf.d/proxy.conf;
}
location /api {
proxy_pass http://172.18.0.206:5001;
include /etc/nginx/conf.d/proxy.conf;
}
location /v1 {
proxy_pass http://172.18.0.206:5001;
include /etc/nginx/conf.d/proxy.conf;
}
location /files {
proxy_pass http://172.18.0.206:5001;
include /etc/nginx/conf.d/proxy.conf;
}
location / {
proxy_pass http://172.18.0.201:3000;
include /etc/nginx/conf.d/proxy.conf;
}
#pagespeed-START
#include /etc/nginx/conf.d/pagespeed.ini;
#pagespeed-_END
#关闭favicon.ico日志
location = /favicon.ico {
log_not_found off;
access_log off;
}
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#access_log /dev/null;
#error_log /dev/null crit;
}-proxy.conf
proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_buffering off; proxy_read_timeout 3600s; proxy_send_timeout 3600s;
---squid
-squid.conf
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN) acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN) acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN) acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN) acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN) acl localnet src fc00::/7 # RFC 4193 local private network range acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager http_access allow localhost include /etc/squid/conf.d/*.conf http_access deny all ################################## Proxy Server ################################ http_port 8123 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims refresh_pattern \/InRelease$ 0 0% 0 refresh-ims refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims refresh_pattern . 0 20% 4320 # cache_dir ufs /var/spool/squid 100 16 256 # upstream proxy, set to your own upstream proxy IP to avoid SSRF attacks # cache_peer 172.1.1.1 parent 3128 0 no-query no-digest no-netdb-exchange default ################################## Reverse Proxy To Sandbox ################################ http_port 8194 accel vhost cache_peer 8194 parent 8194 0 no-query originserver acl src_all src all http_access allow src_all
-docker-entrypoint.sh
#!/bin/bash
# Modified based on Squid OCI image entrypoint
# This entrypoint aims to forward the squid logs to stdout to assist users of
# common container related tooling (e.g., kubernetes, docker-compose, etc) to
# access the service logs.
# Moreover, it invokes the squid binary, leaving all the desired parameters to
# be provided by the "command" passed to the spawned container. If no command
# is provided by the user, the default behavior (as per the CMD statement in
# the Dockerfile) will be to use Ubuntu's default configuration [1] and run
# squid with the "-NYC" options to mimic the behavior of the Ubuntu provided
# systemd unit.
# [1] The default configuration is changed in the Dockerfile to allow local
# network connections. See the Dockerfile for further information.
echo "[ENTRYPOINT] re-create snakeoil self-signed certificate removed in the build process"
if [ ! -f /etc/ssl/private/ssl-cert-snakeoil.key ]; then
/usr/sbin/make-ssl-cert generate-default-snakeoil --force-overwrite > /dev/null 2>&1
fi
tail -F /var/log/squid/access.log 2>/dev/null &
tail -F /var/log/squid/error.log 2>/dev/null &
tail -F /var/log/squid/store.log 2>/dev/null &
tail -F /var/log/squid/cache.log 2>/dev/null &
# Replace environment variables in the template and output to the squid.conf
echo "[ENTRYPOINT] replacing environment variables in the template"
awk '{
while(match($0, /\${[A-Za-z_][A-Za-z_0-9]*}/)) {
var = substr($0, RSTART+2, RLENGTH-3)
val = ENVIRON[var]
$0 = substr($0, 1, RSTART-1) val substr($0, RSTART+RLENGTH)
}
print
}' /etc/squid/squid.conf.template > /etc/squid/squid.conf
/usr/sbin/squid -Nz
echo "[ENTRYPOINT] starting squid"
/usr/sbin/squid -f /etc/squid/squid.conf -NYC 1#
https://serpapi.com/
904e6e026e36ea5cc5a8ab4e5b720bd98bbd78b92a96c2514fd5d8739b83b463
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
https://jina.ai/
jina_05e5178359f0411da83eadf40d26b0c0KcZpljxfLkp038hL-1mkng-C3Ykl
# 阿里云-千问
sk-ee16f4e3674f492fa7470035be5f54d8
Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。
由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。
Dify 能做什么?
Dify 一词源自 Define + Modify,意指定义并且持续的改进你的 AI 应用,它是为你而做的(Do it for you)。
创业,快速的将你的 AI 应用创意变成现实,无论成功和失败都需要加速。在真实世界,已经有几十个团队通过 Dify 构建 MVP(最小可用产品)获得投资,或通过 POC(概念验证)赢得了客户的订单。
将 LLM 集成至已有业务,通过引入 LLM 增强现有应用的能力,接入 Dify 的 RESTful API 从而实现 Prompt 与业务代码的解耦,在 Dify 的管理界面是跟踪数据、成本和用量,持续改进应用效果。
作为企业级 LLM 基础设施,一些银行和大型互联网公司正在将 Dify 部署为企业内的 LLM 网关,加速 GenAI 技术在企业内的推广,并实现中心化的监管。
探索 LLM 的能力边界,即使你是一个技术爱好者,通过 Dify 也可以轻松的实践 Prompt 工程和 Agent 技术,在 GPTs 推出以前就已经有超过 60,000 开发者在 Dify 上创建了自己的第一个应用。