Skip to content

服务器上线步骤

本文按阿里云香港服务器部署 11API

一、准备 DNS

至少配置:

  1. 11api.top
  2. api.11api.top
  3. docs.11api.top
  4. pay.11api.top
  5. status.11api.top

全部先解析到同一台服务器。

二、服务器基础加固

建议先完成:

  1. SSH 仅保留密钥登录
  2. 禁止 root 直接远程登录
  3. 安全组只放行 22/80/443
  4. 不对公网开放 3000/5432/6379

三、安装 Docker

确认这两项可用:

bash
docker --version
docker compose version

四、上传项目

把项目目录上传到服务器,例如:

bash
/opt/11api

从本机发布时优先用脚本化同步,避免把本机 deploy/.envruntime、数据库和日志覆盖到服务器:

bash
cd "/Users/msf/Documents/New project/newapi-commercial-station/deploy"
./scripts/remote-release.sh --host root@你的服务器IP --skip-remote-gate --skip-final-verify

这一步只同步代码,不启动服务。服务器上首次生成并复核 .env 后,再进入正式首发部署。

五、准备部署变量

进入:

bash
cd /opt/11api/deploy
./scripts/prepare-production-env.sh

脚本会生成 .env 并填入生产随机密钥、root access token 和兜底邀请码;如果 .env 已存在会拒绝覆盖。

如果你接真实收款,继续补这些变量:

  1. PAY_PROVIDER=epay
  2. PAY_DEFAULT_METHOD=alipay
  3. EPAY_GATEWAY_URL
  4. EPAY_PID
  5. EPAY_KEY

六、首发部署

bash
./scripts/production-launch-gate.sh --deploy --ensure-test-token
docker compose --env-file .env ps

总闸门会先检查生产配置和商业 MVP 合规边界,再执行首发部署、构建文档、发布静态文件、启动容器、初始化 11API 的 New API 页面配置、回填 root access token、跑完整业务验收、抓上线证据包,并打印 Go/No-Go 结论。

如果首发部署中断,可以再单独运行 ./scripts/first-deploy.sh 做分步排障。

如果你在本机操作,也可以直接让本机同步代码、远端部署并回查公网域名:

bash
cd "/Users/msf/Documents/New project/newapi-commercial-station/deploy"
./scripts/remote-release.sh --host root@你的服务器IP --ensure-test-token

成功后脚本会把远端最新 Go/No-Go 证据包同步回本机 deploy/runtime/remote-release-evidence/,只拉证据文件,不拉远端 .env 或运行态密钥。

如果还没配置 NEW_API_TEST_TOKEN,只想先确认这次 pay-service 已经部署到公网并且 releaseId 正确,可以临时使用:

bash
./scripts/remote-release.sh --host root@你的服务器IP --health-only

--health-only 不是正式上线证据;它只验证部署链路、域名、HTTPS 和支付服务 release。邀请首批用户前仍需补 NEW_API_TEST_TOKEN,或使用 --ensure-test-token 自动创建,再跑完整闸门。

七、验证站点

依次检查:

bash
curl -I https://11api.top
curl https://11api.top/api/status
curl -I https://docs.11api.top
curl https://pay.11api.top/api/health
curl -I https://status.11api.top

八、完整业务验收

先用脚本创建或复用一枚测试 Token,并写入 .env

bash
./scripts/ensure-new-api-test-token.sh

如果你不是在服务器本机执行,或者服务器上的 Caddy 端口没有暴露给当前机器,可以显式指定生产入口:

bash
./scripts/ensure-new-api-test-token.sh --base-url https://11api.top --dry-run
./scripts/ensure-new-api-test-token.sh --base-url https://11api.top

脚本会用 .env 里的 PRIMARY_DOMAIN 作为 Host 头,并优先使用 NEW_API_ADMIN_USER_ID + NEW_API_ADMIN_ACCESS_TOKEN 认证;缺少管理员 access token 时才回退 root 用户名/密码。它会创建一枚 smoke-only Token 写入 NEW_API_TEST_TOKEN。控制台手工创建仅作为备用路径;脚本不会把明文 token 打印到终端或证据文件,也不要把该 Token 发给客户。

创建前可以先验证 New API 管理凭据:

bash
./scripts/check-new-api-admin-auth.sh --base-url https://11api.top

如果返回 Unauthorized, invalid access token,说明当前 .env 里的 NEW_API_ADMIN_ACCESS_TOKEN 不属于这个线上实例。先在服务器上回填正确的 deploy/runtime/bootstrap/root-access-token.txt,或在 New API 控制台重新生成管理员 access token,再继续创建 smoke Token。 服务器上可直接用自动修复脚本,先 dry-run,再写回 .env

