docs: 移除代码文件,初始化文档专用分支

This commit is contained in:
foxhui
2025-12-20 20:02:24 +08:00
Unverified
parent e8123cca5d
commit 28cac21641
123 changed files with 28258 additions and 18637 deletions
+111
View File
@@ -0,0 +1,111 @@
# Linux 部署
在 Linux 服务器上运行 WebAI2API 的特殊配置说明。
## 显示方式选择
在 Linux 服务器上运行非无头模式时,需要配置显示环境。
### 方式一:Xvfb + VNC (推荐)
使用虚拟显示器运行程序,通过 VNC 远程查看。
#### 使用内置命令
```bash
npm start -- -xvfb -vnc
```
这会自动:
- 启动 Xvfb 虚拟显示器
- 启动 x11vnc 服务器
- 可通过 WebUI 直接查看 VNC 画面
#### 手动配置
如果内置命令无法满足需求:
1. **启动虚拟显示器**
```bash
xvfb-run --server-num=99 --server-args="-ac -screen 0 1920x1080x24" npm start
```
2. **映射到 VNC**
```bash
x11vnc -display :99 -localhost -nopw -forever -noxdamage
```
## VNC 连接
### 通过 SSH 隧道 (推荐)
```bash
# 本地终端
ssh -L 5900:127.0.0.1:5900 root@服务器IP
```
然后使用 VNC 客户端连接 `127.0.0.1:5900`
### 通过 WebUI
服务启动后,访问 WebUI 的「VNC 显示」页面即可直接查看。
### 安装依赖
### Ubuntu/Debian
```bash
sudo apt-get update
sudo apt-get install xvfb x11vnc
```
### CentOS/RHEL
```bash
sudo yum install xorg-x11-server-Xvfb x11vnc
```
### Arch Linux
```bash
sudo pacman -S xorg-server-xvfb x11vnc
```
### 方式二:X11 转发
适用于通过 SSH 连接服务器的场景。
1. 在本地安装 X Server(如 VcXsrv、Xming
2. 使用支持 X11 转发的终端(如 WindTerm
3. 在 SSH 会话中启用 X11 转发
```bash
ssh -X user@server
```
## Docker 部署
Docker 镜像已内置 Xvfb 和 VNC 支持:
```bash
docker run -d --name webai2api \
-p 3000:3000 -p 5900:5900 \
-v "$(pwd)/data:/app/data" \
-e LOGIN_MODE=true \
--shm-size=2gb \
foxhui/lmarena-imagen-automator:latest
```
通过 VNC 客户端连接 `localhost:5900` 完成登录。
## 常见问题
### 端口被占用
如果 5900 端口已被占用,VNC 服务器会自动查找 5901-5999 范围内可用的端口。
### 显示号冲突
Xvfb 会自动从 50 开始查找可用的显示号,避免与现有 X 服务器冲突。
+134
View File
@@ -0,0 +1,134 @@
# 故障排查
常见问题的诊断和解决方法。
## 请求相关
### 请求被拒绝 (429 Too Many Requests)
**问题**:并发请求过多,队列已满。
**解决方案**
- 启用流式模式 (`stream: true`),可无限排队
- 减少并发请求数量
- 增加 `queue.queueBuffer` 配置值
### 请求超时
**问题**:任务超过 120 秒未完成。
**解决方案**
- 启用流式模式,利用心跳保活
- 检查网络连接是否稳定
- 某些复杂提示词可能需要更长时间
## 验证相关
### reCAPTCHA 验证失败
**问题**:返回 `recaptcha validation failed`
**解决方案**
- 降低请求频率
- 进入登录模式手动完成验证
- 使用稳定纯净的 IP 地址
- 检查 IP 纯净度:[ping0.cc](https://ping0.cc)
### CloudFlare 挑战
**问题**:浏览器卡在 CloudFlare 验证页面。
**解决方案**
- 进入 VNC 手动完成验证
- 更换 IP 地址
- 避免使用数据中心 IP
## 登录相关
### 登录状态丢失
**问题**:服务重启后需要重新登录。
**解决方案**
- 确保 `data` 目录持久化
- 检查 `userDataMark` 配置是否正确
- 避免删除浏览器数据目录
### OAuth 登录失败
**问题**Google 等 OAuth 登录跳转失败。
**解决方案**
- 确保可以访问 accounts.google.com
- 检查代理配置是否正确
- 尝试更换 IP 地址
## 浏览器相关
### 浏览器启动失败
**问题**Camoufox 无法启动。
**解决方案**
```bash
# 重新初始化 Camoufox
npm run init
```
### 内存不足
**问题**:浏览器因内存不足崩溃。
**解决方案**
- 增加服务器内存(建议 2GB+
- 减少同时运行的浏览器实例数量
- Docker 环境确保设置 `--shm-size=2gb`
## 网络相关
### 代理连接失败
**问题**:无法连接到代理服务器。
**解决方案**
- 检查代理服务器地址和端口
- 验证代理认证信息
- 测试代理服务器是否正常
### 目标网站不可访问
**问题**:无法访问 LMArena/Gemini 等网站。
**解决方案**
- 检查网络连接
- 尝试使用代理
- 确认目标网站未被封禁
## 日志诊断
### 查看详细日志
`config.yaml` 中设置日志等级:
```yaml
logLevel: debug
```
### 常见日志信息
| 日志内容 | 说明 |
| --- | --- |
| `工作池初始化失败` | 检查配置文件和网络 |
| `Worker 不支持模型` | 检查模型名称是否正确 |
| `验证超时` | 需要手动完成验证 |
| `页面已关闭` | 浏览器可能崩溃 |
## 获取帮助
如果以上方法无法解决问题:
1. 查看 [GitHub Issues](https://github.com/foxhui/WebAI2API/issues)
2. 提交 Issue 并附上:
- 日志输出(设置 `logLevel: debug`
- 配置文件(隐藏敏感信息)
- 操作系统和 Node.js 版本
+82
View File
@@ -0,0 +1,82 @@
# Web 管理界面
WebAI2API 提供了内置的 Web 管理界面,用于监控和管理服务。
::: warning 注意
WebUI 以及管理接口仅在握手阶段使用 API Token 验证,传输阶段无任何加密,如果您在公网环境使用,请使用 Caddy 或 Nginx 等专业的网站服务器对连接进行 HTTPS 加密!
:::
## 访问地址
```
http://localhost:3000
```
首次访问需要输入配置文件中设置的 API Token 进行认证。
## 功能模块
### 仪表盘
仪表盘页面显示系统运行状态:
- **系统状态**:版本、运行时间、运行模式
- **业务统计**:窗口数量、实例数量
- **队列状态**:处理中/等待中的任务列表
### 系统管理
系统管理页面提供:
- **服务控制**
- 普通重启
- 登录模式重启
- 指定 Worker 登录
- 停止服务
- **缓存管理**
- 查看临时文件
- 清理缓存
- **数据管理**
- 查看浏览器数据目录
- 删除未使用的数据目录
### VNC 显示
在 Linux 环境下使用 `-xvfb -vnc` 启动时,可以通过 WebUI 直接查看和操作虚拟显示器:
- 连接/断开 VNC
- 全屏显示
- 查看 VNC 状态信息
::: tip 说明
VNC 显示功能需要服务以 Xvfb + VNC 模式运行。
:::
### 配置管理
- **服务器配置**:端口、认证、心跳设置
- **适配器配置**:各后端的专属配置
- **浏览器设置**:路径、无头模式、代理
### 实例管理
管理浏览器实例和 Worker 配置(需要重启生效)。
## 快捷操作
### 登录模式重启
1. 进入「缓存与重启」页面
2. 点击「重启」按钮旁的下拉箭头
3. 选择重启模式:
- **普通重启**:正常模式重启
- **登录模式重启**:以 `-login` 参数重启
- **指定 Worker 登录**:选择特定 Worker 进入登录模式
### 清理缓存
1. 进入「缓存与重启」页面
2. 找到「缓存管理」区域
3. 点击「清理缓存」按钮
+171
View File
@@ -0,0 +1,171 @@
# Chat Completions
对话生成接口,兼容 OpenAI Chat Completions API。
## 端点
```
POST /v1/chat/completions
```
## 请求参数
| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `model` | string | ✅ | 模型名称 |
| `messages` | array | ✅ | 消息列表 |
| `stream` | boolean | ❌ | 是否启用流式响应(推荐开启) |
### messages 格式
```json
{
"messages": [
{
"role": "user",
"content": "生成一只可爱的猫"
}
]
}
```
### 多模态请求(图生图)
```json
{
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "让这张图片更加鲜艳"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQ..."
}
}
]
}
]
}
```
## 图片限制
| 限制项 | 说明 |
| --- | --- |
| 支持格式 | PNG, JPEG, GIF, WebP |
| 数量限制 | 默认 5 张,最大 10 张 |
| 数据格式 | Base64 Data URL (`data:image/jpeg;base64,...`) |
| 自动转换 | 服务器会自动转换为 JPG 格式 |
## 非流式响应
### 请求示例
```bash
curl -X POST http://localhost:3000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-key" \
-d '{
"model": "gemini-3-pro-image-preview",
"messages": [
{
"role": "user",
"content": "generate a cat"
}
]
}'
```
### 响应示例
```json
{
"id": "chatcmpl-1732374740123",
"object": "chat.completion",
"created": 1732374740,
"model": "gemini-3-pro-image-preview",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "![generated](data:image/jpeg;base64,/9j/4AAQ...)"
},
"finish_reason": "stop"
}
]
}
```
## 流式响应
::: tip 推荐使用
流式模式包含心跳保活机制,可以避免长时间生成导致的连接超时。
:::
### 请求示例
```bash
curl -X POST http://localhost:3000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-key" \
-d '{
"model": "gemini-3-pro-image-preview",
"stream": true,
"messages": [
{
"role": "user",
"content": "generate a cat"
}
]
}'
```
### 响应示例
```
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1732374740,"model":"gemini-3-pro-image-preview","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}
: keep-alive
: keep-alive
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1732374740,"model":"gemini-3-pro-image-preview","choices":[{"index":0,"delta":{"content":"![generated](data:image/jpeg;base64,/9j/4AAQ...)"},"finish_reason":"stop"}]}
data: [DONE]
```
## 错误处理
### 队列已满 (429)
```json
{
"error": {
"message": "队列已满",
"type": "rate_limit_exceeded",
"code": "QUEUE_FULL"
}
}
```
::: tip 解决方案
启用流式模式 (`stream: true`) 可以无限排队,避免 429 错误。
:::
### 模型不支持 (400)
```json
{
"error": {
"message": "没有 Worker 支持模型: invalid-model",
"type": "invalid_request_error",
"code": "MODEL_NOT_FOUND"
}
}
```
+70
View File
@@ -0,0 +1,70 @@
# Cookies API
获取浏览器实例的 Cookie,可用于其他工具。
## 端点
```
GET /v1/cookies
```
## 查询参数
| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `name` | string | ❌ | 浏览器实例名称 |
| `domain` | string | ❌ | 过滤指定域名的 Cookie |
## 请求示例
### 获取所有 Cookie
```bash
curl -X GET http://localhost:3000/v1/cookies \
-H "Authorization: Bearer sk-your-key"
```
### 指定实例和域名
```bash
curl -X GET "http://localhost:3000/v1/cookies?name=browser_default&domain=lmarena.ai" \
-H "Authorization: Bearer sk-your-key"
```
## 响应格式
```json
{
"instance": "browser_default",
"cookies": [
{
"name": "_GRECAPTCHA",
"value": "09ADxxxxxx",
"domain": "www.google.com",
"path": "/recaptcha",
"expires": 1780000000,
"httpOnly": true,
"secure": true,
"sameSite": "None"
},
{
"name": "OTZ",
"value": "8888888_24_24__24_",
"domain": "accounts.google.com",
"path": "/",
"expires": 1760000000,
"httpOnly": false,
"secure": true,
"sameSite": "None"
}
]
}
```
## 使用场景
::: tip 应用场景
- 将 Cookie 导出给其他自动化工具使用
- 利用本项目的自动续登功能保持 Cookie 新鲜
- 调试登录状态问题
:::
+78
View File
@@ -0,0 +1,78 @@
# Models API
获取当前可用的模型列表。
## 端点
```
GET /v1/models
```
## 请求示例
```bash
curl -X GET http://localhost:3000/v1/models \
-H "Authorization: Bearer sk-your-key"
```
## 响应格式
```json
{
"object": "list",
"data": [
{
"id": "gemini-3-pro-image-preview",
"object": "model",
"created": 1732456789,
"owned_by": "internal_server"
},
{
"id": "lmarena/gemini-3-pro-image-preview",
"object": "model",
"created": 1732456789,
"owned_by": "lmarena"
},
{
"id": "seedream-4-high-res-fal",
"object": "model",
"created": 1732456789,
"owned_by": "internal_server"
}
]
}
```
## 模型命名规则
### 简写形式
直接使用模型 ID
```
gemini-3-pro-image-preview
```
系统会自动匹配到支持该模型的 Worker。
### 指定后端形式
使用 `backend/model` 格式:
```
lmarena/gemini-3-pro-image-preview
gemini_biz/gemini-3-pro-image-preview
```
强制使用指定后端处理请求。
## 模型类型
| 类型 | 说明 |
| --- | --- |
| `image` | 图片生成模型 |
| `text` | 文本生成模型 |
::: info 说明
返回的模型列表取决于当前配置的 Worker 和适配器类型。
:::
+86
View File
@@ -0,0 +1,86 @@
# API 概览
WebAI2API 提供兼容 OpenAI 格式的 RESTful API。
## 基础信息
- **Base URL**: `http://localhost:3000`
- **认证方式**: Bearer Token
### 请求头
```http
Authorization: Bearer sk-your-secret-key
Content-Type: application/json
```
## API 端点列表
### OpenAI 兼容接口
| 方法 | 端点 | 说明 |
| --- | --- | --- |
| POST | `/v1/chat/completions` | 对话生成 |
| GET | `/v1/models` | 获取模型列表 |
| GET | `/v1/cookies` | 获取 Cookie |
### 管理接口
| 方法 | 端点 | 说明 |
| --- | --- | --- |
| GET | `/admin/status` | 服务状态 |
| GET | `/admin/stats` | 统计信息 |
| GET | `/admin/queue` | 队列状态 |
| POST | `/admin/restart` | 重启服务 |
| POST | `/admin/stop` | 停止服务 |
| GET | `/admin/vnc/status` | VNC 状态 |
| POST | `/admin/cache/clear` | 清理缓存 |
## 错误响应
所有 API 错误返回统一格式:
```json
{
"error": {
"message": "错误描述",
"type": "error_type",
"code": "ERROR_CODE"
}
}
```
### 常见错误码
| HTTP 状态码 | 错误类型 | 说明 |
| --- | --- | --- |
| 401 | `unauthorized` | 认证失败 |
| 400 | `invalid_request` | 请求参数错误 |
| 404 | `not_found` | 资源不存在 |
| 429 | `rate_limit` | 请求过多 |
| 500 | `internal_error` | 服务器内部错误 |
| 503 | `service_unavailable` | 服务不可用 |
## 流式响应
对于 `stream: true` 的请求,响应使用 Server-Sent Events (SSE) 格式:
```
data: {"id":"...","object":"chat.completion.chunk",...}
: keep-alive
data: {"id":"...","object":"chat.completion.chunk",...}
data: [DONE]
```
::: tip 心跳保活
流式请求会自动发送心跳包防止连接超时,格式取决于配置的 `keepalive.mode`
:::
## 相关文档
- [Chat Completions](/api/chat) - 对话生成接口详解
- [Models](/api/models) - 模型列表接口
- [Cookies](/api/cookies) - Cookie 获取接口
+146
View File
@@ -0,0 +1,146 @@
# 实例配置
实例 (Instance) 和工作者 (Worker) 是 WebAI2API 的核心配置概念。
## 概念说明
### Instance (浏览器实例)
一个 Instance 代表一个独立的浏览器进程,具有:
- 独立的用户数据目录
- 独立的 Cookie 和登录状态
- 可选的专属代理配置
### Worker (工作者)
Worker 是 Instance 内的一个标签页,负责与特定平台交互。同一 Instance 下的多个 Worker
- 共享浏览器数据和登录状态
- 共享代理配置
- 可以是不同的适配器类型
## 配置结构
```yaml
backend:
pool:
instances:
- name: "browser_default" # 实例 ID
userDataMark: "01" # 数据目录标识 (可选)
proxy: # 实例级代理 (可选)
enable: true
type: socks5
host: 127.0.0.1
port: 1080
workers: # Worker 列表
- name: "worker1"
type: lmarena
- name: "worker2"
type: zai_is
```
## Instance 配置项
| 配置项 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `name` | string | ✅ | 实例唯一标识,用于日志和 Cookie 获取 |
| `userDataMark` | string | ❌ | 数据目录标识,留空使用默认目录 |
| `proxy` | object | ❌ | 实例级代理配置,参见[代理设置](/config/proxy) |
| `workers` | array | ✅ | Worker 配置列表 |
### 数据目录
- 默认位置: `data/camoufoxUserData`
- 设置 `userDataMark` 后: `data/camoufoxUserData_{mark}`
## Worker 配置项
| 配置项 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `name` | string | ✅ | Worker 唯一标识(全局唯一) |
| `type` | string | ✅ | 适配器类型 |
| `mergeTypes` | array | ❌ | 聚合模式的适配器列表 (type=merge 时必填) |
| `mergeMonitor` | string | ❌ | 空闲时监控的后端 (可选) |
### 适配器类型
| 类型 | 说明 |
| --- | --- |
| `lmarena` | LMArena 图片生成 |
| `lmarena_text` | LMArena 文本生成 |
| `gemini_biz` | Gemini Business 图片生成 |
| `gemini_biz_text` | Gemini Business 文本生成 |
| `gemini` | Google Gemini |
| `zai_is` | zAI 图片生成 |
| `nanobananafree_ai` | Nano Banana Free |
| `merge` | 聚合模式(单标签多后端) |
## 聚合模式 (Merge)
聚合模式允许在单个标签页中支持多个后端,实现故障转移:
```yaml
workers:
- name: "merged_worker"
type: merge
mergeTypes: [gemini_biz, lmarena, zai_is]
mergeMonitor: gemini_biz # 空闲时挂机监控的后端
```
::: tip 聚合模式优势
- 节省浏览器资源
- 自动故障转移
- 统一登录状态
:::
## 配置示例
### 单实例单 Worker
```yaml
instances:
- name: "default"
workers:
- name: "worker1"
type: lmarena
```
### 多实例隔离
```yaml
instances:
# 实例 1: 美国代理
- name: "browser_us"
userDataMark: "us"
proxy:
enable: true
type: socks5
host: us-proxy.example.com
port: 1080
workers:
- name: "us_worker"
type: lmarena
# 实例 2: 日本代理
- name: "browser_jp"
userDataMark: "jp"
proxy:
enable: true
type: socks5
host: jp-proxy.example.com
port: 1080
workers:
- name: "jp_worker"
type: lmarena
```
### 聚合模式
```yaml
instances:
- name: "browser_merged"
workers:
- name: "all_in_one"
type: merge
mergeTypes: [gemini_biz, lmarena, zai_is]
mergeMonitor: gemini_biz
```
+90
View File
@@ -0,0 +1,90 @@
# 配置文件概览、
WebAI2API 使用 YAML 格式的配置文件 `config.yaml` 进行配置。
::: warning 注意
项目的配置问价已可以完全使用 WebUI 进行配置,若您不了解 YAML 文件,请直接略过该板块访问 WebUI 修改配置!
:::
## 配置文件结构
```yaml
# 日志等级
logLevel: info
# 服务器配置
server:
port: 3000
auth: sk-your-key
keepalive:
mode: "comment"
# 后端配置
backend:
pool:
strategy: least_busy
failover:
enabled: true
maxRetries: 2
instances:
- name: "browser_default"
workers:
- name: "default"
type: lmarena
adapter:
gemini_biz:
entryUrl: ""
# 队列配置
queue:
queueBuffer: 2
imageLimit: 5
# 浏览器配置
browser:
path: ""
headless: false
proxy:
enable: false
```
## 配置项说明
### 日志配置
| 配置项 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| `logLevel` | string | `info` | 日志等级:`debug``info``warn``error` |
### 服务器配置 (server)
| 配置项 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| `port` | number | `3000` | HTTP 服务监听端口 |
| `auth` | string | - | API 鉴权 Token (Bearer Token) |
| `keepalive.mode` | string | `comment` | 心跳模式:`comment``content` |
::: tip 心跳模式说明
- **comment**: 发送 `:keepalive` 注释,不污染数据(推荐)
- **content**: 发送空 delta,用于必须收到 JSON 才重置超时的客户端
:::
### 队列配置 (queue)
| 配置项 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| `queueBuffer` | number | `2` | 非流式请求的额外排队数,0 表示不限制 |
| `imageLimit` | number | `5` | 单次请求最大图片数量 (最大 10) |
### 浏览器配置 (browser)
| 配置项 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| `path` | string | `""` | Camoufox 可执行文件路径,留空使用默认 |
| `headless` | boolean | `false` | 是否启用无头模式 |
| `proxy` | object | - | 全局代理配置 |
## 相关文档
- [实例配置](/config/instances) - 浏览器实例和 Worker 详细配置
- [代理设置](/config/proxy) - 代理配置详解
+85
View File
@@ -0,0 +1,85 @@
# 代理设置
WebAI2API 支持全局代理和实例级代理配置。
## 代理优先级
1. **实例级代理** - 如果 Instance 配置了代理,使用该代理
2. **全局代理** - 如果实例未配置,使用全局代理
3. **直连** - 如果都未配置,直接连接
## 全局代理配置
`browser.proxy` 中配置全局代理:
```yaml
browser:
proxy:
enable: true
type: http # http 或 socks5
host: 127.0.0.1
port: 7890
# 可选认证
user: username
passwd: password
```
## 实例级代理配置
在 Instance 中配置专属代理:
```yaml
backend:
pool:
instances:
- name: "browser_us"
proxy:
enable: true
type: socks5
host: us-proxy.example.com
port: 1080
user: myuser
passwd: mypassword
workers:
- name: "us_worker"
type: lmarena
```
## 配置项说明
| 配置项 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `enable` | boolean | ✅ | 是否启用代理 |
| `type` | string | ✅ | 代理类型:`http``socks5` |
| `host` | string | ✅ | 代理服务器地址 |
| `port` | number | ✅ | 代理服务器端口 |
| `user` | string | ❌ | 代理认证用户名 |
| `passwd` | string | ❌ | 代理认证密码 |
## 强制直连
如果需要某个实例强制直连,即使配置了全局代理:
```yaml
instances:
- name: "browser_direct"
proxy:
enable: false # 显式禁用代理
workers:
- name: "direct_worker"
type: lmarena
```
## 代理选型建议
::: tip 推荐配置
- **类型**: SOCKS5 代理通常比 HTTP 代理更通用
- **稳定性**: 选择稳定可靠的代理服务商
- **IP 纯净度**: 使用 [ping0.cc](https://ping0.cc) 等工具检查 IP 纯净度
:::
::: warning 注意事项
- 代理质量会影响验证码触发频率
- 频繁更换 IP 可能导致账号风控
- 建议使用住宅 IP 或数据中心静态 IP
:::
+106
View File
@@ -0,0 +1,106 @@
# 快速部署
本项目支持 **手动部署(推荐)****Docker 容器化部署** 两种方式。
## 手动部署
### 1. 克隆项目
```bash
git clone https://github.com/foxhui/WebAI2API.git
cd WebAI2API
```
### 2. 复制配置文件
```bash
cp config.example.yaml config.yaml
```
### 3. 安装依赖
```bash
# 安装 Node.js 依赖
pnpm install
# 初始化预编译依赖
npm run init
```
::: warning 注意
`npm run init` 需要从 GitHub 下载文件,请确保网络畅通。
:::
### 4. 编辑配置
编辑 `config.yaml` 文件,设置鉴权密钥等配置:
```yaml
server:
port: 3000
auth: sk-your-secret-key # 修改为你的密钥
```
### 5. 启动服务
```bash
# 标准运行
npm start
# Linux 命令行启动
npm start -- -xvfb -vnc
```
## Docker 部署
::: warning 首次运行说明
首次运行需通过 VNC 客户端连接 `localhost:5900` 完成网页登录验证。
:::
### Docker CLI
```bash
docker run -d --name webai2api \
-p 3000:3000 -p 5900:5900 \
-v "$(pwd)/data:/app/data" \
-v "$(pwd)/config.yaml:/app/config.yaml" \
-e LOGIN_MODE=true \
--shm-size=2gb \
foxhui/lmarena-imagen-automator:latest
```
### Docker Compose
```yaml
version: '3.8'
services:
webai2api:
image: foxhui/lmarena-imagen-automator:latest
ports:
- "3000:3000"
- "5900:5900"
volumes:
- ./data:/app/data
- ./config.yaml:/app/config.yaml
environment:
- LOGIN_MODE=true
shm_size: 2gb
restart: unless-stopped
```
启动服务:
```bash
docker compose up -d
```
## 验证安装
服务启动后,访问以下地址验证:
- **Web 管理界面**: http://localhost:3000
- **API 接口测试**: http://localhost:3000/v1/chat/completions
## 下一步
部署完成后,请阅读 [首次使用](/guide/first-use) 完成登录初始化。
+82
View File
@@ -0,0 +1,82 @@
# 首次使用
首次使用 WebAI2API 时,需要完成登录初始化才能正常使用。
## 登录模式
### 启动登录模式
```bash
# 启动第一个 Worker 进行登录
npm start -- -login
# 启动指定 Worker 进行登录
npm start -- -login=workerName
```
### Linux 用户特殊说明
Linux 服务器用户可以使用 Xvfb + VNC 方式:
```bash
npm start -- -xvfb -vnc
```
然后通过 VNC 客户端连接 `:5900` 端口进行操作(也可使用 WebUI 中的虚拟显示器板块)
## 初始化步骤
1. **登录账号**
- 在打开的浏览器中登录相应平台的账号
- 例如:Google 账号用于 GeminiGitHub 账号用于 LMArena
2. **完成验证**
- 在输入框发送任意消息
- 触发并完成 CloudFlare/reCAPTCHA 验证
- 同意服务条款
3. **验证成功**
- 确认可以正常发送消息和接收回复
- 关闭浏览器或按 `Ctrl+C` 退出登录模式
## 切换到标准模式
初始化完成后,使用标准命令启动服务:
```bash
npm start
```
::: tip 运行建议
为降低风控风险,**强烈建议长期保持非无头模式运行**。
:::
## 多 Worker 登录
如果配置了多个 Worker,需要分别为每个 Worker 完成登录:
```bash
# 依次登录各个 Worker
npm start -- -login=worker1
npm start -- -login=worker2
```
::: info 共享登录状态
同一 Instance(浏览器实例)下的多个 Worker 共享登录状态。如果使用 Google OAuth 等统一登录方式,只需登录一次即可。
:::
## WebUI 登录模式
服务运行后,也可以通过 WebUI 切换到登录模式:
1. 访问 http://localhost:3000
2. 进入「系统管理」页面
3. 点击「重启」按钮的下拉箭头
4. 选择「登录模式重启」或指定 Worker 登录
## 下一步
登录完成后,请阅读以下内容:
- [配置文件](/config/overview) - 了解完整配置选项
- [API 参考](/api/overview) - 开始使用 API
+79
View File
@@ -0,0 +1,79 @@
# 环境要求
在开始部署 WebAI2API 之前,请确保您的环境满足以下要求。
## 系统要求
### 操作系统
- **Windows**: Windows 10/11 或 Windows Server 2016+
- **Linux**: Ubuntu 18.04+, Debian 10+, CentOS 7+ 或其他主流发行版
- **macOS**: macOS 10.15 (Catalina) 或更高版本
### 硬件配置
| 资源 | 最低配置 | 推荐配置(单实例) | 推荐配置(多实例) |
| :--- | :--- | :--- | :--- |
| **CPU** | 1 核 | 2 核及以上 | 2 核及以上 |
| **内存** | 1 GB | 2 GB 及以上 | 4 GB 及以上 |
| **磁盘** | 2 GB 可用空间 | 5 GB 及以上 | 7 GB 及以上 |
::: tip 实测环境表现
- **Oracle 免费机** (1C1G, Debian 12):资源紧张,比较卡顿,仅供尝鲜或轻度使用
- **阿里云轻量云** (2C2G, Debian 11):运行流畅,项目开发测试所用机型
:::
## 软件依赖
### Node.js
- **版本要求**: v20.0.0 或更高版本 (ABI 115+)
- **包管理器**: pnpm (推荐) 或 npm
```bash
# 检查 Node.js 版本
node --version
# 安装 pnpm (如未安装)
npm install -g pnpm
```
### Camoufox
Camoufox 是本项目的核心依赖,会在安装过程中自动下载。
::: warning 网络要求
安装过程需要从 GitHub 下载 Camoufox 等预编译依赖,请确保网络能够正常访问 GitHub。
:::
## Docker 环境 (可选)
如果选择 Docker 部署方式,需要安装:
- **Docker**: 20.10.0 或更高版本
- **Docker Compose**: 2.0.0 或更高版本 (可选)
```bash
# 检查 Docker 版本
docker --version
docker compose version
```
## Linux 特殊依赖
在 Linux 环境下运行非无头模式时,可能需要额外安装:
```bash
# Ubuntu/Debian
sudo apt-get install xvfb x11vnc
# CentOS/RHEL
sudo yum install xorg-x11-server-Xvfb x11vnc
# Arch Linux
sudo pacman -S xorg-server-xvfb x11vnc
```
## 下一步
环境准备就绪后,请继续阅读 [快速部署](/guide/deployment) 开始安装。
+31
View File
@@ -0,0 +1,31 @@
---
layout: home
hero:
name: "WebAI2API"
text: "网页版 AI 服务转 OpenAI 兼容 API"
tagline: 基于 Camoufox (Playwright),模拟人类操作与 LMArena、Gemini 等网站交互
actions:
- theme: brand
text: 快速开始
link: /guide/deployment
- theme: alt
text: GitHub
link: https://github.com/foxhui/WebAI2API
image:
src: /favicon.png
features:
- icon: 🤖
title: 拟人交互
details: 模拟人类打字与鼠标轨迹,通过特征伪装规避自动化检测
- icon: 🔄
title: 接口兼容
details: 提供标准 OpenAI 格式接口,支持流式响应与心跳保活
- icon: 🚀
title: 并发隔离
details: 支持多窗口并发执行,实现多账号浏览器实例级数据隔离
- icon: 🛡️
title: 稳定防护
details: 内置任务队列、负载均衡、故障转移、错误重试
---
Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB