用Docker快速部署开源AI成本分析工具Lunary
前言
很多团队在接入大语言模型API后,每个月的账单像一笔糊涂账。AI成本分析工具能帮你按用户、按项目、按模型精确拆分调用费用。
Lunary 是一款专门针对 LLM 应用的开源可观测性平台,支持实时跟踪 Token 消耗和花费。
今天我就带你从零开始,用 Docker 在服务器上把它跑起来。
准备工作
你需要一台 Linux 服务器(Ubuntu 22.04 或 CentOS 7+ 均可),最低配置 1 核 2G 内存、20GB 磁盘。
本机或云服务器都行,但要求能访问 Docker 官方仓库(国内可配置镜像源)。
安装 Docker 和 Compose
# 更新包管理器(Ubuntu 为例)
sudo apt update && sudo apt upgrade -y
# 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# 安装 Docker Compose(独立版本)
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker --version && docker-compose --version
四步部署 Lunary
1. 创建项目目录
mkdir ~/lunary && cd ~/lunary
2. 编写 Compose 文件
创建 docker-compose.yml,写入以下内容(注意替换数据库密码):
version: '3.8'
services:
postgres:
image: postgres:15
environment:
POSTGRES_DB: lunary
POSTGRES_USER: lunary
POSTGRES_PASSWORD: your_secure_password
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
app:
image: lunaryapp/lunary:latest
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://lunary:your_secure_password@postgres:5432/lunary
NEXTAUTH_SECRET: your_random_secret_key
NEXTAUTH_URL: http://你的服务器IP:3000
depends_on:
- postgres
restart: always
volumes:
pgdata:
NEXTAUTH_SECRET可以用openssl rand -base64 32生成一串随机密钥。NEXTAUTH_URL替换为你的实际服务器 IP 或域名。
3. 启动服务
docker-compose up -d
首次启动会自动拉取镜像并创建数据库表,大约需要 1-2 分钟。
你可以用 docker-compose logs -f app 实时查看启动日志。
4. 初始化管理员账户
服务启动后,在浏览器访问 http://服务器IP:3000,注册第一个账号,该账号自动成为管理员。
登录后你会看到一个空仪表盘,至此部署完成。
避坑指南
端口冲突
如果服务器 3000 端口已被占用,在 Compose 文件的 ports 中改为 4000:3000,然后访问 4000 端口即可。
同时记得更新 NEXTAUTH_URL 中的端口。
数据库持久化
务必用 volumes 把 PostgreSQL 数据挂载出来,否则容器删除后所有配置和日志都丢失。
上面示例已挂载到 pgdata。
密钥安全性
NEXTAUTH_SECRET 和数据库密码不要使用弱密码或默认值,建议用随机字符串。
生产环境下最好通过 .env 文件或 Docker Secrets 管理。
更新版本
Lunary 迭代较快,执行以下命令更新到最新版:
cd ~/lunary
docker-compose pull app
docker-compose up -d --force-recreate app
效果验证
确认服务正常运行
docker-compose ps
两个容器状态都是 Up,且 app 容器的端口映射显示 0.0.0.0:3000->3000/tcp。
接入真实数据测试
Lunary 使用 SDK 接入你的 AI 应用。
以 Python 为例,在项目中安装:
pip install lunary
然后用你的管理员 API Key(在后台设置页面生成)初始化客户端,发起一次 OpenAI 调用。
几秒后返回 Lunary 仪表盘,就能看到请求数、Token 消耗和预估费用。
如果数据未出现,检查日志有无 Connection refused 错误,并确认 DATABASE_URL 配置正确。
常见问题
Q: 部署后访问页面一直转圈?
A: 一般是数据库未就绪或密钥无效。
先看 docker-compose logs app 中是否有 Can't reach database 提示,确认后检查 PostgreSQL 容器是否正常启动(docker-compose logs postgres)。
Q: 能否集成多个AI供应商?
A: Lunary 支持 OpenAI、Anthropic、Cohere 等主流模型,也兼容任何兼容 OpenAI 格式的 API。
只需在 SDK 中配置对应 provider 即可。
Q: 免费版有功能限制吗?
A: Lunary 开源版完全免费,无限制。
如果需要团队协作、SSO 等高级功能,官方有付费云版。
总结
以上就是在服务器上部署 AI 成本分析工具 Lunary 的完整步骤。
用它你可以直观看到每个请求花了多少钱,快速定位费用异常。
关键点在于密钥安全、数据持久化和端口映射。
如果你在部署中遇到其他报错,欢迎对照本文的避坑部分排查,或查看官方文档。