forked from LengKundee/MQL5-Google-Onedrive
258 lines
12 KiB
YAML
258 lines
12 KiB
YAML
volumes:
|
|
langfuse-postgres-data:
|
|
driver: local
|
|
langfuse-clickhouse-data:
|
|
driver: local
|
|
langfuse-clickhouse-logs:
|
|
driver: local
|
|
langfuse-minio-data:
|
|
driver: local
|
|
|
|
networks:
|
|
langfuse-network:
|
|
driver: bridge
|
|
external: true
|
|
name: langfuse-network
|
|
pentagi-network:
|
|
driver: bridge
|
|
external: true
|
|
name: pentagi-network
|
|
|
|
services:
|
|
langfuse-worker:
|
|
image: langfuse/langfuse-worker:3
|
|
restart: unless-stopped
|
|
container_name: langfuse-worker
|
|
hostname: langfuse-worker
|
|
depends_on: &langfuse-depends-on
|
|
postgres:
|
|
condition: service_healthy
|
|
minio:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
clickhouse:
|
|
condition: service_healthy
|
|
expose:
|
|
- 3030/tcp
|
|
environment: &langfuse-worker-env
|
|
NEXTAUTH_URL: ${LANGFUSE_NEXTAUTH_URL:-http://localhost:${LANGFUSE_LISTEN_PORT:-4000}}
|
|
DATABASE_URL: postgresql://${LANGFUSE_POSTGRES_USER:-postgres}:${LANGFUSE_POSTGRES_PASSWORD:-postgres}@langfuse-postgres:5432/${LANGFUSE_POSTGRES_DB:-langfuse}
|
|
SALT: ${LANGFUSE_SALT:-myglobalsalt} # change this to a random string
|
|
ENCRYPTION_KEY: ${LANGFUSE_ENCRYPTION_KEY:-0000000000000000000000000000000000000000000000000000000000000000} # generate via `openssl rand -hex 32`
|
|
TELEMETRY_ENABLED: ${LANGFUSE_TELEMETRY_ENABLED:-false}
|
|
LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES: ${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-true}
|
|
OTEL_EXPORTER_OTLP_ENDPOINT: ${LANGFUSE_OTEL_EXPORTER_OTLP_ENDPOINT:-}
|
|
OTEL_SERVICE_NAME: ${LANGFUSE_OTEL_SERVICE_NAME:-langfuse}
|
|
CLICKHOUSE_MIGRATION_URL: ${LANGFUSE_CLICKHOUSE_MIGRATION_URL:-clickhouse://langfuse-clickhouse:9000}
|
|
CLICKHOUSE_URL: ${LANGFUSE_CLICKHOUSE_URL:-http://langfuse-clickhouse:8123}
|
|
CLICKHOUSE_USER: ${LANGFUSE_CLICKHOUSE_USER:-clickhouse}
|
|
CLICKHOUSE_PASSWORD: ${LANGFUSE_CLICKHOUSE_PASSWORD:-clickhouse}
|
|
CLICKHOUSE_CLUSTER_ENABLED: ${LANGFUSE_CLICKHOUSE_CLUSTER_ENABLED:-false}
|
|
LANGFUSE_USE_AZURE_BLOB: ${LANGFUSE_USE_AZURE_BLOB:-false}
|
|
LANGFUSE_S3_EVENT_UPLOAD_BUCKET: ${LANGFUSE_S3_BUCKET:-langfuse}
|
|
LANGFUSE_S3_EVENT_UPLOAD_REGION: ${LANGFUSE_S3_REGION:-auto}
|
|
LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID: ${LANGFUSE_S3_ACCESS_KEY_ID:-minio}
|
|
LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY: ${LANGFUSE_S3_SECRET_ACCESS_KEY:-miniosecret}
|
|
LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT: ${LANGFUSE_S3_ENDPOINT:-http://langfuse-minio:9000}
|
|
LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE: ${LANGFUSE_S3_FORCE_PATH_STYLE:-true}
|
|
LANGFUSE_S3_EVENT_UPLOAD_PREFIX: ${LANGFUSE_S3_EVENT_UPLOAD_PREFIX:-events/}
|
|
LANGFUSE_S3_MEDIA_UPLOAD_BUCKET: ${LANGFUSE_S3_BUCKET:-langfuse}
|
|
LANGFUSE_S3_MEDIA_UPLOAD_REGION: ${LANGFUSE_S3_REGION:-auto}
|
|
LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID: ${LANGFUSE_S3_ACCESS_KEY_ID:-minio}
|
|
LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY: ${LANGFUSE_S3_SECRET_ACCESS_KEY:-miniosecret}
|
|
LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT: ${LANGFUSE_S3_ENDPOINT:-http://langfuse-minio:9000}
|
|
LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE: ${LANGFUSE_S3_FORCE_PATH_STYLE:-true}
|
|
LANGFUSE_S3_MEDIA_UPLOAD_PREFIX: ${LANGFUSE_S3_MEDIA_UPLOAD_PREFIX:-media/}
|
|
LANGFUSE_S3_BATCH_EXPORT_ENABLED: ${LANGFUSE_S3_BATCH_EXPORT_ENABLED:-true}
|
|
LANGFUSE_S3_BATCH_EXPORT_BUCKET: ${LANGFUSE_S3_BUCKET:-langfuse}
|
|
LANGFUSE_S3_BATCH_EXPORT_REGION: ${LANGFUSE_S3_REGION:-auto}
|
|
LANGFUSE_S3_BATCH_EXPORT_ENDPOINT: ${LANGFUSE_S3_ENDPOINT:-http://langfuse-minio:9000}
|
|
LANGFUSE_S3_BATCH_EXPORT_EXTERNAL_ENDPOINT: ${LANGFUSE_S3_ENDPOINT:-http://langfuse-minio:9000}
|
|
LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID: ${LANGFUSE_S3_ACCESS_KEY_ID:-minio}
|
|
LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY: ${LANGFUSE_S3_SECRET_ACCESS_KEY:-miniosecret}
|
|
REDIS_HOST: ${LANGFUSE_REDIS_HOST:-langfuse-redis}
|
|
REDIS_PORT: ${LANGFUSE_REDIS_PORT:-6379}
|
|
REDIS_AUTH: ${LANGFUSE_REDIS_AUTH:-myredissecret}
|
|
REDIS_TLS_ENABLED: ${LANGFUSE_REDIS_TLS_ENABLED:-false}
|
|
REDIS_TLS_CA: ${LANGFUSE_REDIS_TLS_CA:-/certs/ca.crt}
|
|
REDIS_TLS_CERT: ${LANGFUSE_REDIS_TLS_CERT:-/certs/redis.crt}
|
|
REDIS_TLS_KEY: ${LANGFUSE_REDIS_TLS_KEY:-/certs/redis.key}
|
|
LANGFUSE_INGESTION_QUEUE_DELAY_MS: ${LANGFUSE_INGESTION_QUEUE_DELAY_MS:-}
|
|
LANGFUSE_INGESTION_CLICKHOUSE_WRITE_INTERVAL_MS: ${LANGFUSE_INGESTION_CLICKHOUSE_WRITE_INTERVAL_MS:-}
|
|
LANGFUSE_INGESTION_CLICKHOUSE_WRITE_BATCH_SIZE: ${LANGFUSE_INGESTION_CLICKHOUSE_WRITE_BATCH_SIZE:-}
|
|
LANGFUSE_INGESTION_CLICKHOUSE_MAX_ATTEMPTS: ${LANGFUSE_INGESTION_CLICKHOUSE_MAX_ATTEMPTS:-}
|
|
EMAIL_FROM_ADDRESS: ${LANGFUSE_EMAIL_FROM_ADDRESS:-}
|
|
SMTP_CONNECTION_URL: ${LANGFUSE_SMTP_CONNECTION_URL:-}
|
|
logging:
|
|
options:
|
|
max-size: 50m
|
|
max-file: "7"
|
|
networks:
|
|
- langfuse-network
|
|
|
|
langfuse-web:
|
|
image: langfuse/langfuse:3
|
|
restart: unless-stopped
|
|
container_name: langfuse-web
|
|
hostname: langfuse-web
|
|
depends_on: *langfuse-depends-on
|
|
expose:
|
|
- 3000/tcp
|
|
ports:
|
|
- ${LANGFUSE_LISTEN_IP:-127.0.0.1}:${LANGFUSE_LISTEN_PORT:-4000}:3000
|
|
environment:
|
|
<<: *langfuse-worker-env
|
|
HOST: 0.0.0.0
|
|
PORT: 3000
|
|
NEXTAUTH_URL: ${LANGFUSE_NEXTAUTH_URL:-http://localhost:4000}
|
|
NEXTAUTH_SECRET: ${LANGFUSE_NEXTAUTH_SECRET:-mysecret}
|
|
LANGFUSE_LOG_LEVEL: ${LANGFUSE_LOG_LEVEL:-info}
|
|
LANGFUSE_INIT_ORG_ID: ${LANGFUSE_INIT_ORG_ID:-ocm47619l0000872mcd2dlbqwb}
|
|
LANGFUSE_INIT_ORG_NAME: ${LANGFUSE_INIT_ORG_NAME:-PentAGI Demo}
|
|
LANGFUSE_INIT_PROJECT_ID: ${LANGFUSE_INIT_PROJECT_ID:-cm47619l0000872mcd2dlbqwb}
|
|
LANGFUSE_INIT_PROJECT_NAME: ${LANGFUSE_INIT_PROJECT_NAME:-PentAGI}
|
|
LANGFUSE_INIT_PROJECT_PUBLIC_KEY: ${LANGFUSE_INIT_PROJECT_PUBLIC_KEY:-pk-lf-5946031c-ae6c-4451-98d2-9882a59e1707} # change this to a random string
|
|
LANGFUSE_INIT_PROJECT_SECRET_KEY: ${LANGFUSE_INIT_PROJECT_SECRET_KEY:-sk-lf-d9035680-89dd-4950-8688-7870720bf359} # change this to a random string
|
|
LANGFUSE_INIT_USER_EMAIL: ${LANGFUSE_INIT_USER_EMAIL:-admin@pentagi.com}
|
|
LANGFUSE_INIT_USER_NAME: ${LANGFUSE_INIT_USER_NAME:-admin}
|
|
LANGFUSE_INIT_USER_PASSWORD: ${LANGFUSE_INIT_USER_PASSWORD:-P3nTagIsD0d} # change this to a random password
|
|
LANGFUSE_SDK_CI_SYNC_PROCESSING_ENABLED: ${LANGFUSE_SDK_CI_SYNC_PROCESSING_ENABLED:-false}
|
|
LANGFUSE_READ_FROM_POSTGRES_ONLY: ${LANGFUSE_READ_FROM_POSTGRES_ONLY:-false}
|
|
LANGFUSE_READ_FROM_CLICKHOUSE_ONLY: ${LANGFUSE_READ_FROM_CLICKHOUSE_ONLY:-true}
|
|
LANGFUSE_RETURN_FROM_CLICKHOUSE: ${LANGFUSE_RETURN_FROM_CLICKHOUSE:-true}
|
|
# langfuse enterprise license key
|
|
LANGFUSE_EE_LICENSE_KEY: ${LANGFUSE_EE_LICENSE_KEY:-}
|
|
# custom oauth2
|
|
AUTH_CUSTOM_CLIENT_ID: ${LANGFUSE_AUTH_CUSTOM_CLIENT_ID:-}
|
|
AUTH_CUSTOM_CLIENT_SECRET: ${LANGFUSE_AUTH_CUSTOM_CLIENT_SECRET:-}
|
|
AUTH_CUSTOM_ISSUER: ${LANGFUSE_AUTH_CUSTOM_ISSUER:-}
|
|
AUTH_CUSTOM_NAME: ${LANGFUSE_AUTH_CUSTOM_NAME:-}
|
|
AUTH_CUSTOM_SCOPE: ${LANGFUSE_AUTH_CUSTOM_SCOPE:-openid email profile}
|
|
AUTH_CUSTOM_ALLOW_ACCOUNT_LINKING: ${LANGFUSE_AUTH_CUSTOM_ALLOW_ACCOUNT_LINKING:-true}
|
|
AUTH_CUSTOM_CLIENT_AUTH_METHOD: ${LANGFUSE_AUTH_CUSTOM_CLIENT_AUTH_METHOD:-}
|
|
AUTH_DISABLE_SIGNUP: ${LANGFUSE_AUTH_DISABLE_SIGNUP:-}
|
|
LANGFUSE_ALLOWED_ORGANIZATION_CREATORS: ${LANGFUSE_ALLOWED_ORGANIZATION_CREATORS:-}
|
|
AUTH_SESSION_MAX_AGE: ${LANGFUSE_AUTH_SESSION_MAX_AGE:-240}
|
|
LANGFUSE_DEFAULT_ORG_ID: ${LANGFUSE_DEFAULT_ORG_ID:-ocm47619l0000872mcd2dlbqwb}
|
|
LANGFUSE_DEFAULT_PROJECT_ID: ${LANGFUSE_DEFAULT_PROJECT_ID:-cm47619l0000872mcd2dlbqwb}
|
|
LANGFUSE_DEFAULT_ORG_ROLE: ${LANGFUSE_DEFAULT_ORG_ROLE:-VIEWER}
|
|
LANGFUSE_DEFAULT_PROJECT_ROLE: ${LANGFUSE_DEFAULT_PROJECT_ROLE:-VIEWER}
|
|
logging:
|
|
options:
|
|
max-size: 50m
|
|
max-file: "7"
|
|
networks:
|
|
- langfuse-network
|
|
- pentagi-network
|
|
|
|
clickhouse:
|
|
image: clickhouse/clickhouse-server:24
|
|
restart: unless-stopped
|
|
user: "101:101"
|
|
container_name: langfuse-clickhouse
|
|
hostname: langfuse-clickhouse
|
|
environment:
|
|
CLICKHOUSE_DB: ${LANGFUSE_CLICKHOUSE_DB:-default}
|
|
CLICKHOUSE_USER: ${LANGFUSE_CLICKHOUSE_USER:-clickhouse}
|
|
CLICKHOUSE_PASSWORD: ${LANGFUSE_CLICKHOUSE_PASSWORD:-clickhouse}
|
|
volumes:
|
|
- langfuse-clickhouse-data:/var/lib/clickhouse
|
|
- langfuse-clickhouse-logs:/var/log/clickhouse-server
|
|
healthcheck:
|
|
test: wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 1s
|
|
logging:
|
|
options:
|
|
max-size: 50m
|
|
max-file: "7"
|
|
networks:
|
|
- langfuse-network
|
|
|
|
minio:
|
|
image: minio/minio:RELEASE.2025-07-23T15-54-02Z
|
|
restart: unless-stopped
|
|
container_name: langfuse-minio
|
|
hostname: langfuse-minio
|
|
command: server /data --console-address ":9001" --address ":9000" --json
|
|
environment:
|
|
MINIO_ROOT_USER: ${LANGFUSE_S3_ACCESS_KEY_ID:-minio}
|
|
MINIO_ROOT_PASSWORD: ${LANGFUSE_S3_SECRET_ACCESS_KEY:-miniosecret}
|
|
MINIO_BUCKET_NAME: ${LANGFUSE_S3_BUCKET:-langfuse}
|
|
MINIO_UPDATE: off
|
|
entrypoint: |
|
|
/bin/sh -c '
|
|
isAlive() { mc ready local >/dev/null 2>&1; } # check if Minio is alive
|
|
minio $0 "$@" --quiet & echo $! > /tmp/minio.pid # start Minio in the background
|
|
until isAlive; do sleep 1; done # wait until Minio is alive
|
|
echo "MinIO is ready. Proceeding with setup..."
|
|
mc alias set myminio http://localhost:9000 $$MINIO_ROOT_USER $$MINIO_ROOT_PASSWORD
|
|
mc mb myminio/$$MINIO_BUCKET_NAME/ --ignore-existing # create test bucket
|
|
mc anonymous set public myminio/$$MINIO_BUCKET_NAME # make the test bucket public
|
|
mc admin update myminio/$$MINIO_BUCKET_NAME # update test bucket
|
|
echo "MinIO is configured. Trying to restart Minio..."
|
|
kill -s INT $$(cat /tmp/minio.pid) # try to stop Minio
|
|
while [ -e "/proc/$$(cat /tmp/minio.pid)" ]; do sleep 0.5; done # wait until Minio is stopped
|
|
rm /tmp/minio.pid # remove the pid file
|
|
echo "MinIO is configured and running..."
|
|
exec minio $0 "$@" # start Minio in the foreground
|
|
'
|
|
volumes:
|
|
- langfuse-minio-data:/data
|
|
healthcheck:
|
|
test: ["CMD", "mc", "ready", "local"]
|
|
interval: 3s
|
|
timeout: 5s
|
|
retries: 5
|
|
start_period: 1s
|
|
logging:
|
|
options:
|
|
max-size: 50m
|
|
max-file: "7"
|
|
networks:
|
|
- langfuse-network
|
|
|
|
redis:
|
|
image: redis:7
|
|
restart: unless-stopped
|
|
container_name: langfuse-redis
|
|
hostname: langfuse-redis
|
|
command: >
|
|
--requirepass ${LANGFUSE_REDIS_AUTH:-myredissecret}
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 3s
|
|
timeout: 10s
|
|
retries: 10
|
|
logging:
|
|
options:
|
|
max-size: 50m
|
|
max-file: "7"
|
|
networks:
|
|
- langfuse-network
|
|
|
|
postgres:
|
|
image: postgres:16
|
|
restart: unless-stopped
|
|
container_name: langfuse-postgres
|
|
hostname: langfuse-postgres
|
|
environment:
|
|
POSTGRES_USER: ${LANGFUSE_POSTGRES_USER:-postgres}
|
|
POSTGRES_PASSWORD: ${LANGFUSE_POSTGRES_PASSWORD:-postgres}
|
|
POSTGRES_DB: ${LANGFUSE_POSTGRES_DB:-langfuse}
|
|
volumes:
|
|
- langfuse-postgres-data:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U $${LANGFUSE_POSTGRES_USER:-postgres}"]
|
|
interval: 3s
|
|
timeout: 3s
|
|
retries: 10
|
|
logging:
|
|
options:
|
|
max-size: 50m
|
|
max-file: "7"
|
|
networks:
|
|
- langfuse-network
|