| @@ -1,4 +1,4 @@ | |||
| x-shared-env: &shared-api-worker-env | |||
| x-shared-env: &shared-api-worker-env | |||
| services: | |||
| # API service | |||
| api: | |||
| @@ -56,6 +56,7 @@ services: | |||
| NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0} | |||
| TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000} | |||
| CSP_WHITELIST: ${CSP_WHITELIST:-} | |||
| TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-} | |||
| # The postgres database. | |||
| db: | |||
| @@ -75,7 +76,7 @@ services: | |||
| volumes: | |||
| - ./volumes/db/data:/var/lib/postgresql/data | |||
| healthcheck: | |||
| test: ['CMD', 'pg_isready'] | |||
| test: [ 'CMD', 'pg_isready' ] | |||
| interval: 1s | |||
| timeout: 3s | |||
| retries: 30 | |||
| @@ -92,7 +93,7 @@ services: | |||
| # Set the redis password when startup redis server. | |||
| command: redis-server --requirepass ${REDIS_PASSWORD:-difyai123456} | |||
| healthcheck: | |||
| test: ['CMD', 'redis-cli', 'ping'] | |||
| test: [ 'CMD', 'redis-cli', 'ping' ] | |||
| # The DifySandbox | |||
| sandbox: | |||
| @@ -112,7 +113,7 @@ services: | |||
| volumes: | |||
| - ./volumes/sandbox/dependencies:/dependencies | |||
| healthcheck: | |||
| test: ['CMD', 'curl', '-f', 'http://localhost:8194/health'] | |||
| test: [ 'CMD', 'curl', '-f', 'http://localhost:8194/health' ] | |||
| networks: | |||
| - ssrf_proxy_network | |||
| @@ -125,12 +126,7 @@ services: | |||
| volumes: | |||
| - ./ssrf_proxy/squid.conf.template:/etc/squid/squid.conf.template | |||
| - ./ssrf_proxy/docker-entrypoint.sh:/docker-entrypoint-mount.sh | |||
| entrypoint: | |||
| [ | |||
| 'sh', | |||
| '-c', | |||
| "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh", | |||
| ] | |||
| entrypoint: [ 'sh', '-c', "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ] | |||
| environment: | |||
| # pls clearly modify the squid env vars to fit your network environment. | |||
| HTTP_PORT: ${SSRF_HTTP_PORT:-3128} | |||
| @@ -159,8 +155,8 @@ services: | |||
| - CERTBOT_EMAIL=${CERTBOT_EMAIL} | |||
| - CERTBOT_DOMAIN=${CERTBOT_DOMAIN} | |||
| - CERTBOT_OPTIONS=${CERTBOT_OPTIONS:-} | |||
| entrypoint: ['/docker-entrypoint.sh'] | |||
| command: ['tail', '-f', '/dev/null'] | |||
| entrypoint: [ '/docker-entrypoint.sh' ] | |||
| command: [ 'tail', '-f', '/dev/null' ] | |||
| # The nginx reverse proxy. | |||
| # used for reverse proxying the API service and Web service. | |||
| @@ -177,12 +173,7 @@ services: | |||
| - ./volumes/certbot/conf/live:/etc/letsencrypt/live # cert dir (with certbot container) | |||
| - ./volumes/certbot/conf:/etc/letsencrypt | |||
| - ./volumes/certbot/www:/var/www/html | |||
| entrypoint: | |||
| [ | |||
| 'sh', | |||
| '-c', | |||
| "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh", | |||
| ] | |||
| entrypoint: [ 'sh', '-c', "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ] | |||
| environment: | |||
| NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} | |||
| NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false} | |||
| @@ -274,7 +265,7 @@ services: | |||
| working_dir: /opt/couchbase | |||
| stdin_open: true | |||
| tty: true | |||
| entrypoint: [""] | |||
| entrypoint: [ "" ] | |||
| command: sh -c "/opt/couchbase/init/init-cbserver.sh" | |||
| volumes: | |||
| - ./volumes/couchbase/data:/opt/couchbase/var/lib/couchbase/data | |||
| @@ -303,7 +294,7 @@ services: | |||
| volumes: | |||
| - ./volumes/pgvector/data:/var/lib/postgresql/data | |||
| healthcheck: | |||
| test: ['CMD', 'pg_isready'] | |||
| test: [ 'CMD', 'pg_isready' ] | |||
| interval: 1s | |||
| timeout: 3s | |||
| retries: 30 | |||
| @@ -325,7 +316,7 @@ services: | |||
| volumes: | |||
| - ./volumes/pgvecto_rs/data:/var/lib/postgresql/data | |||
| healthcheck: | |||
| test: ['CMD', 'pg_isready'] | |||
| test: [ 'CMD', 'pg_isready' ] | |||
| interval: 1s | |||
| timeout: 3s | |||
| retries: 30 | |||
| @@ -390,7 +381,7 @@ services: | |||
| - ./volumes/milvus/etcd:/etcd | |||
| command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd | |||
| healthcheck: | |||
| test: ['CMD', 'etcdctl', 'endpoint', 'health'] | |||
| test: [ 'CMD', 'etcdctl', 'endpoint', 'health' ] | |||
| interval: 30s | |||
| timeout: 20s | |||
| retries: 3 | |||
| @@ -409,7 +400,7 @@ services: | |||
| - ./volumes/milvus/minio:/minio_data | |||
| command: minio server /minio_data --console-address ":9001" | |||
| healthcheck: | |||
| test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live'] | |||
| test: [ 'CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live' ] | |||
| interval: 30s | |||
| timeout: 20s | |||
| retries: 3 | |||
| @@ -421,7 +412,7 @@ services: | |||
| image: milvusdb/milvus:v2.3.1 | |||
| profiles: | |||
| - milvus | |||
| command: ['milvus', 'run', 'standalone'] | |||
| command: [ 'milvus', 'run', 'standalone' ] | |||
| environment: | |||
| ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379} | |||
| MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000} | |||
| @@ -429,7 +420,7 @@ services: | |||
| volumes: | |||
| - ./volumes/milvus/milvus:/var/lib/milvus | |||
| healthcheck: | |||
| test: ['CMD', 'curl', '-f', 'http://localhost:9091/healthz'] | |||
| test: [ 'CMD', 'curl', '-f', 'http://localhost:9091/healthz' ] | |||
| interval: 30s | |||
| start_period: 90s | |||
| timeout: 20s | |||
| @@ -517,7 +508,7 @@ services: | |||
| ports: | |||
| - ${ELASTICSEARCH_PORT:-9200}:9200 | |||
| healthcheck: | |||
| test: ['CMD', 'curl', '-s', 'http://localhost:9200/_cluster/health?pretty'] | |||
| test: [ 'CMD', 'curl', '-s', 'http://localhost:9200/_cluster/health?pretty' ] | |||
| interval: 30s | |||
| timeout: 10s | |||
| retries: 50 | |||
| @@ -545,7 +536,7 @@ services: | |||
| ports: | |||
| - ${KIBANA_PORT:-5601}:5601 | |||
| healthcheck: | |||
| test: ['CMD-SHELL', 'curl -s http://localhost:5601 >/dev/null || exit 1'] | |||
| test: [ 'CMD-SHELL', 'curl -s http://localhost:5601 >/dev/null || exit 1' ] | |||
| interval: 30s | |||
| timeout: 10s | |||
| retries: 3 | |||
| @@ -444,6 +444,7 @@ services: | |||
| NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0} | |||
| TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000} | |||
| CSP_WHITELIST: ${CSP_WHITELIST:-} | |||
| TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-} | |||
| # The postgres database. | |||
| db: | |||
| @@ -463,7 +464,7 @@ services: | |||
| volumes: | |||
| - ./volumes/db/data:/var/lib/postgresql/data | |||
| healthcheck: | |||
| test: ['CMD', 'pg_isready'] | |||
| test: [ 'CMD', 'pg_isready' ] | |||
| interval: 1s | |||
| timeout: 3s | |||
| retries: 30 | |||
| @@ -480,7 +481,7 @@ services: | |||
| # Set the redis password when startup redis server. | |||
| command: redis-server --requirepass ${REDIS_PASSWORD:-difyai123456} | |||
| healthcheck: | |||
| test: ['CMD', 'redis-cli', 'ping'] | |||
| test: [ 'CMD', 'redis-cli', 'ping' ] | |||
| # The DifySandbox | |||
| sandbox: | |||
| @@ -500,7 +501,7 @@ services: | |||
| volumes: | |||
| - ./volumes/sandbox/dependencies:/dependencies | |||
| healthcheck: | |||
| test: ['CMD', 'curl', '-f', 'http://localhost:8194/health'] | |||
| test: [ 'CMD', 'curl', '-f', 'http://localhost:8194/health' ] | |||
| networks: | |||
| - ssrf_proxy_network | |||
| @@ -513,12 +514,7 @@ services: | |||
| volumes: | |||
| - ./ssrf_proxy/squid.conf.template:/etc/squid/squid.conf.template | |||
| - ./ssrf_proxy/docker-entrypoint.sh:/docker-entrypoint-mount.sh | |||
| entrypoint: | |||
| [ | |||
| 'sh', | |||
| '-c', | |||
| "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh", | |||
| ] | |||
| entrypoint: [ 'sh', '-c', "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ] | |||
| environment: | |||
| # pls clearly modify the squid env vars to fit your network environment. | |||
| HTTP_PORT: ${SSRF_HTTP_PORT:-3128} | |||
| @@ -547,8 +543,8 @@ services: | |||
| - CERTBOT_EMAIL=${CERTBOT_EMAIL} | |||
| - CERTBOT_DOMAIN=${CERTBOT_DOMAIN} | |||
| - CERTBOT_OPTIONS=${CERTBOT_OPTIONS:-} | |||
| entrypoint: ['/docker-entrypoint.sh'] | |||
| command: ['tail', '-f', '/dev/null'] | |||
| entrypoint: [ '/docker-entrypoint.sh' ] | |||
| command: [ 'tail', '-f', '/dev/null' ] | |||
| # The nginx reverse proxy. | |||
| # used for reverse proxying the API service and Web service. | |||
| @@ -565,12 +561,7 @@ services: | |||
| - ./volumes/certbot/conf/live:/etc/letsencrypt/live # cert dir (with certbot container) | |||
| - ./volumes/certbot/conf:/etc/letsencrypt | |||
| - ./volumes/certbot/www:/var/www/html | |||
| entrypoint: | |||
| [ | |||
| 'sh', | |||
| '-c', | |||
| "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh", | |||
| ] | |||
| entrypoint: [ 'sh', '-c', "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ] | |||
| environment: | |||
| NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} | |||
| NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false} | |||
| @@ -662,7 +653,7 @@ services: | |||
| working_dir: /opt/couchbase | |||
| stdin_open: true | |||
| tty: true | |||
| entrypoint: [""] | |||
| entrypoint: [ "" ] | |||
| command: sh -c "/opt/couchbase/init/init-cbserver.sh" | |||
| volumes: | |||
| - ./volumes/couchbase/data:/opt/couchbase/var/lib/couchbase/data | |||
| @@ -691,7 +682,7 @@ services: | |||
| volumes: | |||
| - ./volumes/pgvector/data:/var/lib/postgresql/data | |||
| healthcheck: | |||
| test: ['CMD', 'pg_isready'] | |||
| test: [ 'CMD', 'pg_isready' ] | |||
| interval: 1s | |||
| timeout: 3s | |||
| retries: 30 | |||
| @@ -713,7 +704,7 @@ services: | |||
| volumes: | |||
| - ./volumes/pgvecto_rs/data:/var/lib/postgresql/data | |||
| healthcheck: | |||
| test: ['CMD', 'pg_isready'] | |||
| test: [ 'CMD', 'pg_isready' ] | |||
| interval: 1s | |||
| timeout: 3s | |||
| retries: 30 | |||
| @@ -778,7 +769,7 @@ services: | |||
| - ./volumes/milvus/etcd:/etcd | |||
| command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd | |||
| healthcheck: | |||
| test: ['CMD', 'etcdctl', 'endpoint', 'health'] | |||
| test: [ 'CMD', 'etcdctl', 'endpoint', 'health' ] | |||
| interval: 30s | |||
| timeout: 20s | |||
| retries: 3 | |||
| @@ -797,7 +788,7 @@ services: | |||
| - ./volumes/milvus/minio:/minio_data | |||
| command: minio server /minio_data --console-address ":9001" | |||
| healthcheck: | |||
| test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live'] | |||
| test: [ 'CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live' ] | |||
| interval: 30s | |||
| timeout: 20s | |||
| retries: 3 | |||
| @@ -809,7 +800,7 @@ services: | |||
| image: milvusdb/milvus:v2.3.1 | |||
| profiles: | |||
| - milvus | |||
| command: ['milvus', 'run', 'standalone'] | |||
| command: [ 'milvus', 'run', 'standalone' ] | |||
| environment: | |||
| ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379} | |||
| MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000} | |||
| @@ -817,7 +808,7 @@ services: | |||
| volumes: | |||
| - ./volumes/milvus/milvus:/var/lib/milvus | |||
| healthcheck: | |||
| test: ['CMD', 'curl', '-f', 'http://localhost:9091/healthz'] | |||
| test: [ 'CMD', 'curl', '-f', 'http://localhost:9091/healthz' ] | |||
| interval: 30s | |||
| start_period: 90s | |||
| timeout: 20s | |||
| @@ -905,7 +896,7 @@ services: | |||
| ports: | |||
| - ${ELASTICSEARCH_PORT:-9200}:9200 | |||
| healthcheck: | |||
| test: ['CMD', 'curl', '-s', 'http://localhost:9200/_cluster/health?pretty'] | |||
| test: [ 'CMD', 'curl', '-s', 'http://localhost:9200/_cluster/health?pretty' ] | |||
| interval: 30s | |||
| timeout: 10s | |||
| retries: 50 | |||
| @@ -933,7 +924,7 @@ services: | |||
| ports: | |||
| - ${KIBANA_PORT:-5601}:5601 | |||
| healthcheck: | |||
| test: ['CMD-SHELL', 'curl -s http://localhost:5601 >/dev/null || exit 1'] | |||
| test: [ 'CMD-SHELL', 'curl -s http://localhost:5601 >/dev/null || exit 1' ] | |||
| interval: 30s | |||
| timeout: 10s | |||
| retries: 3 | |||
| @@ -25,3 +25,6 @@ NEXT_PUBLIC_TEXT_GENERATION_TIMEOUT_MS=60000 | |||
| # CSP https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP | |||
| NEXT_PUBLIC_CSP_WHITELIST= | |||
| # The maximum number of top-k value for RAG. | |||
| NEXT_PUBLIC_TOP_K_MAX_VALUE=10 | |||
| @@ -11,11 +11,17 @@ type Props = { | |||
| enable: boolean | |||
| } | |||
| const maxTopK = (() => { | |||
| const configValue = parseInt(globalThis.document?.body?.getAttribute('data-public-top-k-max-value') || '', 10) | |||
| if (configValue && !isNaN(configValue)) | |||
| return configValue | |||
| return 10 | |||
| })() | |||
| const VALUE_LIMIT = { | |||
| default: 2, | |||
| step: 1, | |||
| min: 1, | |||
| max: 10, | |||
| max: maxTopK, | |||
| } | |||
| const key = 'top_k' | |||
| @@ -44,6 +44,7 @@ const LocaleLayout = ({ | |||
| data-public-maintenance-notice={process.env.NEXT_PUBLIC_MAINTENANCE_NOTICE} | |||
| data-public-site-about={process.env.NEXT_PUBLIC_SITE_ABOUT} | |||
| data-public-text-generation-timeout-ms={process.env.NEXT_PUBLIC_TEXT_GENERATION_TIMEOUT_MS} | |||
| data-public-top-k-max-value={process.env.NEXT_PUBLIC_TOP_K_MAX_VALUE} | |||
| > | |||
| <BrowserInitor> | |||
| <SentryInitor> | |||
| @@ -23,5 +23,6 @@ export NEXT_TELEMETRY_DISABLED=${NEXT_TELEMETRY_DISABLED} | |||
| export NEXT_PUBLIC_TEXT_GENERATION_TIMEOUT_MS=${TEXT_GENERATION_TIMEOUT_MS} | |||
| export NEXT_PUBLIC_CSP_WHITELIST=${CSP_WHITELIST} | |||
| export NEXT_PUBLIC_TOP_K_MAX_VALUE=${TOP_K_MAX_VALUE} | |||
| pm2 start ./pm2.json --no-daemon | |||