Appearance
服务器上线步骤
本文按阿里云香港服务器部署 11API。
一、准备 DNS
至少配置:
11api.topapi.11api.topdocs.11api.toppay.11api.topstatus.11api.top
全部先解析到同一台服务器。
二、服务器基础加固
建议先完成:
- SSH 仅保留密钥登录
- 禁止 root 直接远程登录
- 安全组只放行
22/80/443 - 不对公网开放
3000/5432/6379
三、安装 Docker
确认这两项可用:
bash
docker --version
docker compose version四、上传项目
把项目目录上传到服务器,例如:
bash
/opt/11api从本机发布时优先用脚本化同步,避免把本机 deploy/.env、runtime、数据库和日志覆盖到服务器:
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 已存在会拒绝覆盖。
如果你接真实收款,继续补这些变量:
PAY_PROVIDER=epayPAY_DEFAULT_METHOD=alipayEPAY_GATEWAY_URLEPAY_PIDEPAY_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 到账后,会在“人工交付”里出现任务;交付人需要更新负责人、检查清单和完成状态。
十、验证支付骨架
- 打开
https://pay.11api.top创建一笔测试订单 - 记录订单号
- 在服务器执行:
bash
cd /opt/11api/deploy
./scripts/mock-pay-order.sh <order_no>- 再查订单:
bash
curl "https://pay.11api.top/api/orders/<order_no>?lookupToken=<lookup_token>"订单查询口令在创建订单响应里只展示一次。公开页面、支付返回页和 smoke 脚本都必须带 lookupToken 查询,避免仅凭订单号暴露客户邮箱、付款状态或兑换码信息。
十一、首次后台配置
首次进入主站后台后,优先做这些配置:
- 修改系统名为
11API - 上传 logo
- 配置公告、FAQ、定价页
- 关闭不必要的公开功能
- 创建管理员令牌
- 添加上游渠道
- 设置分组和模型映射
十二、上线后的日常操作
备份
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/health 的 releaseId 仍是旧值,脚本会失败,不要继续投放。