Files

358 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 配置说明(可公开)
本文只记录**字段名、含义、默认值/占位符**。不要把真实密码、API Key、License、JWT/AES、代理账号、邮箱明文、`.env` 实际值、数据库或用户数据提交到仓库。
本地复制模板:`cp .env.example .env`,再改密钥。运行时设置保存在加密后的 `user_settings`(SQLite),API 对密钥只回传 `*_configured`,不回显明文。
---
## 1. 环境变量(`.env`)
根目录 `.env.example` 是唯一可提交的模板。`.env` 已被 gitignore。
### 必填 / 核心
| 变量 | 含义 | 示例/默认(非真实值) |
| --- | --- | --- |
| `PORT` | HTTP 端口 | `8585` |
| `JWT_SECRET` | JWT 签名密钥 | `change_me_to_a_long_random_string` |
| `AES_KEY` | AES-256-GCM,64 位 hex(32 字节)。写入数据后不可更换 | 全 `0` 占位;生产用 `crypto.randomBytes(32)` |
| `GPT_PLUS_DB_PATH` | SQLite 路径 | 默认 `server/data/app.db` |
### 可选:库存 / 探测
| 变量 | 含义 | 默认 |
| --- | --- | --- |
| `NVTOKENS_API_KEY` | nvtokens 库存 API Key;也可在设置页保存 | 空 |
| `NVTOKENS_SESSION` | 价格查询 session(Cookie `scm_session`) | 空 |
| `NVTOKENS_BASE_URL` | nvtokens 站点 | `https://nvtokens.com` |
### 可选:流水线 / 轮询 / 日志
| 变量 | 含义 | 默认 |
| --- | --- | --- |
| `DISABLE_POLLERS` | `1`/`true`/`yes` 时不启动流水线、验活、提链轮询 | 关闭 |
| `OP_LOG_LATEST_LIMIT` | 操作日志最近条数上限 | `100`(最大 5000) |
| `OP_LOG_VERBOSE` | 支付/出码更详细日志 | 关闭 |
### 可选:Cloak 浏览器
| 变量 | 含义 | 默认 |
| --- | --- | --- |
| `CLOAK_PROFILE_ROOT` | 浏览器配置目录 | 代码内 runtime 目录 |
| `CLOAK_RESOURCE_CONCURRENCY` | 资源并发覆盖 | 代码默认 |
| `CLOAK_LAUNCH_CONCURRENCY` | 启动并发 | `5` |
| `CLOAK_PROFILE_CLEANUP_CONCURRENCY` | 配置清理并发 | `4`(最大 32) |
### 可选:提链 HTTP / Python
| 变量 | 含义 | 默认 |
| --- | --- | --- |
| `EXTRACT_PYTHON` | Python 解释器路径 | 系统 `python` |
| `EXTRACT_HTTP_ENGINE` | `impit` 时走 impit 引擎 | 空 |
| `EXTRACT_IMPERSONATE` | TLS 指纹浏览器标识 | 代码内置 |
### 可选:MK_GCASH(开源 GCash 模块)
`MK_GCASH=1`(或 `true`/`yes`)启用独立 GCash 模块;未设置则走原有路径。
| 变量 | 含义 | 默认(上限) |
| --- | --- | --- |
| `MK_GCASH` | 开关 | 关闭 |
| `MK_GCASH_PYTHON` | 模块用 Python,回退 `EXTRACT_PYTHON` | 空 |
| `MK_MAX_CONCURRENCY` | 出码并发 | `4`(上限 20) |
| `MK_MAX_SESSION_CONCURRENCY` | 会话并发 | `min(4, 出码并发)`(上限 20) |
| `MK_MAX_ACCOUNTS` | 账号上限 | `50` |
| `MK_MAX_QUEUE` | 队列 | `50`(上限 200) |
| `MK_EXTRACT_BASE` | 本地提取服务基址(辅助脚本) | `http://127.0.0.1:8595` |
| `GCASH_MAX_CONCURRENCY` | 旧路径并发帽 | 代码常量 |
| `GCASH_MAX_ACTIVE_MONITORS` | 支付墙监视上限 | `12`(上限 24) |
| `GCASH_PAY_DEBUG` | 支付调试 | 关闭 |
| `GCASH_EXTRACT_DEBUG` | 出码调试 | 关闭 |
| `GCASH_EXTRACT_DEBUG_TRACE` | 出码 trace 路径 | 空 |
| `GCASH_QR_SAVE_PATH` / `GCASH_QR_DUMP_DIR` | 二维码落盘(调试) | 空 |
| `SENTINEL_NODE` / `SENTINEL_CURL` / `SENTINEL_SDK_PATH` | Sentinel 相关可执行文件/SDK | 空或内置路径 |
### 可选:Mailpit / mail.com
| 变量 | 含义 | 默认 |
| --- | --- | --- |
| `MAILPIT_RECIPIENTS_ENV` | Mailpit 收件人 env 文件 | `/opt/mailpit/recipients.env` |
| `MAILPIT_SKIP_RESTART` | `1` 时不重启 Mailpit(测试用) | 关闭 |
| `MAILCOM_DEBUG` | mail.com 轮询调试 | 关闭 |
| `MAILCOM_IMPERSONATE` | `chrome142` / `chrome136` / `chrome131` | 空 |
| `MAIL_OAUTH_PUBLIC_SECRET` | mail.com OAuth 公钥覆盖 | 内置占位 |
### 可选:PayPal 地址生成
| 变量 | 含义 | 默认 |
| --- | --- | --- |
| `OPENAI_PAY_ADDRESSGEN_API_URL` | 地址生成 API | 公开默认 URL |
| `OPENAI_PAY_ADDRESSGEN_API_TIMEOUT` | 超时(秒) | `5` |
### 仅部署脚本(不要写入应用 `.env` 并提交)
脚本通过环境变量读取,**值留在本机或 CI secret**。
| 变量 | 用途 |
| --- | --- |
| `DEPLOY_SSH_PASSWORD` | SSH 部署密码 |
| `DEPLOY_REMOTE_ROOT` | 远端目录,默认 `/opt/gpt-plus` |
| `DEPLOY_ALLOW_ACTIVE_REGISTRATION` | `1` 时允许部署时远端仍在自动注册 |
| `BACKUP_DB` | 部署前数据库备份路径 |
| `CFWORKER_MAIL_API_URL` / `CFWORKER_MAIL_API_KEY` / `CFWORKER_MAIL_DOMAINS` | 远端写入 CF 邮箱设置 |
| `CLOAK_LICENSE_KEYS` | 远端写入 Cloak 授权(多行) |
| `APPLY_MAIL_MIX` | `1` 时同时写 mail.com/CF 比例 |
| `CLOUDFLARE_ACCOUNT_ID` / `CLOUDFLARE_API_TOKEN` / `ADMIN_TOKEN` | CF Worker 部署 |
| `CF_MAIL_DOMAINS` | Worker 绑定域名列表(逗号分隔) |
前端可选:`VITE_LOG_ROW_LIMIT`(日志行数,构建时注入)。
---
## 2. 用户设置(Settings / `user_settings`)
源:`server/src/utils/settings.js` 的 `DEFAULTS()`。密钥类字段在 `publicView` 中变成 `*_configured`,不回传原文。
### 2.1 CloakBrowser(设置页「Cloak / 验活」)
| 字段 | 含义 | 默认 |
| --- | --- | --- |
| `cloak.license_key` / `license_keys` | 授权,每行一个;加密存储 | 空 |
| `cloak.headless` | 无头 | `true` |
| `cloak.max_concurrency` | 最大并发 | `3` |
| `cloak.humanize` | 拟人鼠标键盘 | `true` |
| `cloak.human_preset` | 拟人预设 | `careful` |
公开视图:`license_configured`、`license_count`,无明文 license。
### 2.2 注册默认(同页)
| 字段 | 含义 | 默认 |
| --- | --- | --- |
| `registration.set_password` | 注册时设独立 ChatGPT 密码 | `true` |
| `registration.enable_totp_2fa` | 启用 TOTP | `true` |
| `registration.asset_optimization` | 资源优化 | `true` |
| `registration.mail_provider` | `mailcom` / `cfworker` / `mix` / `herosms` / `imported` | `herosms` |
| `registration.mailcom_share` / `cfworker_share` | mix 比例份数 0–100 | `5` / `5` |
| `registration.performance_profile` | `safe` 或 `throughput` | `safe` |
| `registration.attempts` | 默认业务尝试次数 1–3 | `3` |
### 2.3 账号验活
| 字段 | 含义 | 默认 |
| --- | --- | --- |
| `accounts.detect_poll_minutes` | 验活间隔分钟,`0`=关 | `15` |
| `accounts.detect_proxy_group` | 已废弃;验活走 CliProxy 动态池 | `""` |
GB 验活用 region-GB,GC 资格检测用 region-PH。动态池未配置则本轮失败,不回退手工代理组。
### 2.4 流水线上限(`pipeline` 数值项)
开关本身在账号页(见第 3 节)。设置页只改上限:
| 字段 | 含义 | 默认 |
| --- | --- | --- |
| `daily_register_limit` | 每天成功入库上限,`0`=不限 | `0` |
| `register_concurrency` | 自动注册并发 1–200 | `5` |
| `extract_attempts` | 每号最多提链次数 1–50 | `5` |
| `extract_interval_minutes` | 同号两次提链最短间隔,`0`=不等 | `10` |
| `pay_attempts` | 支付最多重试 | `5` |
| `rt_attempts` | 拿 RT 最多重试 | `5` |
### 2.5 nvtokens 手工上架
| 字段 | 含义 | 默认 |
| --- | --- | --- |
| `nvtokens.auto_list_plus` | 预留自动上架;当前 UI 为手工推送 | `false` |
| `nvtokens.min_price_yuan` | 无看板价时的最低价兜底(元) | `20.00` |
| `nvtokens.api_key` | 库存 Key | 空 |
| `nvtokens.session_cookie` | `scm_session` | 空 |
公开:`api_key_configured`、`session_configured`、`session_last4`。也可被环境变量覆盖。
### 2.6 import_dump(无试用普号 / 全部账号导出)
| 字段 | 含义 | 默认 |
| --- | --- | --- |
| `import_dump.url` | 远程导入 API 地址 | 空 |
| `import_dump.api_key` | `X-API-Key` | 空 |
公开仅 `configured`(url 与 key 都非空才为 true)。**不要把真实 url/key 写进文档或仓库。** 不会自动导出,需点设置页按钮。
### 2.7 接码 `sms`
| 字段 | 含义 | 默认 |
| --- | --- | --- |
| `provider` / `phone_provider` | 平台标识 | `auto` |
| `api_url` | 接口 | `https://hero-sms.com/stubs/handler_api.php` |
| `api_key` | 密钥 | 空 |
| `country` | 国家码 | `usa` |
| `product` | 业务码 | `openai` |
PayPal 开通任务会固定英国号码与对应服务码,不受此表其它国家影响。
### 2.8 注册供应商
**HeroSMS**(`herosms`)
| 字段 | 默认 |
| --- | --- |
| `api_url` | `https://hero-sms.com` |
| `api_key` | 空 |
| `country` / `service` / `site` / `domain` | `usa` / `openai` / `openai.com` / `outlook.com` |
| `max_reorders` | `4` |
| `acquire_attempts` | `3` |
| `requests_per_second` | `12` |
| `max_request_concurrency` | `16` |
| `max_active_activations` | `20` |
| `ban_cooldown_ms` | `1800000` |
| `rate_cooldown_ms` | `12000` |
| `max_transient_retries` | 公开视图默认 `2` |
| `transient_retry_base_ms` | 公开视图默认 `500` |
**SMSBower**(`smsbower`)
| 字段 | 默认 |
| --- | --- |
| `api_url` | `https://smsbower.app/stubs/handler_api.php` |
| `api_key` | 空 |
| `country` / `service` / `domain` / `max_price` | `gb` / `dr` / `""` / `""` |
**CF Worker 邮箱**(`cfworker_mail`)
| 字段 | 默认 |
| --- | --- |
| `api_url` / `api_key` / `domain` | 空 |
| `disabled_suffixes` / `domains` | `[]` |
公开:`api_key_configured`、`ready`、域名目录与启用数量。
**导入邮箱**(`imported_mail`)
| 字段 | 默认 |
| --- | --- |
| `mailboxes` | 空(明文列表,不回传) |
| `allow_unsafe_url` | `false` |
公开仅 `configured`。
### 2.9 动态代理池
`dynamic_proxy.active_pool` 默认 `1024proxy`。供应商 id:
| id | UI 名 | `sticky_minutes` 默认 |
| --- | --- | --- |
| `1024proxy` | 1024proxy | `30` |
| `b2proxy` | b2proxy | `30` |
| `cliproxy` | CliProxy | `30` |
| `iprocket` | IPRocket | `5` |
每家:`username`、`password`(公开为 `password_configured`)。业务流量(注册/提链/支付/验活/换绑/拿 RT)走当前池;GB→region-GB,GC→region-PH,按任务 sticky SID。
### 2.10 手工代理表(设置页「代理管理」)
库表字段:`group_name`、`proxy_type`(`http` / `https` / `socks5`)、`host`、`port`、`username`、`password`、`remark`、`status`。
用途:兼容旧数据或 mail.com 指定分组。未配置动态池时业务任务失败,**不回退**到本表。导入文本不要提交到 git。
### 2.11 邮箱域名策略
| 字段 | 含义 | 默认 |
| --- | --- | --- |
| `email_domains.mode` | `all` / `whitelist` / `blacklist` | `all` |
| `email_domains.allow` / `deny` | 后缀列表 | `[]` |
`suffix_quota.hourly` / `daily`:每后缀每小时/每天额度,`0`=不限。
### 2.12 Mailpit
| 字段 | 含义 | 代码默认(部署请改成本地值) |
| --- | --- | --- |
| `url` | Mailpit HTTP | `http://127.0.0.1:8025` |
| `username` / `password` / `webhook_secret` | 鉴权 | 空 |
| `smtp_host` / `mx_host` / `ui_url` | SMTP / MX / UI | 代码内示例主机名,勿当生产密钥 |
| `domains` | 收信域列表 | `[]` |
### 2.13 mail.com 轮询
| 字段 | 含义 | 默认 |
| --- | --- | --- |
| `oauth_secret` | 一般不填(公钥内置) | 空 |
| `proxy_group` | 空=直连,不回退动态池 | `""` |
| `poll_minutes` | `0`=关闭轮询 | `0` |
| `auto_delete_used` / `auto_repull` | 删已用子号 / 再拉满 | `false` |
| `cap` | 每母号地址上限(含母号) | `10` |
| `enabled_suffixes` / `disabled_suffixes` | 拉子号后缀 | 内置默认目录 / `[]` |
| `unavailable_suffixes` | 平台拒绝记录 | `{}` |
---
## 3. CB / GB / GC 流水线
不是三套独立 env,而是**通道 + 开关**:
| 通道 | UI | 设置对象 | 代理 region |
| --- | --- | --- | --- |
| GB(英国 PayPal) | 账号管理(非 GC) | `pipeline` | `__auto__:GB`(换绑等同) |
| GC(菲律宾 GCash) | 账号管理(GC) | `pipeline_gc` | `__auto__:PH` |
| Cloak(CB) | 设置授权 + 注册任务 | `cloak` + 注册任务 | 动态池 / 任务指定 |
每套开关默认全 `false`:
| 开关 | GB(`pipeline`) | GC(`pipeline_gc`) |
| --- | --- | --- |
| `register` | 持续注册 GB | 持续注册 GC,不启动 PayPal |
| `rebind` | 有试用后换绑 | 有试用后换绑 PH |
| `extract` | 提 PayPal 支付链 | 出 GCash 码(`gcash_*`) |
| `pay` | PayPal 支付 | GCash 支付墙轮询 |
| `acquire_rt` | 支付成功拿 RT | 支付成功拿 RT(PH) |
`global_extract`(全局提链监视,另页):
| 字段 | 默认 |
| --- | --- |
| `enabled` | `false` |
| `interval_minutes` | `60`(5–1440) |
| `concurrency` | `1`(最大 20,引擎 `PROCESS_CAP=20`) |
| `enabled_channels` | `[]`(公开只给 `enabled_count`) |
---
## 4. 前端设置页标签
`web/src/views/Settings.vue`:
1. 账户 / 密码
2. Cloak / 验活(含流水线上限、nvtokens、import_dump)
3. 接码平台
4. 注册供应商 / 动态代理
5. 代理管理
6. 邮箱域名(策略、mail.com/CF 比例、后缀额度、CF 域)
7. 邮箱轮询 / 后缀
账号页流水线开关见第 3 节。个人密码修改走 `/api/profile`,不写入 `user_settings`。
---
## 5. 默认管理员(安装后立刻改密)
README:首次可登录 `admin` / `admin123`。生产用户(含任意业务账号)的真实密码**禁止**写入仓库或本文。
---
## 6. 明确不入库
- `.env` 及任何真实密钥、token、license、TOTP 种子
- `server/data/`(`app.db`、会话、卡哈希等)
- Cloak runtime 配置目录 `server/src/automation/runtime/`
- 代理账号密码、import_dump 真实 URL/Key、cloak license 明文
- `DEPLOY_SSH_PASSWORD`、Cloudflare token、Worker `ADMIN_TOKEN`
- `web/dist/`、`node_modules/`、日志、`debug/`
密钥生成示例(只生成随机串,不要提交结果):
```bash
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
```