|
|
|
|
| 仪表盘 | 上游管理 |
|---|---|
![]() |
![]() |
| 请求日志 | 密钥管理 |
![]() |
![]() |
| 依赖 | 版本 | 说明 |
|---|---|---|
| Node.js | 22+ | 推荐使用 pnpm 管理 |
| PostgreSQL | 16+ | 生产环境推荐(默认) |
| SQLite | 最新 | 本地开发可选(通过 DB_TYPE=sqlite) |
# 1. 克隆项目
git clone https://github.com/g1331/AutoRouter.git
cd AutoRouter
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,设置 ADMIN_TOKEN 和 ENCRYPTION_KEY
# 3. 启动服务
docker compose up -d
# 4. 访问 http://localhost:${PORT:-3000}项目支持通过 GitHub Actions 自动构建并部署到云服务器。
1. 配置 GitHub Secrets
在仓库 Settings → Secrets and variables → Actions 中添加:
| Secret | 说明 |
|---|---|
SERVER_HOST |
服务器 IP 或域名 |
SERVER_USER |
SSH 用户名 |
SSH_PRIVATE_KEY |
SSH 私钥内容 |
SERVER_PORT |
SSH 端口 (可选,默认 22) |
DEPLOY_DIR |
部署目录 (可选,默认 /opt/autorouter) |
GHCR_TOKEN |
GitHub PAT (私有仓库需要) |
2. 服务器初始化
# 创建部署目录
mkdir -p /opt/autorouter && cd /opt/autorouter
# 下载 docker-compose.yml
curl -O https://raw.githubusercontent.com/g1331/AutoRouter/master/docker-compose.yml
# 创建 .env 文件 (参考 .env.example)
nano .env
# 首次启动
docker compose up -d3. 触发部署
# 打 tag 触发自动部署
git tag v1.0.0
git push origin v1.0.0或在 GitHub Actions 页面手动触发 "Build and Deploy" workflow。
# 1. 克隆项目
git clone https://github.com/g1331/AutoRouter.git
cd AutoRouter
# 2. 复制环境变量
cp .env.example .env.local
# 3. 生成加密密钥 (填入 .env.local)
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
# 4. 安装依赖
pnpm install
# 5. 数据库迁移
pnpm db:push
# 6. 启动开发服务器
pnpm dev启动后访问 http://localhost:3000,使用 ADMIN_TOKEN 登录。
| 变量 | 必填 | 说明 |
|---|---|---|
DATABASE_URL |
✓ | PostgreSQL 连接串(DB_TYPE=postgres 时使用) |
DB_TYPE |
数据库类型,postgres(默认)或 sqlite |
|
SQLITE_DB_PATH |
SQLite 文件路径(DB_TYPE=sqlite 时使用) |
|
ENCRYPTION_KEY |
✓* | Fernet 加密密钥(与 ENCRYPTION_KEY_FILE 二选一) |
ENCRYPTION_KEY_FILE |
✓* | 从文件读取加密密钥(与 ENCRYPTION_KEY 二选一) |
ADMIN_TOKEN |
✓ | 管理后台登录令牌 |
ALLOW_KEY_REVEAL |
是否允许展示完整 API Key,默认 false |
|
LOG_RETENTION_DAYS |
日志保留天数,默认 90 |
|
LOG_LEVEL |
日志级别:fatal / error / warn / info / debug / trace |
|
DEBUG_LOG_HEADERS |
是否输出请求头调试日志,默认 false |
|
HEALTH_CHECK_INTERVAL |
上游健康检查间隔(秒),默认 30 |
|
HEALTH_CHECK_TIMEOUT |
上游健康检查超时(秒),默认 10 |
|
CORS_ORIGINS |
CORS 白名单,逗号分隔 | |
PORT |
服务端口,默认 3000 |
|
RECORDER_ENABLED |
开启流量录制(仅开发环境建议使用) | |
RECORDER_MODE |
录制模式:all / success / failure |
|
RECORDER_FIXTURES_DIR |
录制文件目录,默认 tests/fixtures |
|
RECORDER_REDACT_SENSITIVE |
是否脱敏录制内容,默认 true |
AutoRouter/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── [locale]/ # 国际化页面路由
│ │ └── api/ # API Routes
│ │ ├── admin/ # 管理 API
│ │ ├── mock/ # 录制回放 Mock API(开发环境)
│ │ ├── proxy/ # 代理 API
│ │ └── health/ # 健康检查
│ ├── components/ # React 组件
│ ├── hooks/ # 自定义 Hooks
│ ├── lib/
│ │ ├── db/ # Drizzle ORM 配置
│ │ ├── services/ # 业务逻辑服务
│ │ └── utils/ # 工具函数
│ ├── messages/ # 翻译文件
│ └── i18n/ # 国际化配置
├── tests/ # 测试用例
├── drizzle/ # 数据库迁移
├── docs/ # 文档资源
└── openspec/ # 设计规范
代码检查
pnpm lint # ESLint
pnpm format # Prettier
pnpm exec tsc --noEmit # Type check运行测试
pnpm test # Watch 模式
pnpm test:run # 单次运行
pnpm test:run --coverage # 覆盖率报告
pnpm e2e # Playwright E2E
pnpm e2e:headed # 有界面模式运行 E2E数据库操作
pnpm db:generate # 生成迁移文件
pnpm db:migrate # 执行迁移
pnpm db:push # 推送 Schema 到数据库
pnpm db:seed # 写入轻量示例数据
pnpm db:studio # 打开 Drizzle StudioAGPL-3.0 © 2025 AutoRouter Contributors
如果这个项目对你有帮助,请考虑给一个 Star ⭐








