StarlensStarlens进入工作台

部署方式

Starlens 可以在本地开发环境运行,也可以部署到 Vercel 或自托管环境。部署前需要准备 PostgreSQL 数据库、GitHub OAuth 应用和加密密钥。如果要启用 AI,还需要配置至少一个 AI Provider。

Starlens 部署方式图,展示本地开发、Vercel 部署和自托管运行时与共享依赖之间的关系。
这张图强调三种部署路径复用同一套代码、数据库模式和认证配置,只是运行环境不同。

本地开发

  1. 准备 Node.js、pnpm 和 PostgreSQL。
  2. 在仓库根目录创建 .env,写入数据库连接串和 GitHub OAuth 配置。
  3. 安装依赖后执行数据库迁移。
  4. 启动 Web 应用并访问本地地址。

常用命令:

corepack pnpm install
corepack pnpm db:migrate:local
corepack pnpm dev

推荐 .env 模板:

AUTH_SECRET="replace-with-random-secret"
NEXTAUTH_URL="http://localhost:3000"
AUTH_GITHUB_ID="github-client-id"
AUTH_GITHUB_SECRET="github-client-secret"
DATABASE_URL="postgres://starlens:starlens@localhost:54329/starlens_dev"
TOKEN_ENCRYPTION_SECRET="replace-with-random-32-byte-secret"
SYSTEM_AI_API_KEY=""
SYSTEM_AI_BASE_URL=""
SYSTEM_AI_MODEL=""

本地 GitHub OAuth 回调地址应配置为:

http://localhost:3000/api/auth/callback/github

Vercel 部署

Vercel 部署适合希望快速上线 Web 应用的场景。你需要在 Vercel 项目环境变量中配置数据库连接串、NextAuth 密钥和 GitHub OAuth 凭据。

推荐变量:

变量必填用途
DATABASE_URLPostgreSQL 连接串,推荐使用托管 PostgreSQL 或 Neon
AUTH_SECRETNextAuth 会话密钥
NEXTAUTH_URL线上站点地址
AUTH_GITHUB_IDGitHub OAuth Client ID
AUTH_GITHUB_SECRETGitHub OAuth Client Secret
TOKEN_ENCRYPTION_SECRET加密 GitHub token、AI key 和额外 header
SYSTEM_AI_API_KEY系统级默认 AI Provider 密钥,用户未配置默认 Provider 时回退使用
SYSTEM_AI_BASE_URL系统级默认 OpenAI-compatible Base URL
SYSTEM_AI_MODEL系统级默认模型名称

Vercel 上线流程:

  1. 创建 Vercel 项目并指向仓库。
  2. 配置 Production、Preview 和 Development 环境变量。
  3. 在 GitHub OAuth App 中新增生产回调地址。
  4. 执行数据库迁移。
  5. 部署后访问 /docs/app/api/search 做基础检查。

生产 GitHub OAuth 回调地址示例:

https://your-vercel-domain.vercel.app/api/auth/callback/github

自托管部署

自托管适合希望完全控制运行环境和数据库的场景。你可以把 Web 应用部署到自己的服务器,并连接自管 PostgreSQL。

基础流程:

  1. 在服务器准备 Node.js、pnpm 和数据库连接。
  2. 配置生产环境变量。
  3. 构建应用。
  4. 运行 Next.js 服务,并通过反向代理暴露 HTTPS 域名。
corepack pnpm install --frozen-lockfile
corepack pnpm build
corepack pnpm --filter @starlens/web start

反向代理需要转发 HTTPS 请求到 Next.js 服务,并保持 NEXTAUTH_URL 与公网域名一致。建议在代理层开启 HTTPS、HTTP/2、压缩和基础访问日志。

Docker 自托管

仓库内提供 Docker 部署配置,适合 1Panel、OpenResty 和自管 PostgreSQL 的服务器。默认宿主机端口使用 3333,容器内仍使用 Next.js 默认的 3000

准备生产环境变量:

cp deploy/.env.production.example deploy/.env.production

至少填写:

