@@ -10,10 +10,14 @@ services:
1010 build :
1111 context : .
1212 dockerfile : web/Dockerfile
13+ args :
14+ NEXT_PUBLIC_BASE_PATH : " "
1315 cache_from :
1416 - langfuse-web:local
1517 container_name : ${WEB_CONTAINER_NAME:-langfuse-web}
1618 restart : unless-stopped
19+ ports :
20+ - " ${WEB_HOST_PORT:-3000}:3000"
1721 # Keep web decoupled from worker for faster local iteration.
1822 # Start worker separately only when needed.
1923 depends_on :
@@ -29,48 +33,45 @@ services:
2933 condition : service_completed_successfully
3034 yb-tracing-schema-init :
3135 condition : service_completed_successfully
32- ports :
33- - " ${WEB_HOST_PORT:-3000}:3000"
3436 environment :
35- # Metadata DB (Prisma migrations + metadata tables)
36- DATABASE_URL : " ${DATABASE_URL:-postgresql://${YUGABYTE_DB_USER:-yugabyte}:${YUGABYTE_DB_PASSWORD:-yugabyte}@${YUGABYTE_DB_HOST:-yugabyte-db}:${YUGABYTE_DB_PORT:-5433}/${LANGFUSE_DB_NAME:-langfuse}}"
37- TRACING_DATABASE_URL : " ${TRACING_DATABASE_URL:-postgresql://${YUGABYTE_DB_USER:-yugabyte}:${YUGABYTE_DB_PASSWORD:-yugabyte}@${YUGABYTE_DB_HOST:-yugabyte-db}:${YUGABYTE_DB_PORT:-5433}/${LANGFUSE_DB_NAME:-langfuse}?schema=${TRACING_DB_SCHEMA:-clickhouse}}"
38-
39- # Redis
40- REDIS_HOST : " ${REDIS_HOST:-redis}"
41- REDIS_PORT : " ${REDIS_PORT:-6379}"
37+ DATABASE_URL : " postgresql://yugabyte:yugabyte@yugabyte-db:5433/langfuse"
38+ TRACING_DATABASE_URL : " postgresql://yugabyte:yugabyte@yugabyte-db:5433/langfuse?schema=clickhouse"
39+ REDIS_HOST : " redis"
40+ REDIS_PORT : " 6379"
4241 REDIS_AUTH : " ${REDIS_AUTH:-myredissecret}"
4342
4443 # S3 / MinIO — internal Docker endpoint
4544 LANGFUSE_S3_EVENT_UPLOAD_BUCKET : " ${LANGFUSE_S3_EVENT_UPLOAD_BUCKET:-langfuse}"
4645 LANGFUSE_S3_EVENT_UPLOAD_REGION : " ${LANGFUSE_S3_EVENT_UPLOAD_REGION:-us-east-1}"
4746 LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID : " ${LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID:-minio}"
4847 LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY : " ${LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY:-miniosecret}"
49- LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT : " ${LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT:- http://minio:${MINIO_CONTAINER_API_PORT:- 9000}} "
48+ LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT : " http://minio:9000"
5049 LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE : " ${LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE:-true}"
5150 LANGFUSE_S3_EVENT_UPLOAD_PREFIX : " ${LANGFUSE_S3_EVENT_UPLOAD_PREFIX:-events/}"
5251
5352 LANGFUSE_S3_MEDIA_UPLOAD_BUCKET : " ${LANGFUSE_S3_MEDIA_UPLOAD_BUCKET:-langfuse}"
5453 LANGFUSE_S3_MEDIA_UPLOAD_REGION : " ${LANGFUSE_S3_MEDIA_UPLOAD_REGION:-us-east-1}"
5554 LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID : " ${LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID:-minio}"
5655 LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY : " ${LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY:-miniosecret}"
57- LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT : " ${LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT:- http://minio:${MINIO_CONTAINER_API_PORT:- 9000}} "
56+ LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT : " http://minio:9000"
5857 LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE : " ${LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE:-true}"
5958 LANGFUSE_S3_MEDIA_UPLOAD_PREFIX : " ${LANGFUSE_S3_MEDIA_UPLOAD_PREFIX:-media/}"
6059
6160 LANGFUSE_S3_BATCH_EXPORT_ENABLED : " ${LANGFUSE_S3_BATCH_EXPORT_ENABLED:-true}"
6261 LANGFUSE_S3_BATCH_EXPORT_BUCKET : " ${LANGFUSE_S3_BATCH_EXPORT_BUCKET:-langfuse}"
6362 LANGFUSE_S3_BATCH_EXPORT_PREFIX : " ${LANGFUSE_S3_BATCH_EXPORT_PREFIX:-exports/}"
6463 LANGFUSE_S3_BATCH_EXPORT_REGION : " ${LANGFUSE_S3_BATCH_EXPORT_REGION:-us-east-1}"
65- LANGFUSE_S3_BATCH_EXPORT_ENDPOINT : " ${LANGFUSE_S3_BATCH_EXPORT_ENDPOINT:- http://minio:${MINIO_CONTAINER_API_PORT:- 9000}} "
64+ LANGFUSE_S3_BATCH_EXPORT_ENDPOINT : " http://minio:9000"
6665 LANGFUSE_S3_BATCH_EXPORT_EXTERNAL_ENDPOINT : " ${LANGFUSE_S3_BATCH_EXPORT_EXTERNAL_ENDPOINT:-http://localhost:${MINIO_API_PORT:-19090}}"
6766 LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID : " ${LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID:-minio}"
6867 LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY : " ${LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY:-miniosecret}"
6968 LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE : " ${LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE:-true}"
7069
7170 # Auth
72- NEXTAUTH_URL : " ${NEXTAUTH_URL:- http://localhost:${WEB_HOST_PORT:-3000}} "
71+ NEXTAUTH_URL : " http://localhost:5000 "
7372 NEXTAUTH_SECRET : " ${NEXTAUTH_SECRET:-secret}"
73+ ADMIN_API_KEY : " ${ADMIN_API_KEY:-meko-local-admin-key}"
74+ LANGFUSE_EE_LICENSE_KEY : " ${LANGFUSE_EE_LICENSE_KEY:-langfuse_ee_local_dev}"
7475
7576 # App config
7677 SALT : " ${SALT:-salt}"
@@ -83,6 +84,7 @@ services:
8384 # setting it triggers dd-trace at runtime, which is only installed
8485 # in the image when passed as a build ARG (not set for local builds).
8586 NEXT_PUBLIC_LANGFUSE_RUN_NEXT_INIT : " ${NEXT_PUBLIC_LANGFUSE_RUN_NEXT_INIT:-true}"
87+ NEXT_PUBLIC_BASE_PATH : " "
8688
8789 # Bootstrap user / org / projecti
8890 # TODO: this to to avoid the sign in/sign up step.
@@ -125,43 +127,40 @@ services:
125127 ports :
126128 - " ${WORKER_HOST_PORT:-3030}:3030"
127129 environment :
128- # Metadata DB
129- DATABASE_URL : " ${DATABASE_URL:-postgresql://${YUGABYTE_DB_USER:-yugabyte}:${YUGABYTE_DB_PASSWORD:-yugabyte}@${YUGABYTE_DB_HOST:-yugabyte-db}:${YUGABYTE_DB_PORT:-5433}/${LANGFUSE_DB_NAME:-langfuse}}"
130- TRACING_DATABASE_URL : " ${TRACING_DATABASE_URL:-postgresql://${YUGABYTE_DB_USER:-yugabyte}:${YUGABYTE_DB_PASSWORD:-yugabyte}@${YUGABYTE_DB_HOST:-yugabyte-db}:${YUGABYTE_DB_PORT:-5433}/${LANGFUSE_DB_NAME:-langfuse}?schema=${TRACING_DB_SCHEMA:-clickhouse}}"
131-
132- # Redis
133- REDIS_HOST : " ${REDIS_HOST:-redis}"
134- REDIS_PORT : " ${REDIS_PORT:-6379}"
130+ DATABASE_URL : " postgresql://yugabyte:yugabyte@yugabyte-db:5433/langfuse"
131+ TRACING_DATABASE_URL : " postgresql://yugabyte:yugabyte@yugabyte-db:5433/langfuse?schema=clickhouse"
132+ REDIS_HOST : " redis"
133+ REDIS_PORT : " 6379"
135134 REDIS_AUTH : " ${REDIS_AUTH:-myredissecret}"
136135
137136 # S3 / MinIO
138137 LANGFUSE_S3_EVENT_UPLOAD_BUCKET : " ${LANGFUSE_S3_EVENT_UPLOAD_BUCKET:-langfuse}"
139138 LANGFUSE_S3_EVENT_UPLOAD_REGION : " ${LANGFUSE_S3_EVENT_UPLOAD_REGION:-us-east-1}"
140139 LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID : " ${LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID:-minio}"
141140 LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY : " ${LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY:-miniosecret}"
142- LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT : " ${LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT:- http://minio:${MINIO_CONTAINER_API_PORT:- 9000}} "
141+ LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT : " http://minio:9000"
143142 LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE : " ${LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE:-true}"
144143 LANGFUSE_S3_EVENT_UPLOAD_PREFIX : " ${LANGFUSE_S3_EVENT_UPLOAD_PREFIX:-events/}"
145144
146145 LANGFUSE_S3_MEDIA_UPLOAD_BUCKET : " ${LANGFUSE_S3_MEDIA_UPLOAD_BUCKET:-langfuse}"
147146 LANGFUSE_S3_MEDIA_UPLOAD_REGION : " ${LANGFUSE_S3_MEDIA_UPLOAD_REGION:-us-east-1}"
148147 LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID : " ${LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID:-minio}"
149148 LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY : " ${LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY:-miniosecret}"
150- LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT : " ${LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT:- http://minio:${MINIO_CONTAINER_API_PORT:- 9000}} "
149+ LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT : " http://minio:9000"
151150 LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE : " ${LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE:-true}"
152151 LANGFUSE_S3_MEDIA_UPLOAD_PREFIX : " ${LANGFUSE_S3_MEDIA_UPLOAD_PREFIX:-media/}"
153152
154153 LANGFUSE_S3_BATCH_EXPORT_ENABLED : " ${LANGFUSE_S3_BATCH_EXPORT_ENABLED:-true}"
155154 LANGFUSE_S3_BATCH_EXPORT_BUCKET : " ${LANGFUSE_S3_BATCH_EXPORT_BUCKET:-langfuse}"
156155 LANGFUSE_S3_BATCH_EXPORT_PREFIX : " ${LANGFUSE_S3_BATCH_EXPORT_PREFIX:-exports/}"
157156 LANGFUSE_S3_BATCH_EXPORT_REGION : " ${LANGFUSE_S3_BATCH_EXPORT_REGION:-us-east-1}"
158- LANGFUSE_S3_BATCH_EXPORT_ENDPOINT : " ${LANGFUSE_S3_BATCH_EXPORT_ENDPOINT:- http://minio:${MINIO_CONTAINER_API_PORT:- 9000}} "
157+ LANGFUSE_S3_BATCH_EXPORT_ENDPOINT : " http://minio:9000"
159158 LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID : " ${LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID:-minio}"
160159 LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY : " ${LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY:-miniosecret}"
161160 LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE : " ${LANGFUSE_S3_BATCH_EXPORT_FORCE_PATH_STYLE:-true}"
162161
163162 # App config
164- NEXTAUTH_URL : " ${NEXTAUTH_URL:- http://localhost:${WEB_HOST_PORT:-3000}} "
163+ NEXTAUTH_URL : " http://localhost:5000 "
165164 SALT : " ${SALT:-salt}"
166165 ENCRYPTION_KEY : " ${ENCRYPTION_KEY:-0000000000000000000000000000000000000000000000000000000000000000}"
167166 TELEMETRY_ENABLED : " ${TELEMETRY_ENABLED:-false}"
@@ -282,13 +281,13 @@ services:
282281 restart : always
283282 entrypoint : sh
284283 # create the 'langfuse' bucket before starting the service
285- command : -c 'mkdir -p /data/langfuse && minio server --address ":${MINIO_CONTAINER_API_PORT:- 9000} " --console-address ":${MINIO_CONTAINER_CONSOLE_PORT:- 9001} " /data'
284+ command : -c 'mkdir -p /data/langfuse && minio server --address ":9000" --console-address ":9001" /data'
286285 environment :
287286 MINIO_ROOT_USER : ${MINIO_ROOT_USER:-minio}
288287 MINIO_ROOT_PASSWORD : ${MINIO_ROOT_PASSWORD:-miniosecret}
289288 ports :
290- - " ${MINIO_API_PORT:-19090}:${MINIO_CONTAINER_API_PORT:- 9000} "
291- - " 127.0.0.1:${MINIO_CONSOLE_PORT:-19091}:${MINIO_CONTAINER_CONSOLE_PORT:- 9001} "
289+ - " ${MINIO_API_PORT:-19090}:9000"
290+ - " 127.0.0.1:${MINIO_CONSOLE_PORT:-19091}:9001"
292291 volumes :
293292 - langfuse_minio_data:/data
294293 healthcheck :
@@ -304,14 +303,18 @@ services:
304303 # CHANGEME: row below to secure redis password
305304 command : >
306305 --requirepass ${REDIS_AUTH:-myredissecret}
307- --port ${REDIS_PORT:- 6379}
306+ --port 6379
308307 --maxmemory-policy noeviction
309308 ports :
310- - " 127.0.0.1:${REDIS_HOST_PORT:-16379}:${REDIS_PORT:- 6379} "
309+ - " 127.0.0.1:${REDIS_HOST_PORT:-16379}:6379"
311310 volumes :
312311 - langfuse_redis_data:/data
313312 healthcheck :
314- test : ["CMD", "redis-cli", "ping"]
313+ test :
314+ [
315+ " CMD-SHELL" ,
316+ " redis-cli -p 6379 -a ${REDIS_AUTH:-myredissecret} ping | grep -q PONG" ,
317+ ]
315318 interval : 3s
316319 timeout : 10s
317320 retries : 10
0 commit comments