用途
本技能用于在本地开发环境中搭建并排查 OpenMeter,支持完整的计量(metering)、计费(billing)与 Webhook 功能。它重点说明自托管(Docker)与 Cloud(预发/生产)之间的差异与常见坑点。
适用触发场景包括:本地搭建 OpenMeter、为 Webhook 配置 ngrok、调试 catalog 同步错误、排查 Webhook 返回 500、在 OpenMeter 中安装 Stripe 应用、判断本地与预发环境的功能差异,以及用户提到 OpenMeter + Docker、本地开发或 Webhook 问题时。
主要能力
- 通过 Docker 启动本地 OpenMeter 服务并验证健康状态。
- 安装 Stripe 应用并创建计费配置(billing profile)。
- 使用 ngrok 暴露本地端口,以接收 Stripe 应用回调与 Stripe Webhook。
- 运行 catalog 同步脚本,处理自托管环境下的 Webhook 通道限制。
- 配置 Stripe Webhook 端点与签名密钥。
- 提供 Webhook 认证模式说明:Cloud 使用 Svix 签名,自托管可使用 x-webhook-secret 头校验,本地无密钥时为开发直通模式。
- 提供验证脚本与手动验证命令,检查 OpenMeter、Stripe 应用与 Webhook 端点状态。
- 提供故障排查表,覆盖端口占用、容器启动失败、连接被拒、Stripe 应用缺失、ngrok URL 变更等问题。
使用方式
技能按步骤组织,先通过 AskQuestion 工具确认用户环境(本地 Docker 还是预发/生产)、是否需要 Stripe 计费、ngrok 是否已配置,再决定执行范围。
主要步骤与命令:
- 启动 Docker 服务:
npm run docker:up,验证curl http://localhost:8888/api/v1/meters,Portal UI 为http://localhost:8889,或运行./scripts/verify-setup.ps1。 - 安装 Stripe 应用:
npx tsx scripts/openmeter/openmeter-install-stripe-app.ts,需要.env中的STRIPE_SECRET_KEY,验证curl http://localhost:8888/api/v1/apps。 - 设置 ngrok:安装(
choco install ngrok或brew install ngrok)、认证(ngrok config add-authtoken YOUR_TOKEN)、启动(./scripts/start-ngrok.ps1或ngrok http 3001)、获取 URL(curl http://127.0.0.1:4040/api/tunnels),再运行npx tsx scripts/openmeter/set-openmeter-webhook-url.ts;手动配置需更新三处,改后执行docker compose restart openmeter。 - 运行 catalog 同步:
npx tsx scripts/openmeter/openmeter-catalog-sync.ts,本地输出中出现跳过 Webhook 通道的提示属正常。 - 启动 API 服务:
npm run dev;若使用 ngrok HTTP 转发,在.env中设置API_HTTP_FOR_NGROK=true。 - 配置 Stripe Webhook:在 Stripe Dashboard 添加端点
https://YOUR-NGROK-URL/webhooks/stripe,事件为checkout.session.completed、customer.subscription.updated、customer.subscription.deleted,将签名密钥写入.env的STRIPE_WEBHOOK_SECRET_DEV=whsec_...。
验证可运行 ./scripts/verify-setup.ps1,或手动执行上述 curl 命令,包括向 http://127.0.0.1:3001/webhooks/openmeter 发送测试事件。
适用场景
- 本地开发中需要完整计量、计费与 Webhook 支持。
- 需要区分自托管与 Cloud 行为差异,避免按 Cloud 方式配置本地环境。
- 调试 catalog 同步、Webhook 认证与 Stripe 集成问题。
限制
- 自托管(本地)不支持通过 API 创建 Webhook 通道(返回“not implemented”),仅能通过
config.local.yaml静态配置;Cloud 使用 Svix 支持的 API 通道。 - 自托管无 Svix 签名校验,使用普通 HTTP;Cloud 使用 Svix 签名。
- 本地无密钥时 Webhook 为开发直通模式,接受所有请求。
- 该技能属于 tl-openmeter 套件,相关技能包括 tl-openmeter-api(REST API 参考)与 tl-openmeter-api-mcp-server(供 Cursor 调用本地 OpenMeter 的 MCP 服务器)。
- 资料未提供具体收费、价格、平台支持范围或效果数据。