跳转到内容

快速开始

五条命令在本地起全套:Docker 里的 PostgreSQL 和 Redis、8088 端口的 FastAPI 后端、8888 端口的 React 前端,外加一个 Celery worker。账号 admin,密码是 pnpm db:init 时你设的那个。

  • Node.js ≥ 22.13(pnpm 版本由 package.json 锁定,corepack 会自动装)
  • Python ≥ 3.10 和 uv
  • Docker
终端窗口
docker compose -f docker-compose.dev.yml up -d # PostgreSQL 16 + Redis
pnpm install:all # JS 依赖、Python 依赖、git 钩子、Playwright Chromium
cp apps/api/backend/.env.example apps/api/backend/.env # 默认值已经和上面的容器对齐
pnpm db:init # 建表 + 灌种子数据 + 给 admin 设新密码(只在首次跑)
pnpm dev # api :8088 · web :8888 · celery worker
# 打开 http://127.0.0.1:8888

打开 http://127.0.0.1:8888,用 admin 和你在 pnpm db:init 时设的密码登录。

步骤验收
docker compose … up -ddocker ps 里 fba_postgres 和 fba_redis 都是 healthy
pnpm install:all没有报错地跑完,apps/api/.venv 目录已经生成
pnpm db:init最后一行是「已把新库标记到迁移 head」;pnpm db:current 显示的版本带 (head)
pnpm dev打开登录页能看到验证码图片 —— 验证码是后端发的,看到它才说明前后端通了
登录进入工作台,顶部写着「你有 N 件事等着处理」

卡在哪一步,先去常见问题里按报错原文搜。

图形验证码默认开启。本地想省掉,在「系统管理 → 参数配置」里把 LOGIN_CAPTCHA_ENABLED 改成 false,改完立即生效。想照常输入的话,先记下 GET /api/v1/auth/captcha 响应里的 uuid,再去 Redis 里查答案:

终端窗口
docker exec fba_redis redis-cli --raw GET "fba:login:captcha:<uuid>"

可选的依赖都在同一份 docker-compose.dev.yml 里,按需打开,再改 .env 里的 DATABASE_*:

要用命令备注
SQL Serverdocker compose -f docker-compose.dev.yml --profile sqlserver up -d mssql宿主机还要装 Microsoft ODBC Driver 18——后端走 aioodbc 连库,容器里那份驱动不算
MySQL自备 MySQL 8.xDATABASE_TYPE='mysql',字符集用 utf8mb4
S3 兼容存储(RustFS)docker compose -f docker-compose.dev.yml --profile s3 up -d rustfs在「系统管理 → 存储管理」里新建存储前,.env 里要先配 STORAGE_ENCRYPT_SECRET_KEY(openssl rand -hex 32)

三种数据库各自怎么支持、怎么测,见数据库。

进程端口由谁启动
FastAPI 后端(uvicorn,--reload)8088pnpm dev
React 前端(Vite)8888(固定,strictPort)pnpm dev
Celery worker(内嵌 beat)—pnpm dev
PostgreSQL / Redis5432 / 6380docker compose

前端端口是刻意固定的:CORS、OAuth2 回调地址、桌面端的开发地址都写的是 8888,所以端口被占时 Vite 直接报错,而不是漂到 8889。