bash
cd /opt/11api/deploy
./scripts/repair-new-api-admin-auth.sh --base-url https://11api.top --dry-run
./scripts/repair-new-api-admin-auth.sh --base-url https://11api.top --force
./scripts/ensure-new-api-test-token.sh --base-url https://11api.top

修复脚本会优先验证 runtime/bootstrap/root-access-token.txt,必要时用 root 用户名/密码重新取管理员 access token。明文 token 只写入 .env,不会出现在终端或 runtime/bootstrap/admin-auth-repair.json。 如果你从本机通过 SSH 操作,可以直接跑轻量远端修复脚本。它不会下载远端 .env、root token 或 smoke token,只拉回脱敏 metadata 和最新行动包:

bash
cd deploy
./scripts/remote-admin-auth-repair.sh --host root@你的服务器IP --base-url https://11api.top

本地归档目录是 deploy/runtime/remote-admin-auth-repair/

然后先生成开张缺口报告:

bash
cd /opt/11api/deploy
python3 scripts/launch-gap-audit.py .env \
  --json-out runtime/launch-gap-report.json \
  --md-out runtime/launch-gap-report.md \
  --fail-on-blocker

报告为 NOT_READY 时先处理 blocker;报告为 READY_FOR_PRODUCTION_GATE 时,再执行总闸门。

如果要保留 Authorized Credits,还要先登记上游授权证据:

bash
mkdir -p runtime
cp static/ops-templates/upstream-authorizations.example.json runtime/upstream-authorizations.json
vim runtime/upstream-authorizations.json

生产记录必须有已批准、未过期、带证据引用的 included-credit/resale/integration 授权。没有这份文件时,总闸门会把 Authorized Credits 拦在 NO_GO

然后执行:

bash
cd /opt/11api/deploy
./scripts/production-launch-gate.sh

它会验证生产就绪严格审计、合规预检、公开健康检查、New API 原生兑换码、支付兑换、客户交付消息、人工交付任务、试营业 KPI、试营业运营门禁、OpenAI-compatible、Claude-compatible、Claude Code x-api-key、机器可读客户端验收证据和客服工单入口,并生成上线证据包。只有最后显示 Decision: GO,才开始邀请首批用户。 如果 upstream_authorization 失败,先暂停授权额度收款,只保留 BYOK Developer 和 Seat Setup。

总闸门会用 NEW_API_TEST_TOKEN 自动生成:

text
deploy/runtime/client-acceptance.json
deploy/runtime/client-acceptance/*-summary.json

这些文件会进入 Go/No-Go 证据包,但不会保存测试 Token 或原始模型响应。

九、验证后台页

打开:

text
https://pay.11api.top/admin

填入 PAY_ADMIN_TOKEN 后即可查看订单、手工标记到账和关闭待支付订单。 订单 fulfilled 后,可以在订单行点击“复制交付消息”,再发给客户。 BYOK / Seat Setup 到账后,会在“人工交付”里出现任务;交付人需要更新负责人、检查清单和完成状态。

十、验证支付骨架

  1. 打开 https://pay.11api.top 创建一笔测试订单
  2. 记录订单号
  3. 在服务器执行:
bash
cd /opt/11api/deploy
./scripts/mock-pay-order.sh <order_no>
  1. 再查订单:
bash
curl "https://pay.11api.top/api/orders/<order_no>?lookupToken=<lookup_token>"

订单查询口令在创建订单响应里只展示一次。公开页面、支付返回页和 smoke 脚本都必须带 lookupToken 查询,避免仅凭订单号暴露客户邮箱、付款状态或兑换码信息。

十一、首次后台配置

首次进入主站后台后,优先做这些配置:

  1. 修改系统名为 11API
  2. 上传 logo
  3. 配置公告、FAQ、定价页
  4. 关闭不必要的公开功能
  5. 创建管理员令牌
  6. 添加上游渠道
  7. 设置分组和模型映射

十二、上线后的日常操作

备份

bash
cd /opt/11api/deploy
./scripts/backup-new-api.sh

看日志

bash
docker compose logs -f new-api
docker compose logs -f caddy

更新镜像

bash
docker compose pull
docker compose up -d

更新业务代码

bash
cd "/Users/msf/Documents/New project/newapi-commercial-station/deploy"
./scripts/remote-release.sh --host root@你的服务器IP --ensure-test-token

脚本会保留远端 .env 与运行态目录,重新构建文档和 pay-service,远端跑上线闸门,并从本机复核 5 个公网域名。若 pay.11api.top/api/healthreleaseId 仍是旧值,脚本会失败,不要继续投放。

基于 VitePress 构建