-
Notifications
You must be signed in to change notification settings - Fork 1
Deployment
server/app.ts 是平台无关的:只依赖 Web Fetch API 与 Web Crypto,不使用 node:crypto。
因此任何提供「单一 HTTP 入口 + 环境变量注入」的平台都能承载它。
四种部署方式,按省事程度排序。
单命令部署(构建 + 上传一次完成):
bun run deploy # = bun run build && wrangler deploy-
静态资源:Workers Assets 托管
dist/(SPA 回退已配置在wrangler.toml)。 -
API:
worker/index.ts复用server/app.ts(平台无关 + Web Crypto 签名)。 -
密钥:
wrangler secret put DEEPSEEK_API_KEY等逐项配置; 本地调试用.dev.vars(参考.dev.vars.example,与.env同集合同顺序)。 -
多账号:变量同样按
_N后缀命名(如DEEPSEEK_API_KEY_2)。
仓库已含 Makers 适配层,在控制台把函数目录指向 cloud-functions/ 即可:
-
cloud-functions/api/[[default]].js——/api/*全捕获,动态import('../../server/app.ts')复用同一份createAppHandler;依赖链加载失败时返回结构化FN_IMPORT_FAILED(而不是裸崩成 5xx HTML)。 -
cloud-functions/api/diag.js—— 零依赖自诊断。访问/api/diag可区分 「函数系统故障」与「依赖链加载失败」,并列出运行时已知的环境变量名 (Key/Secret 类只显示<set>),用于确认线上变量是否注入成功。 -
edgeone.json配置云函数超时与区域(maxDuration: 60,广州 / 新加坡)。 - 环境变量在 Makers 控制台 EnvVars 配置,经
context.env注入;同样支持_N多账号。
部署后第一件事:打开
/api/diag确认变量注入成功。变量没注入时页面只会显示「未配置」, 和「没配」长得一模一样。
server/app.ts 平台无关,只要有「单一 HTTP 入口 + 环境变量注入」都可以承载,
api/ 下的适配层照着 cloud-functions/api/[[default]].js 改写即可。
配置前请先读 Cookie 怎么填。
-
值不能含空格/换行/制表符 —— 所以百炼 Cookie 只粘 ticket 的值,别粘整段
Cookie头; 必须用整段的(模力方舟会话 Cookie)先encodeURIComponent。 -
面板不做
$变量展开 —— 直接粘原值,不要加\$(那是本地.env才需要的写法)。
-
改完变量必须重新部署才生效:Vercel / Workers 的部署产物在构建期固化配置, 改面板上的值不会影响已经在跑的实例,要触发一次新部署(或在面板点 Redeploy)。
-
用 CLI 配置时别用
echo:echo会附带回车换行,正是面板拒绝的「换行符」。 服务端会把值trim()掉,因此写入的换行不会损坏查询,但面板会直接拒绝这一笔。# ✅ printf 不带换行 printf '%s' '<login_aliyunid_ticket 的值>' | vercel env add ALIYUN_TOKENPLAN_COOKIE production # ❌ echo 会写入尾部 \n echo '<值>' | vercel env add ALIYUN_TOKENPLAN_COOKIE production
报错会附带当前配置值的长度,与浏览器中复制的值比对:
-
偏短 → 本地
.env里的字面$未转义,被变量展开吃掉了字符; - 长度一致但仍失败 → 大概率是会话真过期,重新复制即可。
长度一致也可能是「值被改成了另一个长度相同的旧值」。要确认是不是新值,比对哈希。
bun run build # 构建前端到 dist/
bun run server # Bun 服务:同一端口提供 API 与静态页面HOST / PORT 可覆盖监听地址与端口(默认 127.0.0.1:8787)。
| 检查项 | 怎么做 |
|---|---|
| 变量注入成功 | 打开 /api/status(或 EdgeOne 上的 /api/diag),看各家 configured 是否为 true |
| 上游真能读到数 | 打开 /api/usage,看各家切片里有没有 error / code
|
| 已加访问控制 | 本项目没有内建鉴权,见下 |
| 站点名 / Logo 生效 | 改完变量后重启服务(不是重新构建) |
部署到公网后,任何知道地址的人都能看到你所有账号的余额与用量 —— 本项目没有内建的用户体系与访问控制。生产使用时请在反向代理层加认证 (Cloudflare Access / Basic Auth / IP 白名单),或者干脆只在内网部署。
详见 安全模型。