CatPtain commited on
Commit
5fefff9
·
verified ·
1 Parent(s): bfda145

Upload 18 files

Browse files
docker-legacy/docker-compose.chroma.yaml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ services:
2
+ # Chroma vector store.
3
+ chroma:
4
+ image: ghcr.io/chroma-core/chroma:0.5.20
5
+ restart: always
6
+ volumes:
7
+ - ./volumes/chroma:/chroma/chroma
8
+ environment:
9
+ CHROMA_SERVER_AUTHN_CREDENTIALS: difyai123456
10
+ CHROMA_SERVER_AUTHN_PROVIDER: chromadb.auth.token_authn.TokenAuthenticationServerProvider
11
+ IS_PERSISTENT: TRUE
12
+ ports:
13
+ - "8000:8000"
docker-legacy/docker-compose.middleware.yaml ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: '3'
2
+ services:
3
+ # The postgres database.
4
+ db:
5
+ image: postgres:15-alpine
6
+ restart: always
7
+ environment:
8
+ # The password for the default postgres user.
9
+ POSTGRES_PASSWORD: difyai123456
10
+ # The name of the default postgres database.
11
+ POSTGRES_DB: dify
12
+ # postgres data directory
13
+ PGDATA: /var/lib/postgresql/data/pgdata
14
+ volumes:
15
+ - ./volumes/db/data:/var/lib/postgresql/data
16
+ ports:
17
+ - "5432:5432"
18
+
19
+ # The redis cache.
20
+ redis:
21
+ image: redis:6-alpine
22
+ restart: always
23
+ volumes:
24
+ # Mount the redis data directory to the container.
25
+ - ./volumes/redis/data:/data
26
+ # Set the redis password when startup redis server.
27
+ command: redis-server --requirepass difyai123456
28
+ ports:
29
+ - "6379:6379"
30
+
31
+ # The Weaviate vector store.
32
+ weaviate:
33
+ image: semitechnologies/weaviate:1.19.0
34
+ restart: always
35
+ volumes:
36
+ # Mount the Weaviate data directory to the container.
37
+ - ./volumes/weaviate:/var/lib/weaviate
38
+ environment:
39
+ # The Weaviate configurations
40
+ # You can refer to the [Weaviate](https://weaviate.io/developers/weaviate/config-refs/env-vars) documentation for more information.
41
+ QUERY_DEFAULTS_LIMIT: 25
42
+ AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false'
43
+ PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
44
+ DEFAULT_VECTORIZER_MODULE: 'none'
45
+ CLUSTER_HOSTNAME: 'node1'
46
+ AUTHENTICATION_APIKEY_ENABLED: 'true'
47
+ AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih'
48
+ AUTHENTICATION_APIKEY_USERS: '[email protected]'
49
+ AUTHORIZATION_ADMINLIST_ENABLED: 'true'
50
+ AUTHORIZATION_ADMINLIST_USERS: '[email protected]'
51
+ ports:
52
+ - "8080:8080"
53
+
54
+ # The DifySandbox
55
+ sandbox:
56
+ image: langgenius/dify-sandbox:0.2.1
57
+ restart: always
58
+ environment:
59
+ # The DifySandbox configurations
60
+ # Make sure you are changing this key for your deployment with a strong key.
61
+ # You can generate a strong key using `openssl rand -base64 42`.
62
+ API_KEY: dify-sandbox
63
+ GIN_MODE: 'release'
64
+ WORKER_TIMEOUT: 15
65
+ ENABLE_NETWORK: 'true'
66
+ HTTP_PROXY: 'http://ssrf_proxy:3128'
67
+ HTTPS_PROXY: 'http://ssrf_proxy:3128'
68
+ SANDBOX_PORT: 8194
69
+ volumes:
70
+ - ./volumes/sandbox/dependencies:/dependencies
71
+ networks:
72
+ - ssrf_proxy_network
73
+
74
+ # ssrf_proxy server
75
+ # for more information, please refer to
76
+ # https://docs.dify.ai/learn-more/faq/install-faq#id-18.-why-is-ssrf_proxy-needed
77
+ ssrf_proxy:
78
+ image: ubuntu/squid:latest
79
+ restart: always
80
+ ports:
81
+ - "3128:3128"
82
+ - "8194:8194"
83
+ volumes:
84
+ # pls clearly modify the squid.conf file to fit your network environment.
85
+ - ./volumes/ssrf_proxy/squid.conf:/etc/squid/squid.conf
86
+ networks:
87
+ - ssrf_proxy_network
88
+ - default
89
+ # Qdrant vector store.
90
+ # uncomment to use qdrant as vector store.
91
+ # (if uncommented, you need to comment out the weaviate service above,
92
+ # and set VECTOR_STORE to qdrant in the api & worker service.)
93
+ # qdrant:
94
+ # image: qdrant/qdrant:1.7.3
95
+ # restart: always
96
+ # volumes:
97
+ # - ./volumes/qdrant:/qdrant/storage
98
+ # environment:
99
+ # QDRANT_API_KEY: 'difyai123456'
100
+ # ports:
101
+ # - "6333:6333"
102
+ # - "6334:6334"
103
+
104
+
105
+ networks:
106
+ # create a network between sandbox, api and ssrf_proxy, and can not access outside.
107
+ ssrf_proxy_network:
108
+ driver: bridge
109
+ internal: true
docker-legacy/docker-compose.milvus.yaml ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: '3.5'
2
+
3
+ services:
4
+ etcd:
5
+ container_name: milvus-etcd
6
+ image: quay.io/coreos/etcd:v3.5.5
7
+ environment:
8
+ - ETCD_AUTO_COMPACTION_MODE=revision
9
+ - ETCD_AUTO_COMPACTION_RETENTION=1000
10
+ - ETCD_QUOTA_BACKEND_BYTES=4294967296
11
+ - ETCD_SNAPSHOT_COUNT=50000
12
+ volumes:
13
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
14
+ command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
15
+ healthcheck:
16
+ test: ["CMD", "etcdctl", "endpoint", "health"]
17
+ interval: 30s
18
+ timeout: 20s
19
+ retries: 3
20
+
21
+ minio:
22
+ container_name: milvus-minio
23
+ image: minio/minio:RELEASE.2023-03-20T20-16-18Z
24
+ environment:
25
+ MINIO_ACCESS_KEY: minioadmin
26
+ MINIO_SECRET_KEY: minioadmin
27
+ ports:
28
+ - "9001:9001"
29
+ - "9000:9000"
30
+ volumes:
31
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
32
+ command: minio server /minio_data --console-address ":9001"
33
+ healthcheck:
34
+ test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
35
+ interval: 30s
36
+ timeout: 20s
37
+ retries: 3
38
+
39
+ milvus-standalone:
40
+ container_name: milvus-standalone
41
+ image: milvusdb/milvus:v2.4.6
42
+ command: ["milvus", "run", "standalone"]
43
+ environment:
44
+ ETCD_ENDPOINTS: etcd:2379
45
+ MINIO_ADDRESS: minio:9000
46
+ common.security.authorizationEnabled: true
47
+ volumes:
48
+ - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
49
+ healthcheck:
50
+ test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
51
+ interval: 30s
52
+ start_period: 90s
53
+ timeout: 20s
54
+ retries: 3
55
+ ports:
56
+ - "19530:19530"
57
+ - "9091:9091"
58
+ depends_on:
59
+ - "etcd"
60
+ - "minio"
61
+
62
+ networks:
63
+ default:
64
+ name: milvus
docker-legacy/docker-compose.opensearch.yml ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ services:
2
+ opensearch: # This is also the hostname of the container within the Docker network (i.e. https://opensearch/)
3
+ image: opensearchproject/opensearch:latest # Specifying the latest available image - modify if you want a specific version
4
+ container_name: opensearch
5
+ environment:
6
+ - discovery.type=single-node
7
+ - bootstrap.memory_lock=true # Disable JVM heap memory swapping
8
+ - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx1024m" # Set min and max JVM heap sizes to at least 50% of system RAM
9
+ - OPENSEARCH_INITIAL_ADMIN_PASSWORD=Qazwsxedc!@#123 # Sets the demo admin user password when using demo configuration, required for OpenSearch 2.12 and later
10
+ ulimits:
11
+ memlock:
12
+ soft: -1 # Set memlock to unlimited (no soft or hard limit)
13
+ hard: -1
14
+ nofile:
15
+ soft: 65536 # Maximum number of open files for the opensearch user - set to at least 65536
16
+ hard: 65536
17
+ volumes:
18
+ - ./volumes/opensearch/data:/usr/share/opensearch/data # Creates volume called opensearch-data1 and mounts it to the container
19
+ ports:
20
+ - 9200:9200 # REST API
21
+ - 9600:9600 # Performance Analyzer
22
+ networks:
23
+ - opensearch-net # All of the containers will join the same Docker bridge network
24
+ opensearch-dashboards:
25
+ image: opensearchproject/opensearch-dashboards:latest # Make sure the version of opensearch-dashboards matches the version of opensearch installed on other nodes
26
+ container_name: opensearch-dashboards
27
+ ports:
28
+ - 5601:5601 # Map host port 5601 to container port 5601
29
+ expose:
30
+ - "5601" # Expose port 5601 for web access to OpenSearch Dashboards
31
+ environment:
32
+ OPENSEARCH_HOSTS: '["https://opensearch:9200"]' # Define the OpenSearch nodes that OpenSearch Dashboards will query
33
+ volumes:
34
+ - ./volumes/opensearch/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml
35
+ networks:
36
+ - opensearch-net
37
+
38
+ networks:
39
+ opensearch-net:
40
+ driver: bridge
docker-legacy/docker-compose.oracle.yaml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ services:
2
+ # oracle 23 ai vector store.
3
+ oracle:
4
+ image: container-registry.oracle.com/database/free:latest
5
+ restart: always
6
+ ports:
7
+ - 1521:1521
8
+ volumes:
9
+ - type: volume
10
+ source: oradata_vector
11
+ target: /opt/oracle/oradata
12
+ - ./startupscripts:/opt/oracle/scripts/startup
13
+ environment:
14
+ - ORACLE_PWD=Dify123456
15
+ - ORACLE_CHARACTERSET=AL32UTF8
16
+ volumes:
17
+ oradata_vector:
docker-legacy/docker-compose.pgvecto-rs.yaml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ services:
2
+ # The pgvecto—rs database.
3
+ pgvecto-rs:
4
+ image: tensorchord/pgvecto-rs:pg16-v0.2.0
5
+ restart: always
6
+ environment:
7
+ PGUSER: postgres
8
+ # The password for the default postgres user.
9
+ POSTGRES_PASSWORD: difyai123456
10
+ # The name of the default postgres database.
11
+ POSTGRES_DB: dify
12
+ # postgres data directory
13
+ PGDATA: /var/lib/postgresql/data/pgdata
14
+ volumes:
15
+ - ./volumes/pgvectors/data:/var/lib/postgresql/data
16
+ # uncomment to expose db(postgresql) port to host
17
+ ports:
18
+ - "5431:5432"
19
+ healthcheck:
20
+ test: [ "CMD", "pg_isready" ]
21
+ interval: 1s
22
+ timeout: 3s
23
+ retries: 30
docker-legacy/docker-compose.pgvector.yaml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ services:
2
+ # Qdrant vector store.
3
+ pgvector:
4
+ image: pgvector/pgvector:pg16
5
+ restart: always
6
+ environment:
7
+ PGUSER: postgres
8
+ # The password for the default postgres user.
9
+ POSTGRES_PASSWORD: difyai123456
10
+ # The name of the default postgres database.
11
+ POSTGRES_DB: dify
12
+ # postgres data directory
13
+ PGDATA: /var/lib/postgresql/data/pgdata
14
+ volumes:
15
+ - ./volumes/pgvector/data:/var/lib/postgresql/data
16
+ # uncomment to expose db(postgresql) port to host
17
+ ports:
18
+ - "5433:5432"
19
+ healthcheck:
20
+ test: [ "CMD", "pg_isready" ]
21
+ interval: 1s
22
+ timeout: 3s
23
+ retries: 30
docker-legacy/docker-compose.png ADDED
docker-legacy/docker-compose.qdrant.yaml ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ services:
2
+ # Qdrant vector store.
3
+ qdrant:
4
+ image: langgenius/qdrant:v1.7.3
5
+ restart: always
6
+ volumes:
7
+ - ./volumes/qdrant:/qdrant/storage
8
+ environment:
9
+ QDRANT_API_KEY: 'difyai123456'
10
+ ports:
11
+ - "6333:6333"
12
+ - "6334:6334"
docker-legacy/docker-compose.yaml ADDED
@@ -0,0 +1,597 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: '3'
2
+ services:
3
+ # API service
4
+ api:
5
+ image: langgenius/dify-api:0.15.3
6
+ restart: always
7
+ environment:
8
+ # Startup mode, 'api' starts the API server.
9
+ MODE: api
10
+ # The log level for the application. Supported values are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`
11
+ LOG_LEVEL: INFO
12
+ # enable DEBUG mode to output more logs
13
+ # DEBUG : true
14
+ # A secret key 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`.
15
+ SECRET_KEY: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U
16
+ # The base URL of console application web frontend, refers to the Console base URL of WEB service if console domain is
17
+ # different from api or web app domain.
18
+ # example: http://cloud.dify.ai
19
+ CONSOLE_WEB_URL: ''
20
+ # Password for admin user initialization.
21
+ # If left unset, admin user will not be prompted for a password when creating the initial admin account.
22
+ INIT_PASSWORD: ''
23
+ # The base URL of console application api server, refers to the Console base URL of WEB service if console domain is
24
+ # different from api or web app domain.
25
+ # example: http://cloud.dify.ai
26
+ CONSOLE_API_URL: ''
27
+ # The URL prefix for Service API endpoints, refers to the base URL of the current API service if api domain is
28
+ # different from console domain.
29
+ # example: http://api.dify.ai
30
+ SERVICE_API_URL: ''
31
+ # The URL prefix for Web APP frontend, refers to the Web App base URL of WEB service if web app domain is different from
32
+ # console or api domain.
33
+ # example: http://udify.app
34
+ APP_WEB_URL: ''
35
+ # File preview or download Url prefix.
36
+ # used to display File preview or download Url to the front-end or as Multi-model inputs;
37
+ # Url is signed and has expiration time.
38
+ FILES_URL: ''
39
+ # File Access Time specifies a time interval in seconds for the file to be accessed.
40
+ # The default value is 300 seconds.
41
+ FILES_ACCESS_TIMEOUT: 300
42
+ # The maximum number of active requests for the application, where 0 means unlimited, should be a non-negative integer.
43
+ APP_MAX_ACTIVE_REQUESTS: 0
44
+ # When enabled, migrations will be executed prior to application startup and the application will start after the migrations have completed.
45
+ MIGRATION_ENABLED: 'true'
46
+ # The configurations of postgres database connection.
47
+ # It is consistent with the configuration in the 'db' service below.
48
+ DB_USERNAME: postgres
49
+ DB_PASSWORD: difyai123456
50
+ DB_HOST: db
51
+ DB_PORT: 5432
52
+ DB_DATABASE: dify
53
+ # The configurations of redis connection.
54
+ # It is consistent with the configuration in the 'redis' service below.
55
+ REDIS_HOST: redis
56
+ REDIS_PORT: 6379
57
+ REDIS_USERNAME: ''
58
+ REDIS_PASSWORD: difyai123456
59
+ REDIS_USE_SSL: 'false'
60
+ # use redis db 0 for redis cache
61
+ REDIS_DB: 0
62
+ # The configurations of celery broker.
63
+ # Use redis as the broker, and redis db 1 for celery broker.
64
+ CELERY_BROKER_URL: redis://:difyai123456@redis:6379/1
65
+ # Specifies the allowed origins for cross-origin requests to the Web API, e.g. https://dify.app or * for all origins.
66
+ WEB_API_CORS_ALLOW_ORIGINS: '*'
67
+ # Specifies the allowed origins for cross-origin requests to the console API, e.g. https://cloud.dify.ai or * for all origins.
68
+ CONSOLE_CORS_ALLOW_ORIGINS: '*'
69
+ # CSRF Cookie settings
70
+ # Controls whether a cookie is sent with cross-site requests,
71
+ # providing some protection against cross-site request forgery attacks
72
+ #
73
+ # Default: `SameSite=Lax, Secure=false, HttpOnly=true`
74
+ # This default configuration supports same-origin requests using either HTTP or HTTPS,
75
+ # but does not support cross-origin requests. It is suitable for local debugging purposes.
76
+ #
77
+ # If you want to enable cross-origin support,
78
+ # you must use the HTTPS protocol and set the configuration to `SameSite=None, Secure=true, HttpOnly=true`.
79
+ #
80
+ # The type of storage to use for storing user files. Supported values are `local` and `s3` and `azure-blob` and `google-storage`, Default: `local`
81
+ STORAGE_TYPE: local
82
+ # The path to the local storage directory, the directory relative the root path of API service codes or absolute path. Default: `storage` or `/home/john/storage`.
83
+ # only available when STORAGE_TYPE is `local`.
84
+ STORAGE_LOCAL_PATH: storage
85
+ # The S3 storage configurations, only available when STORAGE_TYPE is `s3`.
86
+ S3_USE_AWS_MANAGED_IAM: 'false'
87
+ S3_ENDPOINT: 'https://xxx.r2.cloudflarestorage.com'
88
+ S3_BUCKET_NAME: 'difyai'
89
+ S3_ACCESS_KEY: 'ak-difyai'
90
+ S3_SECRET_KEY: 'sk-difyai'
91
+ S3_REGION: 'us-east-1'
92
+ # The Azure Blob storage configurations, only available when STORAGE_TYPE is `azure-blob`.
93
+ AZURE_BLOB_ACCOUNT_NAME: 'difyai'
94
+ AZURE_BLOB_ACCOUNT_KEY: 'difyai'
95
+ AZURE_BLOB_CONTAINER_NAME: 'difyai-container'
96
+ AZURE_BLOB_ACCOUNT_URL: 'https://<your_account_name>.blob.core.windows.net'
97
+ # The Google storage configurations, only available when STORAGE_TYPE is `google-storage`.
98
+ GOOGLE_STORAGE_BUCKET_NAME: 'yout-bucket-name'
99
+ # if you want to use Application Default Credentials, you can leave GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64 empty.
100
+ GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64: 'your-google-service-account-json-base64-string'
101
+ # The Alibaba Cloud OSS configurations, only available when STORAGE_TYPE is `aliyun-oss`
102
+ ALIYUN_OSS_BUCKET_NAME: 'your-bucket-name'
103
+ ALIYUN_OSS_ACCESS_KEY: 'your-access-key'
104
+ ALIYUN_OSS_SECRET_KEY: 'your-secret-key'
105
+ ALIYUN_OSS_ENDPOINT: 'https://oss-ap-southeast-1-internal.aliyuncs.com'
106
+ ALIYUN_OSS_REGION: 'ap-southeast-1'
107
+ ALIYUN_OSS_AUTH_VERSION: 'v4'
108
+ # The Tencent COS storage configurations, only available when STORAGE_TYPE is `tencent-cos`.
109
+ TENCENT_COS_BUCKET_NAME: 'your-bucket-name'
110
+ TENCENT_COS_SECRET_KEY: 'your-secret-key'
111
+ TENCENT_COS_SECRET_ID: 'your-secret-id'
112
+ TENCENT_COS_REGION: 'your-region'
113
+ TENCENT_COS_SCHEME: 'your-scheme'
114
+ # The type of vector store to use. Supported values are `weaviate`, `qdrant`, `milvus`, `relyt`,`pgvector`, `chroma`, 'opensearch', 'tidb_vector'.
115
+ VECTOR_STORE: weaviate
116
+ # The Weaviate endpoint URL. Only available when VECTOR_STORE is `weaviate`.
117
+ WEAVIATE_ENDPOINT: http://weaviate:8080
118
+ # The Weaviate API key.
119
+ WEAVIATE_API_KEY: WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih
120
+ # The Qdrant endpoint URL. Only available when VECTOR_STORE is `qdrant`.
121
+ QDRANT_URL: http://qdrant:6333
122
+ # The Qdrant API key.
123
+ QDRANT_API_KEY: difyai123456
124
+ # The Qdrant client timeout setting.
125
+ QDRANT_CLIENT_TIMEOUT: 20
126
+ # The Qdrant client enable gRPC mode.
127
+ QDRANT_GRPC_ENABLED: 'false'
128
+ # The Qdrant server gRPC mode PORT.
129
+ QDRANT_GRPC_PORT: 6334
130
+ # Milvus configuration Only available when VECTOR_STORE is `milvus`.
131
+ # The milvus uri.
132
+ MILVUS_URI: http://127.0.0.1:19530
133
+ # The milvus token.
134
+ MILVUS_TOKEN: ''
135
+ # The milvus username.
136
+ MILVUS_USER: root
137
+ # The milvus password.
138
+ MILVUS_PASSWORD: Milvus
139
+ # relyt configurations
140
+ RELYT_HOST: db
141
+ RELYT_PORT: 5432
142
+ RELYT_USER: postgres
143
+ RELYT_PASSWORD: difyai123456
144
+ RELYT_DATABASE: postgres
145
+ # pgvector configurations
146
+ PGVECTOR_HOST: pgvector
147
+ PGVECTOR_PORT: 5432
148
+ PGVECTOR_USER: postgres
149
+ PGVECTOR_PASSWORD: difyai123456
150
+ PGVECTOR_DATABASE: dify
151
+ # tidb vector configurations
152
+ TIDB_VECTOR_HOST: tidb
153
+ TIDB_VECTOR_PORT: 4000
154
+ TIDB_VECTOR_USER: xxx.root
155
+ TIDB_VECTOR_PASSWORD: xxxxxx
156
+ TIDB_VECTOR_DATABASE: dify
157
+ # oracle configurations
158
+ ORACLE_HOST: oracle
159
+ ORACLE_PORT: 1521
160
+ ORACLE_USER: dify
161
+ ORACLE_PASSWORD: dify
162
+ ORACLE_DATABASE: FREEPDB1
163
+ # Chroma configuration
164
+ CHROMA_HOST: 127.0.0.1
165
+ CHROMA_PORT: 8000
166
+ CHROMA_TENANT: default_tenant
167
+ CHROMA_DATABASE: default_database
168
+ CHROMA_AUTH_PROVIDER: chromadb.auth.token_authn.TokenAuthClientProvider
169
+ CHROMA_AUTH_CREDENTIALS: xxxxxx
170
+ # ElasticSearch Config
171
+ ELASTICSEARCH_HOST: 127.0.0.1
172
+ ELASTICSEARCH_PORT: 9200
173
+ ELASTICSEARCH_USERNAME: elastic
174
+ ELASTICSEARCH_PASSWORD: elastic
175
+ # Mail configuration, support: resend, smtp
176
+ MAIL_TYPE: ''
177
+ # default send from email address, if not specified
178
+ MAIL_DEFAULT_SEND_FROM: 'YOUR EMAIL FROM (eg: no-reply <[email protected]>)'
179
+ SMTP_SERVER: ''
180
+ SMTP_PORT: 465
181
+ SMTP_USERNAME: ''
182
+ SMTP_PASSWORD: ''
183
+ SMTP_USE_TLS: 'true'
184
+ SMTP_OPPORTUNISTIC_TLS: 'false'
185
+ # the api-key for resend (https://resend.com)
186
+ RESEND_API_KEY: ''
187
+ RESEND_API_URL: https://api.resend.com
188
+ # The DSN for Sentry error reporting. If not set, Sentry error reporting will be disabled.
189
+ SENTRY_DSN: ''
190
+ # The sample rate for Sentry events. Default: `1.0`
191
+ SENTRY_TRACES_SAMPLE_RATE: 1.0
192
+ # The sample rate for Sentry profiles. Default: `1.0`
193
+ SENTRY_PROFILES_SAMPLE_RATE: 1.0
194
+ # Notion import configuration, support public and internal
195
+ NOTION_INTEGRATION_TYPE: public
196
+ NOTION_CLIENT_SECRET: you-client-secret
197
+ NOTION_CLIENT_ID: you-client-id
198
+ NOTION_INTERNAL_SECRET: you-internal-secret
199
+ # The sandbox service endpoint.
200
+ CODE_EXECUTION_ENDPOINT: "http://sandbox:8194"
201
+ CODE_EXECUTION_API_KEY: dify-sandbox
202
+ CODE_MAX_NUMBER: 9223372036854775807
203
+ CODE_MIN_NUMBER: -9223372036854775808
204
+ CODE_MAX_STRING_LENGTH: 80000
205
+ TEMPLATE_TRANSFORM_MAX_LENGTH: 80000
206
+ CODE_MAX_STRING_ARRAY_LENGTH: 30
207
+ CODE_MAX_OBJECT_ARRAY_LENGTH: 30
208
+ CODE_MAX_NUMBER_ARRAY_LENGTH: 1000
209
+ # SSRF Proxy server
210
+ SSRF_PROXY_HTTP_URL: 'http://ssrf_proxy:3128'
211
+ SSRF_PROXY_HTTPS_URL: 'http://ssrf_proxy:3128'
212
+ # Indexing configuration
213
+ INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: 4000
214
+ depends_on:
215
+ - db
216
+ - redis
217
+ volumes:
218
+ # Mount the storage directory to the container, for storing user files.
219
+ - ./volumes/app/storage:/app/api/storage
220
+ # uncomment to expose dify-api port to host
221
+ # ports:
222
+ # - "5001:5001"
223
+ networks:
224
+ - ssrf_proxy_network
225
+ - default
226
+
227
+ # worker service
228
+ # The Celery worker for processing the queue.
229
+ worker:
230
+ image: langgenius/dify-api:0.15.3
231
+ restart: always
232
+ environment:
233
+ CONSOLE_WEB_URL: ''
234
+ # Startup mode, 'worker' starts the Celery worker for processing the queue.
235
+ MODE: worker
236
+
237
+ # --- All the configurations below are the same as those in the 'api' service. ---
238
+
239
+ # The log level for the application. Supported values are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`
240
+ LOG_LEVEL: INFO
241
+ # A secret key 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`.
242
+ # same as the API service
243
+ SECRET_KEY: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U
244
+ # The configurations of postgres database connection.
245
+ # It is consistent with the configuration in the 'db' service below.
246
+ DB_USERNAME: postgres
247
+ DB_PASSWORD: difyai123456
248
+ DB_HOST: db
249
+ DB_PORT: 5432
250
+ DB_DATABASE: dify
251
+ # The configurations of redis cache connection.
252
+ REDIS_HOST: redis
253
+ REDIS_PORT: 6379
254
+ REDIS_USERNAME: ''
255
+ REDIS_PASSWORD: difyai123456
256
+ REDIS_DB: 0
257
+ REDIS_USE_SSL: 'false'
258
+ # The configurations of celery broker.
259
+ CELERY_BROKER_URL: redis://:difyai123456@redis:6379/1
260
+ # The type of storage to use for storing user files. Supported values are `local` and `s3` and `azure-blob` and `google-storage`, Default: `local`
261
+ STORAGE_TYPE: local
262
+ STORAGE_LOCAL_PATH: storage
263
+ # The S3 storage configurations, only available when STORAGE_TYPE is `s3`.
264
+ S3_USE_AWS_MANAGED_IAM: 'false'
265
+ S3_ENDPOINT: 'https://xxx.r2.cloudflarestorage.com'
266
+ S3_BUCKET_NAME: 'difyai'
267
+ S3_ACCESS_KEY: 'ak-difyai'
268
+ S3_SECRET_KEY: 'sk-difyai'
269
+ S3_REGION: 'us-east-1'
270
+ # The Azure Blob storage configurations, only available when STORAGE_TYPE is `azure-blob`.
271
+ AZURE_BLOB_ACCOUNT_NAME: 'difyai'
272
+ AZURE_BLOB_ACCOUNT_KEY: 'difyai'
273
+ AZURE_BLOB_CONTAINER_NAME: 'difyai-container'
274
+ AZURE_BLOB_ACCOUNT_URL: 'https://<your_account_name>.blob.core.windows.net'
275
+ # The Google storage configurations, only available when STORAGE_TYPE is `google-storage`.
276
+ GOOGLE_STORAGE_BUCKET_NAME: 'yout-bucket-name'
277
+ # if you want to use Application Default Credentials, you can leave GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64 empty.
278
+ GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64: 'your-google-service-account-json-base64-string'
279
+ # The Alibaba Cloud OSS configurations, only available when STORAGE_TYPE is `aliyun-oss`
280
+ ALIYUN_OSS_BUCKET_NAME: 'your-bucket-name'
281
+ ALIYUN_OSS_ACCESS_KEY: 'your-access-key'
282
+ ALIYUN_OSS_SECRET_KEY: 'your-secret-key'
283
+ ALIYUN_OSS_ENDPOINT: 'https://oss-ap-southeast-1-internal.aliyuncs.com'
284
+ ALIYUN_OSS_REGION: 'ap-southeast-1'
285
+ ALIYUN_OSS_AUTH_VERSION: 'v4'
286
+ # The Tencent COS storage configurations, only available when STORAGE_TYPE is `tencent-cos`.
287
+ TENCENT_COS_BUCKET_NAME: 'your-bucket-name'
288
+ TENCENT_COS_SECRET_KEY: 'your-secret-key'
289
+ TENCENT_COS_SECRET_ID: 'your-secret-id'
290
+ TENCENT_COS_REGION: 'your-region'
291
+ TENCENT_COS_SCHEME: 'your-scheme'
292
+ # The type of vector store to use. Supported values are `weaviate`, `qdrant`, `milvus`, `relyt`, `pgvector`, `chroma`, 'opensearch', 'tidb_vector'.
293
+ VECTOR_STORE: weaviate
294
+ # The Weaviate endpoint URL. Only available when VECTOR_STORE is `weaviate`.
295
+ WEAVIATE_ENDPOINT: http://weaviate:8080
296
+ # The Weaviate API key.
297
+ WEAVIATE_API_KEY: WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih
298
+ # The Qdrant endpoint URL. Only available when VECTOR_STORE is `qdrant`.
299
+ QDRANT_URL: http://qdrant:6333
300
+ # The Qdrant API key.
301
+ QDRANT_API_KEY: difyai123456
302
+ # The Qdrant client timeout setting.
303
+ QDRANT_CLIENT_TIMEOUT: 20
304
+ # The Qdrant client enable gRPC mode.
305
+ QDRANT_GRPC_ENABLED: 'false'
306
+ # The Qdrant server gRPC mode PORT.
307
+ QDRANT_GRPC_PORT: 6334
308
+ # Milvus configuration Only available when VECTOR_STORE is `milvus`.
309
+ # The milvus uri.
310
+ MILVUS_URI: http://127.0.0.1:19530
311
+ # The milvus token.
312
+ MILVUS_PORT: ''
313
+ # The milvus username.
314
+ MILVUS_USER: root
315
+ # The milvus password.
316
+ MILVUS_PASSWORD: Milvus
317
+ # Mail configuration, support: resend
318
+ MAIL_TYPE: ''
319
+ # default send from email address, if not specified
320
+ MAIL_DEFAULT_SEND_FROM: 'YOUR EMAIL FROM (eg: no-reply <[email protected]>)'
321
+ SMTP_SERVER: ''
322
+ SMTP_PORT: 465
323
+ SMTP_USERNAME: ''
324
+ SMTP_PASSWORD: ''
325
+ SMTP_USE_TLS: 'true'
326
+ SMTP_OPPORTUNISTIC_TLS: 'false'
327
+ # the api-key for resend (https://resend.com)
328
+ RESEND_API_KEY: ''
329
+ RESEND_API_URL: https://api.resend.com
330
+ # relyt configurations
331
+ RELYT_HOST: db
332
+ RELYT_PORT: 5432
333
+ RELYT_USER: postgres
334
+ RELYT_PASSWORD: difyai123456
335
+ RELYT_DATABASE: postgres
336
+ # tencent configurations
337
+ TENCENT_VECTOR_DB_URL: http://127.0.0.1
338
+ TENCENT_VECTOR_DB_API_KEY: dify
339
+ TENCENT_VECTOR_DB_TIMEOUT: 30
340
+ TENCENT_VECTOR_DB_USERNAME: dify
341
+ TENCENT_VECTOR_DB_DATABASE: dify
342
+ TENCENT_VECTOR_DB_SHARD: 1
343
+ TENCENT_VECTOR_DB_REPLICAS: 2
344
+ # OpenSearch configuration
345
+ OPENSEARCH_HOST: 127.0.0.1
346
+ OPENSEARCH_PORT: 9200
347
+ OPENSEARCH_USER: admin
348
+ OPENSEARCH_PASSWORD: admin
349
+ OPENSEARCH_SECURE: 'true'
350
+ # pgvector configurations
351
+ PGVECTOR_HOST: pgvector
352
+ PGVECTOR_PORT: 5432
353
+ PGVECTOR_USER: postgres
354
+ PGVECTOR_PASSWORD: difyai123456
355
+ PGVECTOR_DATABASE: dify
356
+ # tidb vector configurations
357
+ TIDB_VECTOR_HOST: tidb
358
+ TIDB_VECTOR_PORT: 4000
359
+ TIDB_VECTOR_USER: xxx.root
360
+ TIDB_VECTOR_PASSWORD: xxxxxx
361
+ TIDB_VECTOR_DATABASE: dify
362
+ # oracle configurations
363
+ ORACLE_HOST: oracle
364
+ ORACLE_PORT: 1521
365
+ ORACLE_USER: dify
366
+ ORACLE_PASSWORD: dify
367
+ ORACLE_DATABASE: FREEPDB1
368
+ # Chroma configuration
369
+ CHROMA_HOST: 127.0.0.1
370
+ CHROMA_PORT: 8000
371
+ CHROMA_TENANT: default_tenant
372
+ CHROMA_DATABASE: default_database
373
+ CHROMA_AUTH_PROVIDER: chromadb.auth.token_authn.TokenAuthClientProvider
374
+ CHROMA_AUTH_CREDENTIALS: xxxxxx
375
+ # ElasticSearch Config
376
+ ELASTICSEARCH_HOST: 127.0.0.1
377
+ ELASTICSEARCH_PORT: 9200
378
+ ELASTICSEARCH_USERNAME: elastic
379
+ ELASTICSEARCH_PASSWORD: elastic
380
+ # Notion import configuration, support public and internal
381
+ NOTION_INTEGRATION_TYPE: public
382
+ NOTION_CLIENT_SECRET: you-client-secret
383
+ NOTION_CLIENT_ID: you-client-id
384
+ NOTION_INTERNAL_SECRET: you-internal-secret
385
+ # Indexing configuration
386
+ INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: 1000
387
+ CREATE_TIDB_SERVICE_JOB_ENABLED: false
388
+ depends_on:
389
+ - db
390
+ - redis
391
+ volumes:
392
+ # Mount the storage directory to the container, for storing user files.
393
+ - ./volumes/app/storage:/app/api/storage
394
+ networks:
395
+ - ssrf_proxy_network
396
+ - default
397
+
398
+ # Frontend web application.
399
+ web:
400
+ image: langgenius/dify-web:0.15.3
401
+ restart: always
402
+ environment:
403
+ # The base URL of console application api server, refers to the Console base URL of WEB service if console domain is
404
+ # different from api or web app domain.
405
+ # example: http://cloud.dify.ai
406
+ CONSOLE_API_URL: ''
407
+ # The URL for Web APP api server, refers to the Web App base URL of WEB service if web app domain is different from
408
+ # console or api domain.
409
+ # example: http://udify.app
410
+ APP_API_URL: ''
411
+ # The DSN for Sentry error reporting. If not set, Sentry error reporting will be disabled.
412
+ SENTRY_DSN: ''
413
+ # uncomment to expose dify-web port to host
414
+ # ports:
415
+ # - "3000:3000"
416
+
417
+ # The postgres database.
418
+ db:
419
+ image: postgres:15-alpine
420
+ restart: always
421
+ environment:
422
+ PGUSER: postgres
423
+ # The password for the default postgres user.
424
+ POSTGRES_PASSWORD: difyai123456
425
+ # The name of the default postgres database.
426
+ POSTGRES_DB: dify
427
+ # postgres data directory
428
+ PGDATA: /var/lib/postgresql/data/pgdata
429
+ volumes:
430
+ - ./volumes/db/data:/var/lib/postgresql/data
431
+ # notice!: if you use windows-wsl2, postgres may not work properly due to the ntfs issue.you can use volumes to mount the data directory to the host.
432
+ # if you use the following config, you need to uncomment the volumes configuration below at the end of the file.
433
+ # - postgres:/var/lib/postgresql/data
434
+ # uncomment to expose db(postgresql) port to host
435
+ # ports:
436
+ # - "5432:5432"
437
+ healthcheck:
438
+ test: [ "CMD", "pg_isready" ]
439
+ interval: 1s
440
+ timeout: 3s
441
+ retries: 30
442
+
443
+ # The redis cache.
444
+ redis:
445
+ image: redis:6-alpine
446
+ restart: always
447
+ volumes:
448
+ # Mount the redis data directory to the container.
449
+ - ./volumes/redis/data:/data
450
+ # Set the redis password when startup redis server.
451
+ command: redis-server --requirepass difyai123456
452
+ healthcheck:
453
+ test: [ "CMD", "redis-cli", "ping" ]
454
+ # uncomment to expose redis port to host
455
+ # ports:
456
+ # - "6379:6379"
457
+
458
+ # The Weaviate vector store.
459
+ weaviate:
460
+ image: semitechnologies/weaviate:1.19.0
461
+ restart: always
462
+ volumes:
463
+ # Mount the Weaviate data directory to the container.
464
+ - ./volumes/weaviate:/var/lib/weaviate
465
+ environment:
466
+ # The Weaviate configurations
467
+ # You can refer to the [Weaviate](https://weaviate.io/developers/weaviate/config-refs/env-vars) documentation for more information.
468
+ QUERY_DEFAULTS_LIMIT: 25
469
+ AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false'
470
+ PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
471
+ DEFAULT_VECTORIZER_MODULE: 'none'
472
+ CLUSTER_HOSTNAME: 'node1'
473
+ AUTHENTICATION_APIKEY_ENABLED: 'true'
474
+ AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih'
475
+ AUTHENTICATION_APIKEY_USERS: '[email protected]'
476
+ AUTHORIZATION_ADMINLIST_ENABLED: 'true'
477
+ AUTHORIZATION_ADMINLIST_USERS: '[email protected]'
478
+ # uncomment to expose weaviate port to host
479
+ # ports:
480
+ # - "8080:8080"
481
+
482
+ # The DifySandbox
483
+ sandbox:
484
+ image: langgenius/dify-sandbox:0.2.1
485
+ restart: always
486
+ environment:
487
+ # The DifySandbox configurations
488
+ # Make sure you are changing this key for your deployment with a strong key.
489
+ # You can generate a strong key using `openssl rand -base64 42`.
490
+ API_KEY: dify-sandbox
491
+ GIN_MODE: 'release'
492
+ WORKER_TIMEOUT: 15
493
+ ENABLE_NETWORK: 'true'
494
+ HTTP_PROXY: 'http://ssrf_proxy:3128'
495
+ HTTPS_PROXY: 'http://ssrf_proxy:3128'
496
+ SANDBOX_PORT: 8194
497
+ volumes:
498
+ - ./volumes/sandbox/dependencies:/dependencies
499
+ networks:
500
+ - ssrf_proxy_network
501
+
502
+ # ssrf_proxy server
503
+ # for more information, please refer to
504
+ # https://docs.dify.ai/learn-more/faq/install-faq#id-18.-why-is-ssrf_proxy-needed
505
+ ssrf_proxy:
506
+ image: ubuntu/squid:latest
507
+ restart: always
508
+ volumes:
509
+ # pls clearly modify the squid.conf file to fit your network environment.
510
+ - ./volumes/ssrf_proxy/squid.conf:/etc/squid/squid.conf
511
+ networks:
512
+ - ssrf_proxy_network
513
+ - default
514
+ # Qdrant vector store.
515
+ # uncomment to use qdrant as vector store.
516
+ # (if uncommented, you need to comment out the weaviate service above,
517
+ # and set VECTOR_STORE to qdrant in the api & worker service.)
518
+ # qdrant:
519
+ # image: langgenius/qdrant:v1.7.3
520
+ # restart: always
521
+ # volumes:
522
+ # - ./volumes/qdrant:/qdrant/storage
523
+ # environment:
524
+ # QDRANT_API_KEY: 'difyai123456'
525
+ # # uncomment to expose qdrant port to host
526
+ # # ports:
527
+ # # - "6333:6333"
528
+ # # - "6334:6334"
529
+
530
+ # The pgvector vector database.
531
+ # Uncomment to use qdrant as vector store.
532
+ # pgvector:
533
+ # image: pgvector/pgvector:pg16
534
+ # restart: always
535
+ # environment:
536
+ # PGUSER: postgres
537
+ # # The password for the default postgres user.
538
+ # POSTGRES_PASSWORD: difyai123456
539
+ # # The name of the default postgres database.
540
+ # POSTGRES_DB: dify
541
+ # # postgres data directory
542
+ # PGDATA: /var/lib/postgresql/data/pgdata
543
+ # volumes:
544
+ # - ./volumes/pgvector/data:/var/lib/postgresql/data
545
+ # # uncomment to expose db(postgresql) port to host
546
+ # # ports:
547
+ # # - "5433:5432"
548
+ # healthcheck:
549
+ # test: [ "CMD", "pg_isready" ]
550
+ # interval: 1s
551
+ # timeout: 3s
552
+ # retries: 30
553
+
554
+ # The oracle vector database.
555
+ # Uncomment to use oracle23ai as vector store. Also need to Uncomment volumes block
556
+ # oracle:
557
+ # image: container-registry.oracle.com/database/free:latest
558
+ # restart: always
559
+ # ports:
560
+ # - 1521:1521
561
+ # volumes:
562
+ # - type: volume
563
+ # source: oradata
564
+ # target: /opt/oracle/oradata
565
+ # - ./startupscripts:/opt/oracle/scripts/startup
566
+ # environment:
567
+ # - ORACLE_PWD=Dify123456
568
+ # - ORACLE_CHARACTERSET=AL32UTF8
569
+
570
+
571
+ # The nginx reverse proxy.
572
+ # used for reverse proxying the API service and Web service.
573
+ nginx:
574
+ image: nginx:latest
575
+ restart: always
576
+ volumes:
577
+ - ./nginx/nginx.conf:/etc/nginx/nginx.conf
578
+ - ./nginx/proxy.conf:/etc/nginx/proxy.conf
579
+ - ./nginx/conf.d:/etc/nginx/conf.d
580
+ #- ./nginx/ssl:/etc/ssl
581
+ depends_on:
582
+ - api
583
+ - web
584
+ ports:
585
+ - "80:80"
586
+ #- "443:443"
587
+ # notice: if you use windows-wsl2, postgres may not work properly due to the ntfs issue.you can use volumes to mount the data directory to the host.
588
+ # volumes:
589
+ #   postgres:
590
+ networks:
591
+ # create a network between sandbox, api and ssrf_proxy, and can not access outside.
592
+ ssrf_proxy_network:
593
+ driver: bridge
594
+ internal: true
595
+
596
+ #volumes:
597
+ # oradata:
docker-legacy/nginx/conf.d/default.conf ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ server {
2
+ listen 80;
3
+ server_name _;
4
+
5
+ location /console/api {
6
+ proxy_pass http://api:5001;
7
+ include proxy.conf;
8
+ }
9
+
10
+ location /api {
11
+ proxy_pass http://api:5001;
12
+ include proxy.conf;
13
+ }
14
+
15
+ location /v1 {
16
+ proxy_pass http://api:5001;
17
+ include proxy.conf;
18
+ }
19
+
20
+ location /files {
21
+ proxy_pass http://api:5001;
22
+ include proxy.conf;
23
+ }
24
+
25
+ location / {
26
+ proxy_pass http://web:3000;
27
+ include proxy.conf;
28
+ }
29
+
30
+ # If you want to support HTTPS, please uncomment the code snippet below
31
+ #listen 443 ssl;
32
+ #ssl_certificate ./../ssl/your_cert_file.cer;
33
+ #ssl_certificate_key ./../ssl/your_cert_key.key;
34
+ #ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
35
+ #ssl_prefer_server_ciphers on;
36
+ #ssl_session_cache shared:SSL:10m;
37
+ #ssl_session_timeout 10m;
38
+ }
docker-legacy/nginx/nginx.conf ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ user nginx;
2
+ worker_processes auto;
3
+
4
+ error_log /var/log/nginx/error.log notice;
5
+ pid /var/run/nginx.pid;
6
+
7
+
8
+ events {
9
+ worker_connections 1024;
10
+ }
11
+
12
+
13
+ http {
14
+ include /etc/nginx/mime.types;
15
+ default_type application/octet-stream;
16
+
17
+ log_format main '$remote_addr - $remote_user [$time_local] "$request" '
18
+ '$status $body_bytes_sent "$http_referer" '
19
+ '"$http_user_agent" "$http_x_forwarded_for"';
20
+
21
+ access_log /var/log/nginx/access.log main;
22
+
23
+ sendfile on;
24
+ #tcp_nopush on;
25
+
26
+ keepalive_timeout 65;
27
+
28
+ #gzip on;
29
+ client_max_body_size 15M;
30
+
31
+ include /etc/nginx/conf.d/*.conf;
32
+ }
docker-legacy/nginx/proxy.conf ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ proxy_set_header Host $host;
2
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
3
+ proxy_set_header X-Forwarded-Proto $scheme;
4
+ proxy_http_version 1.1;
5
+ proxy_set_header Connection "";
6
+ proxy_buffering off;
7
+ proxy_read_timeout 3600s;
8
+ proxy_send_timeout 3600s;
docker-legacy/nginx/ssl/.gitkeep ADDED
@@ -0,0 +1 @@
 
 
1
+
docker-legacy/startupscripts/create_user.sql ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ show pdbs;
2
+ ALTER SYSTEM SET PROCESSES=500 SCOPE=SPFILE;
3
+ alter session set container= freepdb1;
4
+ create user dify identified by dify DEFAULT TABLESPACE users quota unlimited on users;
5
+ grant DB_DEVELOPER_ROLE to dify;
docker-legacy/volumes/opensearch/opensearch_dashboards.yml ADDED
@@ -0,0 +1,222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ # Copyright OpenSearch Contributors
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ # Description:
6
+ # Default configuration for OpenSearch Dashboards
7
+
8
+ # OpenSearch Dashboards is served by a back end server. This setting specifies the port to use.
9
+ # server.port: 5601
10
+
11
+ # Specifies the address to which the OpenSearch Dashboards server will bind. IP addresses and host names are both valid values.
12
+ # The default is 'localhost', which usually means remote machines will not be able to connect.
13
+ # To allow connections from remote users, set this parameter to a non-loopback address.
14
+ # server.host: "localhost"
15
+
16
+ # Enables you to specify a path to mount OpenSearch Dashboards at if you are running behind a proxy.
17
+ # Use the `server.rewriteBasePath` setting to tell OpenSearch Dashboards if it should remove the basePath
18
+ # from requests it receives, and to prevent a deprecation warning at startup.
19
+ # This setting cannot end in a slash.
20
+ # server.basePath: ""
21
+
22
+ # Specifies whether OpenSearch Dashboards should rewrite requests that are prefixed with
23
+ # `server.basePath` or require that they are rewritten by your reverse proxy.
24
+ # server.rewriteBasePath: false
25
+
26
+ # The maximum payload size in bytes for incoming server requests.
27
+ # server.maxPayloadBytes: 1048576
28
+
29
+ # The OpenSearch Dashboards server's name. This is used for display purposes.
30
+ # server.name: "your-hostname"
31
+
32
+ # The URLs of the OpenSearch instances to use for all your queries.
33
+ # opensearch.hosts: ["http://localhost:9200"]
34
+
35
+ # OpenSearch Dashboards uses an index in OpenSearch to store saved searches, visualizations and
36
+ # dashboards. OpenSearch Dashboards creates a new index if the index doesn't already exist.
37
+ # opensearchDashboards.index: ".opensearch_dashboards"
38
+
39
+ # The default application to load.
40
+ # opensearchDashboards.defaultAppId: "home"
41
+
42
+ # Setting for an optimized healthcheck that only uses the local OpenSearch node to do Dashboards healthcheck.
43
+ # This settings should be used for large clusters or for clusters with ingest heavy nodes.
44
+ # It allows Dashboards to only healthcheck using the local OpenSearch node rather than fan out requests across all nodes.
45
+ #
46
+ # It requires the user to create an OpenSearch node attribute with the same name as the value used in the setting
47
+ # This node attribute should assign all nodes of the same cluster an integer value that increments with each new cluster that is spun up
48
+ # e.g. in opensearch.yml file you would set the value to a setting using node.attr.cluster_id:
49
+ # Should only be enabled if there is a corresponding node attribute created in your OpenSearch config that matches the value here
50
+ # opensearch.optimizedHealthcheckId: "cluster_id"
51
+
52
+ # If your OpenSearch is protected with basic authentication, these settings provide
53
+ # the username and password that the OpenSearch Dashboards server uses to perform maintenance on the OpenSearch Dashboards
54
+ # index at startup. Your OpenSearch Dashboards users still need to authenticate with OpenSearch, which
55
+ # is proxied through the OpenSearch Dashboards server.
56
+ # opensearch.username: "opensearch_dashboards_system"
57
+ # opensearch.password: "pass"
58
+
59
+ # Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively.
60
+ # These settings enable SSL for outgoing requests from the OpenSearch Dashboards server to the browser.
61
+ # server.ssl.enabled: false
62
+ # server.ssl.certificate: /path/to/your/server.crt
63
+ # server.ssl.key: /path/to/your/server.key
64
+
65
+ # Optional settings that provide the paths to the PEM-format SSL certificate and key files.
66
+ # These files are used to verify the identity of OpenSearch Dashboards to OpenSearch and are required when
67
+ # xpack.security.http.ssl.client_authentication in OpenSearch is set to required.
68
+ # opensearch.ssl.certificate: /path/to/your/client.crt
69
+ # opensearch.ssl.key: /path/to/your/client.key
70
+
71
+ # Optional setting that enables you to specify a path to the PEM file for the certificate
72
+ # authority for your OpenSearch instance.
73
+ # opensearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ]
74
+
75
+ # To disregard the validity of SSL certificates, change this setting's value to 'none'.
76
+ # opensearch.ssl.verificationMode: full
77
+
78
+ # Time in milliseconds to wait for OpenSearch to respond to pings. Defaults to the value of
79
+ # the opensearch.requestTimeout setting.
80
+ # opensearch.pingTimeout: 1500
81
+
82
+ # Time in milliseconds to wait for responses from the back end or OpenSearch. This value
83
+ # must be a positive integer.
84
+ # opensearch.requestTimeout: 30000
85
+
86
+ # List of OpenSearch Dashboards client-side headers to send to OpenSearch. To send *no* client-side
87
+ # headers, set this value to [] (an empty list).
88
+ # opensearch.requestHeadersWhitelist: [ authorization ]
89
+
90
+ # Header names and values that are sent to OpenSearch. Any custom headers cannot be overwritten
91
+ # by client-side headers, regardless of the opensearch.requestHeadersWhitelist configuration.
92
+ # opensearch.customHeaders: {}
93
+
94
+ # Time in milliseconds for OpenSearch to wait for responses from shards. Set to 0 to disable.
95
+ # opensearch.shardTimeout: 30000
96
+
97
+ # Logs queries sent to OpenSearch. Requires logging.verbose set to true.
98
+ # opensearch.logQueries: false
99
+
100
+ # Specifies the path where OpenSearch Dashboards creates the process ID file.
101
+ # pid.file: /var/run/opensearchDashboards.pid
102
+
103
+ # Enables you to specify a file where OpenSearch Dashboards stores log output.
104
+ # logging.dest: stdout
105
+
106
+ # Set the value of this setting to true to suppress all logging output.
107
+ # logging.silent: false
108
+
109
+ # Set the value of this setting to true to suppress all logging output other than error messages.
110
+ # logging.quiet: false
111
+
112
+ # Set the value of this setting to true to log all events, including system usage information
113
+ # and all requests.
114
+ # logging.verbose: false
115
+
116
+ # Set the interval in milliseconds to sample system and process performance
117
+ # metrics. Minimum is 100ms. Defaults to 5000.
118
+ # ops.interval: 5000
119
+
120
+ # Specifies locale to be used for all localizable strings, dates and number formats.
121
+ # Supported languages are the following: English - en , by default , Chinese - zh-CN .
122
+ # i18n.locale: "en"
123
+
124
+ # Set the allowlist to check input graphite Url. Allowlist is the default check list.
125
+ # vis_type_timeline.graphiteAllowedUrls: ['https://www.hostedgraphite.com/UID/ACCESS_KEY/graphite']
126
+
127
+ # Set the blocklist to check input graphite Url. Blocklist is an IP list.
128
+ # Below is an example for reference
129
+ # vis_type_timeline.graphiteBlockedIPs: [
130
+ # //Loopback
131
+ # '127.0.0.0/8',
132
+ # '::1/128',
133
+ # //Link-local Address for IPv6
134
+ # 'fe80::/10',
135
+ # //Private IP address for IPv4
136
+ # '10.0.0.0/8',
137
+ # '172.16.0.0/12',
138
+ # '192.168.0.0/16',
139
+ # //Unique local address (ULA)
140
+ # 'fc00::/7',
141
+ # //Reserved IP address
142
+ # '0.0.0.0/8',
143
+ # '100.64.0.0/10',
144
+ # '192.0.0.0/24',
145
+ # '192.0.2.0/24',
146
+ # '198.18.0.0/15',
147
+ # '192.88.99.0/24',
148
+ # '198.51.100.0/24',
149
+ # '203.0.113.0/24',
150
+ # '224.0.0.0/4',
151
+ # '240.0.0.0/4',
152
+ # '255.255.255.255/32',
153
+ # '::/128',
154
+ # '2001:db8::/32',
155
+ # 'ff00::/8',
156
+ # ]
157
+ # vis_type_timeline.graphiteBlockedIPs: []
158
+
159
+ # opensearchDashboards.branding:
160
+ # logo:
161
+ # defaultUrl: ""
162
+ # darkModeUrl: ""
163
+ # mark:
164
+ # defaultUrl: ""
165
+ # darkModeUrl: ""
166
+ # loadingLogo:
167
+ # defaultUrl: ""
168
+ # darkModeUrl: ""
169
+ # faviconUrl: ""
170
+ # applicationTitle: ""
171
+
172
+ # Set the value of this setting to true to capture region blocked warnings and errors
173
+ # for your map rendering services.
174
+ # map.showRegionBlockedWarning: false%
175
+
176
+ # Set the value of this setting to false to suppress search usage telemetry
177
+ # for reducing the load of OpenSearch cluster.
178
+ # data.search.usageTelemetry.enabled: false
179
+
180
+ # 2.4 renames 'wizard.enabled: false' to 'vis_builder.enabled: false'
181
+ # Set the value of this setting to false to disable VisBuilder
182
+ # functionality in Visualization.
183
+ # vis_builder.enabled: false
184
+
185
+ # 2.4 New Experimental Feature
186
+ # Set the value of this setting to true to enable the experimental multiple data source
187
+ # support feature. Use with caution.
188
+ # data_source.enabled: false
189
+ # Set the value of these settings to customize crypto materials to encryption saved credentials
190
+ # in data sources.
191
+ # data_source.encryption.wrappingKeyName: 'changeme'
192
+ # data_source.encryption.wrappingKeyNamespace: 'changeme'
193
+ # data_source.encryption.wrappingKey: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
194
+
195
+ # 2.6 New ML Commons Dashboards Feature
196
+ # Set the value of this setting to true to enable the ml commons dashboards
197
+ # ml_commons_dashboards.enabled: false
198
+
199
+ # 2.12 New experimental Assistant Dashboards Feature
200
+ # Set the value of this setting to true to enable the assistant dashboards
201
+ # assistant.chat.enabled: false
202
+
203
+ # 2.13 New Query Assistant Feature
204
+ # Set the value of this setting to false to disable the query assistant
205
+ # observability.query_assist.enabled: false
206
+
207
+ # 2.14 Enable Ui Metric Collectors in Usage Collector
208
+ # Set the value of this setting to true to enable UI Metric collections
209
+ # usageCollection.uiMetric.enabled: false
210
+
211
+ opensearch.hosts: [https://localhost:9200]
212
+ opensearch.ssl.verificationMode: none
213
+ opensearch.username: admin
214
+ opensearch.password: 'Qazwsxedc!@#123'
215
+ opensearch.requestHeadersWhitelist: [authorization, securitytenant]
216
+
217
+ opensearch_security.multitenancy.enabled: true
218
+ opensearch_security.multitenancy.tenants.preferred: [Private, Global]
219
+ opensearch_security.readonly_mode.roles: [kibana_read_only]
220
+ # Use this setting if you are running opensearch-dashboards without https
221
+ opensearch_security.cookie.secure: false
222
+ server.host: '0.0.0.0'
docker-legacy/volumes/sandbox/dependencies/python-requirements.txt ADDED
File without changes
docker-legacy/volumes/ssrf_proxy/squid.conf ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
2
+ acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
3
+ acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN)
4
+ acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
5
+ acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN)
6
+ acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
7
+ acl localnet src fc00::/7 # RFC 4193 local private network range
8
+ acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
9
+ acl SSL_ports port 443
10
+ acl Safe_ports port 80 # http
11
+ acl Safe_ports port 21 # ftp
12
+ acl Safe_ports port 443 # https
13
+ acl Safe_ports port 70 # gopher
14
+ acl Safe_ports port 210 # wais
15
+ acl Safe_ports port 1025-65535 # unregistered ports
16
+ acl Safe_ports port 280 # http-mgmt
17
+ acl Safe_ports port 488 # gss-http
18
+ acl Safe_ports port 591 # filemaker
19
+ acl Safe_ports port 777 # multiling http
20
+ acl CONNECT method CONNECT
21
+ http_access deny !Safe_ports
22
+ http_access deny CONNECT !SSL_ports
23
+ http_access allow localhost manager
24
+ http_access deny manager
25
+ http_access allow localhost
26
+ include /etc/squid/conf.d/*.conf
27
+ http_access deny all
28
+
29
+ ################################## Proxy Server ################################
30
+ http_port 3128
31
+ coredump_dir /var/spool/squid
32
+ refresh_pattern ^ftp: 1440 20% 10080
33
+ refresh_pattern ^gopher: 1440 0% 1440
34
+ refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
35
+ refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
36
+ refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
37
+ refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
38
+ refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
39
+ refresh_pattern . 0 20% 4320
40
+
41
+ # upstream proxy, set to your own upstream proxy IP to avoid SSRF attacks
42
+ # cache_peer 172.1.1.1 parent 3128 0 no-query no-digest no-netdb-exchange default
43
+
44
+
45
+ ################################## Reverse Proxy To Sandbox ################################
46
+ http_port 8194 accel vhost
47
+ cache_peer sandbox parent 8194 0 no-query originserver
48
+ acl src_all src all
49
+ http_access allow src_all