PureChatDocumentation
快速开始

快速开始指南

安装 PureChatNext、配置本地环境并启动 Vite SPA 与 Next BFF。

1. 安装依赖

pnpm install

2. 配置数据库

应用认证使用 better-auth,只需可用的 PostgreSQL(本地 Docker,或云托管如 Supabase 免费 Postgres、Neon 等均可)。

2.1 推荐:本地 Docker

需已安装 Docker Desktop:

# 一次性:创建 compose 侧环境变量(已有文件不会覆盖)
pnpm docker:setup:dev

# 启动全部本地依赖并等待健康检查
pnpm dev:docker
pnpm db:migrate

会一并启动 PostgreSQL、Redis、RustFS(S3)和 SearXNG。连接信息见下方环境变量示例,并与 docker-compose/dev/.env 保持一致。

2.2 可选:云托管 Postgres

也可使用 Supabase 免费 Postgres、Neon 或其它云托管实例:

  1. 访问 https://supabase.com 或 https://neon.tech 创建项目
  2. 在项目设置中复制 Postgres 连接串(Supabase:Database → Connection string)
  3. 将连接串写入 .env.local 的 DATABASE_URL(云托管通常设 DATABASE_DRIVER=neon)

更细的连接说明见 环境变量配置 与 Drizzle 指南。

3. 配置环境变量

在项目根目录创建 .env.local(也可从 .env.example 复制):

APP_URL=http://localhost:5174
NODE_ENV=development

# 本地 Docker PostgreSQL(与 docker-compose/dev/.env 一致)
DATABASE_DRIVER=node
DATABASE_URL=postgresql://purechat:<URL 编码后的 POSTGRES_PASSWORD>@127.0.0.1:5432/purechat

# 密钥生成方式见 .env.example
KEY_VAULTS_SECRET=your-random-secret
AUTH_SECRET=your-random-secret
JWKS_KEY='{"keys":[...]}'

本地 APP_URL 统一为 http://localhost:5174(不要写成 :3000)。邮件验证、重置密码、OAuth 回调会落在 SPA;/api 由 Vite 代理到 Next。详见 环境变量 · APP_URL。

若使用本地 Docker 的 Redis / S3 / 搜索,可一并配置:

REDIS_URL=redis://127.0.0.1:6379
REDIS_PREFIX=purechat
DISABLE_REDIS=0

S3_ACCESS_KEY_ID=<docker-compose/dev/.env 中的 RUSTFS_ACCESS_KEY>
S3_SECRET_ACCESS_KEY=<docker-compose/dev/.env 中的 RUSTFS_SECRET_KEY>
S3_BUCKET=purechat
S3_ENDPOINT=http://localhost:9000
S3_ENABLE_PATH_STYLE=1
S3_SET_ACL=0
# S3_SET_ACL=0:对象私有,经应用鉴权代理访问(RustFS 必用)。详见 docs/self-hosting/configuration/environment.md

SEARCH_PROVIDERS=searxng
SEARXNG_URL=http://localhost:8180

常用 Docker 命令:

pnpm dev:docker        # 启动
pnpm dev:docker:down   # 停止(保留数据卷)
pnpm dev:docker:reset  # 清空卷后重建并执行 db:migrate

dev:docker:reset 会要求输入确认并永久删除全部开发卷。旧本机数据迁移和生产部署见 Docker 自托管与数据迁移;服务说明见 本地 PostgreSQL、本地 Redis、联网搜索。

4. 启动开发服务器

# 推荐:并发 Next(API :3000)+ Vite SPA(UI :5174)
pnpm dev

# 需要点击元素跳转源码时(启用 code-inspector,仍是完整 Next + SPA)
pnpm dev:inspect

# 或分终端
pnpm dev:next
pnpm dev:spa

浏览器访问 **http://localhost:5174**(SPA)。Next :3000 只作 API / BFF,不要当主 UI 入口。

CORS:未额外配置时会允许 APP_URL 以及本地开发端口。
修改 APP_URL 后需重启 dev:next。
dev:inspect / CODE_INSPECTOR=1:Alt+Shift 点击页面元素可在 Cursor 中打开对应源码;默认关闭以降低编译开销。
VITE_DEVTOOLS=1:启用 Vite DevTools 浮动面板;默认关闭。临时:VITE_DEVTOOLS=1 pnpm dev:spa。

5. 测试认证功能

本地登录统一使用测试账号 test@example.com / 123456Qwer(详见 测试范围)。账号不存在时先在 http://localhost:5174/signup 注册一次。

  1. 打开浏览器访问:http://localhost:5174/signin(或首页引导)
  2. 使用上面的测试账号登录;没有该用户则先注册
  3. 登录成功后测试获取当前用户信息
  4. 测试登出功能

6. API 接口测试

你也可以使用 Postman、curl 或其他工具测试 API:

注册用户

curl -X POST http://localhost:3000/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","password":"123456Qwer"}'

登录

curl -X POST http://localhost:3000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","password":"123456Qwer"}'

获取当前用户(需要 token)

curl -X GET http://localhost:3000/api/auth/me \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

常见问题

Q: 登录时提示 "Invalid login credentials"

A: 检查邮箱和密码是否正确,或先使用注册接口创建账号。

Q: 提示缺少 DATABASE_URL 或无法连接数据库

A: 确认已配置 .env.local 中的 DATABASE_URL,本地 Docker 需先执行 pnpm dev:docker,云托管需检查连接串与 DATABASE_DRIVER。

Q: CORS 错误

A: 确认 APP_URL 指向你的前端地址;若还有额外域名,再检查 ALLOWED_ORIGINS。

Q: Token 过期

A: Token 会自动刷新,如果仍然失败,需要重新登录。

下一步

本页内容

问问文档

基于公开文档回答