269 lines
11 KiB
Markdown
269 lines
11 KiB
Markdown
# RegPlatform - 多平台账号批量注册系统
|
||
|
||
可运营的多平台账号批量注册平台,支持 OpenAI / Grok / Kiro / Gemini 等平台的全自动注册、OAuth Token 获取、积分系统与多用户管理。
|
||
|
||
|
||
> 部署比较复杂,不可直接食用,需要进行配置你们自己的仓库以及 hf账号密钥,以及git仓库密钥,以及 cf 的密钥~ 在就是其他的参数配置~ 建议喂给 ai 进行适配~
|
||
> 小白不建议玩耍哦~
|
||
|
||
|
||
## 技术栈
|
||
|
||
| 层级 | 技术 |
|
||
|------|------|
|
||
| **后端** | Go 1.25 / Gin / GORM / PostgreSQL |
|
||
| **前端** | Vue 3 / Vite / Pinia / TailwindCSS |
|
||
| **CI/CD** | GitHub Actions → GHCR Docker 镜像 + GitHub Release |
|
||
| **部署** | Docker Compose(主服务器)+ HuggingFace Space(Worker 节点) |
|
||
| **负载均衡** | Cloudflare Worker(路径前缀路由 + 保活) |
|
||
|
||
## 架构概览
|
||
|
||
```
|
||
用户浏览器 ──→ Nginx (443) ──→ Vue SPA
|
||
│
|
||
└──→ Go 后端 (:8000)
|
||
│
|
||
├── TaskEngine(任务调度,弹性 Worker 池)
|
||
│ │
|
||
│ └── POST → CF Worker
|
||
│ │ 路径前缀路由
|
||
│ ├── /openai/* → HFNP 节点池
|
||
│ ├── /grok/* → HFGS 节点池
|
||
│ ├── /kiro/* → HFKR 节点池
|
||
│ └── /ts/* → HFTS 节点池
|
||
│
|
||
├── HFSpaceService(弹性管理:健康检查、扩缩容、CF 同步)
|
||
├── WebSocket(实时日志推送)
|
||
└── PostgreSQL(用户/任务/结果/积分/Space 状态)
|
||
```
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
regplatform/
|
||
├── cmd/
|
||
│ ├── server/ # 主服务入口
|
||
│ ├── openai-worker/ # OpenAI Worker 二进制(部署到 HFNP)
|
||
│ ├── grok-worker/ # Grok Worker 二进制(部署到 HFGS)
|
||
│ └── grpctest/ # gRPC-web 调试工具
|
||
├── internal/
|
||
│ ├── config/ # 配置加载(Viper)
|
||
│ ├── model/ # GORM 数据模型
|
||
│ ├── service/ # 业务逻辑(TaskEngine、HFSpaceService 等)
|
||
│ ├── worker/ # 平台 Worker 实现(OpenAI/Grok/Kiro)
|
||
│ ├── handler/ # HTTP 路由处理器
|
||
│ ├── middleware/ # JWT 鉴权、CORS、限流
|
||
│ ├── dto/ # 请求/响应数据结构
|
||
│ └── pkg/ # 内部工具库
|
||
├── web/ # Vue 3 前端
|
||
├── services/
|
||
│ ├── aws-builder-id-reg/ # Kiro 注册微服务(→ HFKR)
|
||
│ └── turnstile-solver/ # Turnstile 求解微服务(→ HFTS)
|
||
├── cloudflare/ # CF Worker 源码
|
||
├── HFNP/ # OpenAI HF Space 模板
|
||
├── HFGS/ # Grok HF Space 模板
|
||
├── HFKR/ # Kiro HF Space 模板
|
||
├── HFTS/ # Turnstile HF Space 模板
|
||
├── macmini/ # Mac Mini 本地部署配置
|
||
├── scripts/ # 部署脚本(HF Space 批量部署/弹性管理)
|
||
├── Dockerfile # 主服务容器构建
|
||
├── docker-compose.yml # 本地开发编排
|
||
└── docker-compose.prod.yml # 生产部署编排
|
||
```
|
||
|
||
## 支持平台
|
||
|
||
| 平台 | 注册方式 | HF Space | Release Tag |
|
||
|------|---------|----------|-------------|
|
||
| **OpenAI** | Go HTTP(Sentinel PoW + PKCE OAuth + Auth0) | HFNP | `inference-runtime-latest` |
|
||
| **Grok** | Go HTTP(gRPC-web + Turnstile + Server Actions) | HFGS | `stream-worker-latest` |
|
||
| **Kiro** | Python(AWS Cognito + Camoufox 浏览器自动化) | HFKR | `browser-agent-latest` |
|
||
| **Gemini** | Python(Camoufox 浏览器自动化) | HFGM | `gemini-agent-latest` |
|
||
| **Turnstile** | Python(Camoufox + Patchright 求解) | HFTS | `net-toolkit-latest` |
|
||
|
||
## 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- Go 1.25+
|
||
- Node.js 18+
|
||
- PostgreSQL 16+
|
||
- Docker & Docker Compose(生产部署)
|
||
|
||
### 本地开发
|
||
|
||
```bash
|
||
# 1. 克隆项目
|
||
git clone https://github.com/your-username/regplatform.git
|
||
cd regplatform
|
||
|
||
# 2. 配置环境变量
|
||
cp .env.example .env
|
||
# 编辑 .env,配置数据库连接等
|
||
|
||
# 3. 启动后端
|
||
go mod tidy
|
||
go run cmd/server/main.go
|
||
|
||
# 4. 启动前端(另一个终端)
|
||
cd web && npm install && npm run dev
|
||
```
|
||
|
||
### Docker 部署
|
||
|
||
```bash
|
||
# 启动(含 PostgreSQL)
|
||
docker-compose -f docker-compose.prod.yml up -d
|
||
```
|
||
|
||
### 首次使用
|
||
|
||
1. 访问 `http://localhost:8000`,进入登录页面
|
||
2. 点击「注册」,创建第一个账号(**第一个注册的用户自动成为管理员**)
|
||
3. 进入后台管理面板,配置系统设置(邮箱服务、验证码求解等)
|
||
|
||
## 配置参数
|
||
|
||
### 环境变量(.env 文件)
|
||
|
||
| 变量 | 必填 | 默认值 | 说明 |
|
||
|------|------|--------|------|
|
||
| `DATABASE_URL` | 是 | - | PostgreSQL 连接串 |
|
||
| `JWT_SECRET` | 是(生产) | `change-me-in-production` | JWT 签名密钥(生产环境 ≥32 字符) |
|
||
| `PORT` | 否 | `8000` | 服务监听端口 |
|
||
| `GIN_MODE` | 否 | `release` | Gin 运行模式(`debug`/`release`) |
|
||
| `DEV_MODE` | 否 | `false` | 开发模式(启用 dev-login 端点) |
|
||
| `ADMIN_USERNAME` | 否 | 空 | 指定管理员用户名(该用户注册时自动成为管理员) |
|
||
| `SSO_SECRET` | 否 | 空 | SSO 对接密钥(可选,用于外部系统集成) |
|
||
| `REDIS_URL` | 否 | 空 | Redis 连接串(为空则使用内存缓存) |
|
||
| `JWT_EXPIRE_HOURS` | 否 | `72` | JWT 过期时间(小时) |
|
||
| `CORS_ORIGINS` | 否 | 空 | 允许的跨域来源(逗号分隔,如 `https://a.com,https://b.com`;开发模式下允许所有来源) |
|
||
|
||
### 管理后台系统设置(数据库持久化)
|
||
|
||
以下配置在管理后台「系统设置」中配置:
|
||
|
||
| 配置项 | 说明 |
|
||
|--------|------|
|
||
| `yydsmail_base_url` | YYDS Mail 临时邮箱 API 地址(用于接收注册验证码) |
|
||
| `gptmail_api_key` | GPTMail 邮箱服务 API Key |
|
||
| `gptmail_base_url` | GPTMail 服务地址 |
|
||
| `turnstile_solver_url` | Turnstile 验证码求解服务地址 |
|
||
| `cf_bypass_solver_url` | Cloudflare Bypass 求解服务地址 |
|
||
| `yescaptcha_key` | YesCaptcha API Key |
|
||
| `openai_reg_url` | OpenAI 注册服务 URL |
|
||
| `grok_reg_url` | Grok 注册服务 URL |
|
||
| `kiro_reg_url` | Kiro 注册服务 URL |
|
||
| `default_proxy` | 默认代理地址 |
|
||
| `new_user_bonus` | 新用户注册赠送积分数 |
|
||
| `max_threads_per_user` | 每用户最大并发线程数 |
|
||
| `max_target_per_task` | 每任务最大目标数 |
|
||
|
||
## 认证系统
|
||
|
||
### 注册 / 登录
|
||
|
||
- 用户通过用户名和密码注册、登录
|
||
- **密码要求**:至少 8 个字符,包含大写字母、小写字母和数字
|
||
- **接口限流**:注册 3 次/分钟,登录 10 次/分钟(基于 IP)
|
||
- JWT Token 认证,支持 Cookie / `X-Auth-Token` Header / `Authorization: Bearer` 三种传递方式
|
||
- **管理员规则**:
|
||
- 第一个注册的用户自动成为管理员(`Role=100, IsAdmin=true`)
|
||
- 也可通过环境变量 `ADMIN_USERNAME` 指定管理员用户名
|
||
|
||
### SSO 对接(可选)
|
||
|
||
保留了 SSO 登录接口 `GET /api/auth/sso`,可用于与外部系统(如 New-API)集成。需配置 `SSO_SECRET` 环境变量。
|
||
|
||
## API 端点概览
|
||
|
||
### 公开端点
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| POST | `/api/auth/register` | 用户注册(限流 3/min) |
|
||
| POST | `/api/auth/login` | 用户登录(限流 10/min) |
|
||
| GET | `/api/auth/sso` | SSO 登录(可选) |
|
||
| GET | `/api/auth/dev-login` | 开发模式登录(仅 `DEV_MODE=true` 时可用) |
|
||
|
||
### 用户端点(需登录)
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET | `/api/auth/me` | 当前用户信息 |
|
||
| GET | `/api/init` | 批量初始化加载 |
|
||
| POST | `/api/tasks` | 创建注册任务 |
|
||
| POST | `/api/tasks/:id/start` | 启动任务 |
|
||
| POST | `/api/tasks/:id/stop` | 停止任务 |
|
||
| GET | `/api/tasks/current` | 当前任务 |
|
||
| GET | `/api/results` | 注册结果列表 |
|
||
| GET | `/api/results/:taskId/export` | 导出结果 |
|
||
| GET | `/api/credits/balance` | 积分余额 |
|
||
| POST | `/api/credits/redeem` | 兑换码兑换 |
|
||
| GET/POST/PUT/DELETE | `/api/proxies` | 代理管理 |
|
||
|
||
### 管理端点(需管理员)
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET | `/api/admin/users` | 用户列表 |
|
||
| POST | `/api/admin/credits/recharge` | 充值积分 |
|
||
| GET/POST | `/api/admin/settings` | 系统设置 |
|
||
| GET | `/api/admin/hf/overview` | HF Space 概览 |
|
||
| POST | `/api/admin/hf/spaces/deploy` | 批量部署 Space |
|
||
| POST | `/api/admin/hf/spaces/health` | 健康检查 |
|
||
| POST | `/api/admin/hf/autoscale` | 弹性管理 |
|
||
| POST | `/api/admin/hf/sync-cf` | 同步 CF Worker |
|
||
|
||
### 实时端点
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET | `/ws/logs/:taskId/stream` | SSE 实时日志 |
|
||
| GET | `/ws/logs/:taskId` | WebSocket 日志 |
|
||
|
||
## HF Space 架构
|
||
|
||
Worker 节点部署在 HuggingFace Space 上,通过 Cloudflare Worker 统一路由:
|
||
|
||
```
|
||
Go 后端 → POST → CF Worker
|
||
│ 路径前缀匹配
|
||
├── /openai/* → OPENAI_SPACES(HFNP 节点池)
|
||
├── /grok/* → GROK_SPACES(HFGS 节点池)
|
||
├── /kiro/* → KIRO_SPACES(HFKR 节点池)
|
||
└── /ts/* → TS_SPACES(HFTS 节点池)
|
||
```
|
||
|
||
### HF Space 管理功能
|
||
|
||
后台管理面板提供完整的节点生命周期管理:
|
||
|
||
- **Token 管理**:添加/删除/验证 HF Token
|
||
- **Space 管理**:按服务类型和状态筛选,批量部署/删除
|
||
- **自动发现**:扫描 Token 下的 Space 自动导入
|
||
- **弹性管理**:自动扩缩容,健康检查,清理不可用节点
|
||
- **CF 同步**:自动更新 Cloudflare Worker 环境变量
|
||
|
||
## CI/CD
|
||
|
||
push 到 `main` 分支后 GitHub Actions 自动构建:
|
||
|
||
| Job | 产物 | 分发方式 |
|
||
|-----|------|---------|
|
||
| `build-app` | Docker 镜像 | GHCR |
|
||
| `build-openai-worker` | `inference-runtime.zip` | GitHub Release |
|
||
| `build-grok-worker` | `stream-worker.zip` | GitHub Release |
|
||
| `build-kiro-reg` | `browser-agent.zip` | GitHub Release |
|
||
| `build-gemini-reg` | `gemini-agent.zip` | GitHub Release |
|
||
| `build-ts-solver` | `net-toolkit.zip` | GitHub Release |
|
||
|
||
## 开源协议
|
||
|
||
MIT License
|
||
|
||
## 致谢
|
||
|
||
本项目已在 [LINUX DO](https://linux.do) 社区发布,感谢社区的支持与反馈。
|