Langflow and Langfuse working.

This commit is contained in:
ncd
2025-12-06 14:54:32 +01:00
parent 636effe8ce
commit e716bdaa3e

View File

@@ -33,6 +33,9 @@ LANGFLOW_CONTAINER_PORT='7860'
# Expose Langfuse Web on 8091 -> 3000
LANGFUSE_HOST_PORT='8091'
LANGFUSE_CONTAINER_PORT='3000'
# MinIO API/console ports inside the pod (avoid conflict with ClickHouse native port 9000)
MINIO_API_PORT='9100'
MINIO_CONSOLE_PORT='9101'
# All other services are only reachable inside the pod
BIND_DIR="$HOME/.local/share/$POD_NAME"
@@ -44,6 +47,8 @@ LANGFUSE_MINIO_DATA_DIR="$BIND_DIR/langfuse-minio-data"
USER_SYSTEMD_DIR="$HOME/.config/systemd/user"
LANGFUSE_PUBLIC_URL="http://$HOST_LOCAL_IP:$LANGFUSE_HOST_PORT"
LANGFLOW_DB_URL='postgresql://langflow:langflow@localhost:5432/langflow'
LANGFUSE_COMMON_ENV=(
-e NEXTAUTH_URL="$LANGFUSE_PUBLIC_URL"
-e DATABASE_URL="postgresql://langflow:langflow@localhost:5432/langfuse"
@@ -61,21 +66,21 @@ LANGFUSE_COMMON_ENV=(
-e LANGFUSE_S3_EVENT_UPLOAD_REGION="auto"
-e LANGFUSE_S3_EVENT_UPLOAD_ACCESS_KEY_ID="minio"
-e LANGFUSE_S3_EVENT_UPLOAD_SECRET_ACCESS_KEY="miniosecret"
-e LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT="http://localhost:9000"
-e LANGFUSE_S3_EVENT_UPLOAD_ENDPOINT="http://localhost:$MINIO_API_PORT"
-e LANGFUSE_S3_EVENT_UPLOAD_FORCE_PATH_STYLE=true
-e LANGFUSE_S3_EVENT_UPLOAD_PREFIX="events/"
-e LANGFUSE_S3_MEDIA_UPLOAD_BUCKET="langfuse"
-e LANGFUSE_S3_MEDIA_UPLOAD_REGION="auto"
-e LANGFUSE_S3_MEDIA_UPLOAD_ACCESS_KEY_ID="minio"
-e LANGFUSE_S3_MEDIA_UPLOAD_SECRET_ACCESS_KEY="miniosecret"
-e LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT="http://localhost:9000"
-e LANGFUSE_S3_MEDIA_UPLOAD_ENDPOINT="http://localhost:$MINIO_API_PORT"
-e LANGFUSE_S3_MEDIA_UPLOAD_FORCE_PATH_STYLE=true
-e LANGFUSE_S3_MEDIA_UPLOAD_PREFIX="media/"
-e LANGFUSE_S3_BATCH_EXPORT_ENABLED=false
-e LANGFUSE_S3_BATCH_EXPORT_BUCKET="langfuse"
-e LANGFUSE_S3_BATCH_EXPORT_PREFIX="exports/"
-e LANGFUSE_S3_BATCH_EXPORT_REGION="auto"
-e LANGFUSE_S3_BATCH_EXPORT_ENDPOINT="http://localhost:9000"
-e LANGFUSE_S3_BATCH_EXPORT_ENDPOINT="http://localhost:$MINIO_API_PORT"
-e LANGFUSE_S3_BATCH_EXPORT_EXTERNAL_ENDPOINT="$LANGFUSE_PUBLIC_URL"
-e LANGFUSE_S3_BATCH_EXPORT_ACCESS_KEY_ID="minio"
-e LANGFUSE_S3_BATCH_EXPORT_SECRET_ACCESS_KEY="miniosecret"
@@ -95,7 +100,8 @@ LANGFUSE_COMMON_ENV=(
# Stop existing systemd-managed pod if present, to avoid conflicts on rerun
echo "Stopping systemd-managed pod 'pod-$POD_NAME.service' if it exists..."
if systemctl --user list-units --type=service --all 2>/dev/null | grep -q "pod-$POD_NAME.service"; then
if systemctl --user list-units --type=service --all 2>/dev/null | \
grep -q "pod-$POD_NAME.service"; then
systemctl --user stop "pod-$POD_NAME.service" || true
fi
@@ -147,8 +153,10 @@ done
# Ensure separate database for Langfuse in the shared Postgres instance
echo "Ensuring 'langfuse' database exists for Langfuse..."
if ! podman exec "$POSTGRES_CTR_NAME" psql -U langflow -d postgres -tc "SELECT 1 FROM pg_database WHERE datname = 'langfuse';" | grep -q 1; then
podman exec "$POSTGRES_CTR_NAME" psql -U langflow -d postgres -c "CREATE DATABASE langfuse OWNER langflow;"
if ! podman exec "$POSTGRES_CTR_NAME" psql -U langflow -d postgres \
-tc "SELECT 1 FROM pg_database WHERE datname = 'langfuse';" | grep -q 1; then
podman exec "$POSTGRES_CTR_NAME" psql -U langflow -d postgres \
-c "CREATE DATABASE langfuse OWNER langflow;"
fi
echo "Database 'langfuse' is ready for Langfuse."
@@ -171,7 +179,7 @@ podman run -d --name "$MINIO_CTR_NAME" --pod "$POD_NAME" \
-e MINIO_ROOT_PASSWORD=miniosecret \
-v "$LANGFUSE_MINIO_DATA_DIR:/data:Z" \
"$MINIO_IMAGE" \
server --address ":9000" --console-address ":9001" /data
server --address ":$MINIO_API_PORT" --console-address ":$MINIO_CONSOLE_PORT" /data
echo "Container '$MINIO_CTR_NAME' started (rc=$?)"
# Redis container (queue/cache for Langfuse)
@@ -183,7 +191,7 @@ echo "Container '$REDIS_CTR_NAME' started (rc=$?)"
# Langflow container
podman run -d --name "$LANGFLOW_CTR_NAME" --pod "$POD_NAME" \
-e LANGFLOW_DATABASE_URL=postgresql://langflow:langflow@localhost:5432/langflow \
-e LANGFLOW_DATABASE_URL="$LANGFLOW_DB_URL" \
-e LANGFLOW_CONFIG_DIR=/app/langflow \
-e LANGFLOW_LOG_FILE=/app/langflow/langflow.log \
-e LANGFLOW_LOG_ENV=default \
@@ -242,10 +250,12 @@ echo "To view status: systemctl --user status pod-${POD_NAME}.service"
echo "To view logs: journalctl --user -u pod-${POD_NAME}.service -f"
# Wait for Langflow API readiness
CHECK_URL="http://$HOST_LOCAL_IP:$LANGFLOW_HOST_PORT"
CHECK_URL_LANGFLOW="http://$HOST_LOCAL_IP:$LANGFLOW_HOST_PORT"
CHECK_URL_LANGFUSE="http://$HOST_LOCAL_IP:$LANGFUSE_HOST_PORT"
for attempt in $(seq 1 30); do
if curl -fsS "$CHECK_URL" >/dev/null 2>&1; then
echo "Langflow Web UI is reachable at http://$HOST_LOCAL_IP:$LANGFLOW_HOST_PORT."
if curl -fsS "$CHECK_URL_LANGFLOW" >/dev/null 2>&1; then
echo "Langflow Web UI is reachable at $CHECK_URL_LANGFLOW."
echo "Langfuse Web UI is reachable at $CHECK_URL_LANGFUSE."
break
fi
sleep 2