变量说明
NEXTAUTH_URL对外访问地址,例如 http://your-server-ip:3333 或正式 HTTPS 域名
DATABASE_URLPostgreSQL 连接串;1Panel 同网络容器可使用 1Panel-postgresql-xIiE:5432
AUTH_SECRETNextAuth 会话密钥
AUTH_GITHUB_IDGitHub OAuth Client ID
AUTH_GITHUB_SECRETGitHub OAuth Client Secret
TOKEN_ENCRYPTION_SECRETGitHub token、AI key 和额外 header 的加密密钥

启动前先执行迁移:

docker compose -f deploy/docker-compose.yml --profile migrate run --rm starlens-migrate

启动 Web 服务:

docker compose -f deploy/docker-compose.yml up -d --build starlens-web

服务默认暴露在:

http://服务器地址:3333

如果前面有 OpenResty 或 1Panel 网站反代,代理目标应指向 127.0.0.1:3333,并把 NEXTAUTH_URL 改成最终 HTTPS 域名。GitHub OAuth App 的回调地址必须同步改为:

{NEXTAUTH_URL}/api/auth/callback/github

OpenResty 与 HTTPS

1Panel/OpenResty 场景下可以复用仓库里的反代模板:

cp deploy/openresty-starlens.conf.example /opt/1panel/www/conf.d/starlens.520ai.xin.conf
docker exec 1Panel-openresty-oXOm nginx -t
docker exec 1Panel-openresty-oXOm nginx -s reload

正式域名上线前,需要在 Cloudflare 创建 DNS 记录:

A  starlens  服务器公网 IP

DNS 生效后,推荐用 Let’s Encrypt/acme.sh 签发免费证书并自动续期:

DOMAIN=starlens.520ai.xin PUBLIC_IP=140.238.61.108 bash deploy/issue-letsencrypt.sh

acme.sh 会安装 cron 任务自动续期。证书路径生成后,在 OpenResty 配置中启用 HTTPS server,并把 HTTP 站点的 / 访问改为 301 跳转到 HTTPS。

数据库迁移

Starlens 使用 Drizzle 管理 PostgreSQL schema。首次上线或 schema 变更后执行:

corepack pnpm db:migrate

本地开发可以使用:

corepack pnpm db:migrate:local

Neon 环境可以使用:

corepack pnpm db:migrate:neon

迁移前建议确认目标 DATABASE_URL 指向正确环境,避免把开发迁移误打到生产库。

AI 功能启用

AI 功能不是启动 Web 应用的硬依赖。上线后可以在设置页创建用户级 AI Provider,也可以通过环境变量提供系统级默认 Provider。

启用前确认:

  • Provider 的 API Key 可用。
  • Base URL 包含正确协议和路径。
  • 模型 ID 是真实可调用的模型 ID。
  • 如果使用网关,额外 header 已正确配置。
  • 设置页中的 Provider 验证结果为 success

CLI / Agent / MCP 接入

CLI、Agent HTTP tools 和 MCP 不需要单独部署公网服务。它们通过个人 API Token 调用当前 Starlens 站点。

Agent runtime 示例:

STARLENS_TOKEN="stl_xxx"
STARLENS_API_BASE_URL="https://your-starlens.example.com"

本地 MCP 示例:

STARLENS_TOKEN="stl_xxx" \
STARLENS_API_BASE_URL="https://your-starlens.example.com" \
corepack pnpm mcp:start

如果 API 部署在内网,Agent runtime、CLI 或 IDE 所在机器必须能访问 STARLENS_API_BASE_URL

部署检查

  • GitHub OAuth 回调地址需要和线上域名一致。
  • 数据库迁移需要在首次上线前执行。
  • 如果启用 AI 功能,需要在设置页配置对应 Provider。
  • 如果要给 CLI 使用,需要在 Tokens 页面创建个人 API Token。
  • /api/sync 能成功触发同步,并在 GitHub 速率限制内完成。
  • /api/search 能返回当前用户的数据,且不会返回其他用户仓库。
  • Token 撤销后,旧 Bearer Token 不能继续访问 API。
  • 生产环境不要暴露 .env、数据库连接串或 AI API Key。