这个坑值得记一笔。自建 Langfuse 3.2 用 docker compose 起,SDK 上报一直返回 401,原文 Unauthorized: Invalid public key,key 是十分钟前在项目设置里刚复制的。

刚开始盯着「反向代理转发时丢了 Authorization 头」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。把 secret key 填进了 public key 的位置;host 指到了 3000 的前端端口,上报应走 3001;SDK 版本与服务端 3.x 的接口路径不匹配。

先打印 SDK 实际读到的环境变量

python -c "import os;print(os.getenv('LANGFUSE_HOST'),os.getenv('LANGFUSE_PUBLIC_KEY')[:8])"

直接 curl 验证 key 与端口

curl -s http://127.0.0.1:3001/api/public/health -H "Authorization: Bearer $LANGFUSE_PUBLIC_KEY"

随后确认反向代理保留了鉴权头

curl -s -D - -o /dev/null http://127.0.0.1:3001/api/public/ingestion -H "Authorization: Bearer $KEY"

剩下的就是对齐 SDK 与服务端版本后重启

python -c "import langfuse;print(langfuse.__version__)"

命令输出我都留了记录,免得改完记不清原来的值。

改之前先确认了最近有没有人动过配置,避免白查一遍。

这次没动代码,只在配置和运行环境上找原因。

怎么算真的好了,看的是同一批现象。curl 与 SDK 都返回 207,Langfuse 页面能看到 trace,401 归零,上报延迟稳定在 2 秒以内。

public key 和 secret key 长得像但用途不同,自建部署还要分清 3000 前端和 3001 后端两个端口。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189