AI 代办部署图文教程:让 AI 助手部署自托管 CDK 站
把提示词整段交给 AI 助手,由它在服务器上部署官方自托管 CDK 站并逐项验收;密码与密钥由你本人在网页填写。

1. 分工

服务器上的操作交给 AI,涉及资金和密码的操作由你自己完成。
- 交给 AI 的:安装环境、运行官方脚本、查看日志、验收。AI 会把每一步执行的命令和结果告诉你。
- 你自己做的:卡台 API 密钥、后台管理员密码、Session、卡密等,都在网页上自己填写,不要发给 AI。帮助中心也提醒,Session、令牌和 API Key 不要发到群聊,不要出现在公开截图或工单里。
2. 准备工作
| 序号 | 需要准备 | 确认方法 |
|---|---|---|
| 1 | 一台 Linux 服务器,建议 Ubuntu 22.04 / 24.04 或 Debian 12,x86-64,内存 2GB 以上(构建镜像时要同时编译前端和后端) | 能用 ssh root@服务器IP 登录 |
| 2 | 一个域名,A 记录已解析到服务器 IP | 在自己电脑上执行 ping 你的域名,显示的 IP 和服务器 IP 一致 |
| 3 | 服务器已放行 80 和 443 端口(在云服务商控制台的安全组或防火墙中设置) | 控制台的入站规则里有 80 和 443 |
| 4 | 卡台账号已有「直充协议」权限:会员等级达到超级 SVIP 及以上会自动开通,也可以由管理员手工开通,账户里还要有一笔已入账的充值(开放 API 文档 §6.18.1)。另外需要开放 API 权限才能创建 API 密钥,开发者页的说明是「累计充值满 3000U 后自动解锁开放 API;代理也可以提交 API 权限工单申请」 | 卡台左侧菜单里有「商城与工具 → 直充协议」;「开发者」页能看到「+ 创建密钥」 |
| 5 | 一个能连接服务器的 AI 助手,例如在终端里运行的 Claude Code、Codex CLI,或者支持 SSH 和终端工具的 AI 代理。只能聊天、不能执行命令的 AI 只能给出命令,需要你自己复制到服务器上运行 | AI 能在服务器上执行 uname -a |
提示:建议用 SSH 密钥登录服务器,不要把 root 密码发到任何聊天窗口。Windows 10/11 的 PowerShell 和 macOS 的终端都可以直接使用
ssh命令。
3. 使用步骤
- 按第 2 节准备好五项内容。
- 打开 AI 助手,让它能连接到服务器,或者直接在服务器的终端里启动它。
- 把第 4 节的提示词整段复制给 AI,把尖括号
< >里的内容换成你自己的服务器 IP 和域名。 - 按 AI 的提示操作。到了需要你本人完成的步骤(见第 5 节),在网页上完成后告诉 AI 已经完成。
4. 给 AI 的提示词
先把下面三处尖括号换成自己的信息:<服务器IP>、<SSH用户,一般是 root>、<你的域名>。
你是一名谨慎的 Linux 运维工程师。请在这台服务器上部署卡台(ZovoCard)官方自托管 CDK 站(开源项目 zovocard/zovo_card_cdk_auto),并逐项验收。
【我提供的信息】
- 服务器 IP:<服务器IP>
- SSH 用户:<SSH用户,一般是 root>
- 域名:<你的域名>(A 记录已解析到上面的服务器 IP,云服务商控制台已放行 80 和 443 端口)
- 部署目录:/opt/cdk-recharge(官方脚本的默认值,不要修改)
【规则:违反任何一条,立即停止并告诉我】
1. 不要向我索要,也不要在聊天中输出以下机密:后台管理员密码、卡台 API 密钥(sk_ 开头)、任何 Session 或 Access Token、Webhook 签名密钥(whsec_ 开头)、完整卡密。需要用到它们的步骤由我在网页上完成,你只告诉我在哪里操作、点什么。
2. 只使用官方仓库 https://github.com/zovocard/zovo_card_cdk_auto 中的脚本。运行任何脚本之前,先下载下来阅读,并向我说明它会做什么,不要直接 curl | bash。
3. 不修改官方源码,不手动修改 docker-compose.yml 和 Caddyfile(由脚本生成)。确实需要修改时,先说明原因,等我同意。
4. 不关闭防火墙,除 22、80、443 外不开放其他端口。
5. 每一步先用一句话说明要做什么,再执行。失败时贴出完整的报错原文并先分析原因,不要连续盲目重试。
6. 不使用后台的「一键无痕更新」。以后升级的方法是:用同一个域名再运行一次官方部署脚本(脚本会拉取新代码、保留已有的 .env、重新生成 Caddy 配置并重建)。
【任务步骤】
A. 检查环境(只读)
1) uname -m && cat /etc/os-release | head -3 && whoami
2) free -m && df -h /
3) ss -ltn | grep -E ':(80|443)\b' || echo "80/443 空闲"
4) getent hosts <你的域名>(结果必须等于 <服务器IP>,否则停下来,告诉我先修改 DNS)
通过标准:x86_64;内存至少 2GB(不足时先告诉我,可能需要添加 swap);磁盘剩余至少 10GB;80 和 443 端口空闲;域名解析正确。
B. 安装前置工具
Debian/Ubuntu:apt-get update && apt-get install -y curl git ca-certificates openssl
CentOS/Rocky:yum install -y curl git ca-certificates openssl
(官方脚本需要 curl、git 和 openssl;Docker 和 compose 插件由脚本自动安装)
C. 运行官方部署脚本
1) 下载并阅读:curl -fsSL https://raw.githubusercontent.com/zovocard/zovo_card_cdk_auto/master/deploy/docker-deploy.sh -o /tmp/docker-deploy.sh && sed -n '1,200p' /tmp/docker-deploy.sh
2) 向我说明脚本要做的六件事:安装 Docker;把代码克隆到 /opt/cdk-recharge;生成 JWT 密钥并写入 .env(权限 600);配置 Caddy(自动 HTTPS);构建镜像;启动容器。
3) 我同意后执行:bash /tmp/docker-deploy.sh --domain <你的域名>
4) 构建需要几分钟,期间不要中断。结束时应该看到「部署完成!」和「访问: https://<你的域名>」。
D. 验收(只读)
1) cd /opt/cdk-recharge && docker compose ps (cdk 状态为 healthy,caddy 状态为 running)
2) docker compose logs --tail=60 cdk (日志中应有「首次安装模式」「Setup Token」「Starting server」)
3) curl -fsS https://<你的域名>/health (返回 {"status":"ok"...})
4) curl -fsS https://<你的域名>/api/v1/setup/status (此时应返回 "installed":false)
5) stat -c '%a %n' /opt/cdk-recharge/.env (权限应为 600)
E. 把 Setup Token 交给我
Setup Token 只在第一次启动的日志中出现一次:docker compose logs cdk | grep "Setup Token"
只把这一串 Setup Token 发给我(它只用于打开安装向导,安装完成后即失效),然后告诉我:打开 https://<你的域名>/ops/setup,填入 Setup Token,设置管理员。密码由我自己保存,不要告诉你。
等我说「安装好了」,再用 curl -fsS https://<你的域名>/api/v1/setup/status 确认返回 "installed":true。
F. 告诉我服务器的出口 IP(用于卡台 API 密钥的白名单)
curl -fsS https://api.ipify.org
把这个 IP 告诉我,我会到卡台「开发者」页给 API 密钥设置 IP 白名单。(官方文档:新签发的密钥必须先填服务器出口 IP,否则调用会被 403 拒绝。)
G. 我在后台填好卡台 API 密钥后,做连通验收
1) docker compose logs --tail=100 cdk | grep -i "plan-sync" (应看到 synced N plans,N 大于 0)
2) curl -fsS https://<你的域名>/api/v1/public/cdk/plans | head -c 600 (source 应为 cardplatform_live,并且有套餐)
如果 N 为 0,或者报 401、403:不要重试,先按下面的对应关系排查,并告诉我结论:
- 401:API 密钥填错或已停用
- 403:服务器出口 IP 不在白名单中
- 超时:服务器无法访问公网,或被防火墙拦截
- 429:调用太频繁,稍等再试
H. 备份(建议执行)
先告诉我备份时站点会停止几秒,我同意后再执行:
mkdir -p /root/cdk-backups && cd /opt/cdk-recharge && docker compose stop cdk && docker run --rm --volumes-from cdk-recharge -v /root/cdk-backups:/backup alpine:3.22 sh -c 'tar -C /app/data -czf /backup/cdk-data-$(date +%F).tgz .' && docker compose start cdk
完成后告诉我备份文件的名称和大小。
【最终报告】
1. 结论:部署成功、部分成功或失败;
2. 表格:步骤 A 至 H 各自的状态(通过、未通过、等待我操作);
3. 需要我自己完成的事项,逐条列出,附网址;
4. 发现的风险或异常,没有就写「无」。
5. 需要你自己完成的三件事
5.1 在卡台创建 API 密钥,设置 IP 白名单
- 登录卡台,进入「商城与工具 → 开发者」,点「+ 创建密钥」。
- App Secret(
sk_开头)只显示一次,马上复制保存。丢失的话只能删除后重新创建。 - 在这个密钥那一行的「IP 白名单」中填入 AI 告诉你的服务器出口 IP,点「保存」。
- 图文步骤见主教程第 5 章。
5.2 完成安装向导
- 打开
https://你的域名/ops/setup,粘贴 AI 给你的 Setup Token,用户名默认为 admin。 - 点「一键生成并进入后台」(系统生成强密码,只显示一次,请马上保存),或者点「自设密码」(至少 12 位,必须同时包含字母和数字,不能是常见的弱密码)。
- 如果成功页上的「进入运营后台」点了没有反应,实际上已经登录,直接打开
https://你的域名/ops即可。 - 图文步骤见主教程第 6 章。
5.3 在后台填写卡台 API 密钥
- 用安装时保存的密码登录后台(
https://你的域名/ops/login),点顶部菜单的「卡台接入」,环境选「生产 · zovocard.com」,在「Open API Key (sk_…)」中粘贴密钥,点「保存」,再点「一键检测」。 - 这一页顶部显示的「本机出口 IP · 卡台白名单」应该和 AI 查到的出口 IP 一致。不一致时以这里显示的为准,回到卡台修改白名单。
- 回到 AI,告诉它 API 密钥已经配好,让它执行步骤 G 的连通验收。
6. 验收
https://你的域名/health能打开,浏览器地址栏有锁形图标(HTTPS 证书正常)。- 再打开
https://你的域名/ops/setup会跳到登录页,说明已经安装完成,不能再次安装。 - 能用保存的管理员密码登录后台。
- 后台「卡台接入」一键检测通过:连通状态显示「正常」,能看到可消费余额和实时服务费(套餐清单)。
- 发 1 张最便宜套餐的测试卡密,用自己一个没有会员的 ChatGPT 账号完整兑换一次,订单能到「已完成」。
/opt/cdk-recharge/.env的权限为 600,备份文件已经生成。- 清楚升级方法:用同一个域名再运行一次官方部署脚本,升级前先备份。
注意:测试兑换会真实使用你名下卡里的资金(官方文档:兑换时的卡片注资和订阅实付由 CDK 所有者承担)。第一次测试只发 1 张,并确认余额充足。
部署完成后,发码、指导买家兑换和日常对账的操作,见主教程第 7 章。
7. 排错用的提示词
站点已经部署好,但遇到问题(网页打不开、兑换报错、后台检测不通过)时,把下面这段复制给 AI:
你是一名谨慎的 Linux 运维工程师。我的卡台官方 CDK 站部署在这台服务器的 /opt/cdk-recharge,域名是 <你的域名>。现在出现的问题是:<用一句话描述,例如「后台检测卡台失败」「网页打不开」>。
规则:只做只读检查,不修改任何配置,不重启,不升级,除非我明确说「可以改」。不输出任何密码、API 密钥、Session 或卡密。
请依次检查并汇报,每一项附上输出原文的要点:
1. cd /opt/cdk-recharge && docker compose ps
2. docker compose logs --tail=150 cdk (查找 error、panic、401、403、429、timeout)
3. docker compose logs --tail=50 caddy (查找证书、80、443 相关的问题)
4. curl -sS -o /dev/null -w '%{http_code}\n' https://<你的域名>/health
5. getent hosts <你的域名> 和 curl -fsS https://api.ipify.org (确认域名解析和出口 IP)
6. df -h / && free -m
最后给出:最可能的原因(按可能性排序)、验证方法、修复步骤(先不要执行,等我同意)。
8. 常见问题
AI 说找不到 Setup Token,日志里没有
Setup Token 只在第一次启动时打印一次。容器如果被重建过(例如重复运行了部署脚本),日志里就看不到了。因为还没有完成安装,站点里没有数据,可以让 AI 在征得你同意后停止容器,只删除应用的数据卷,再重新启动,日志里会生成新的 Setup Token。不要删除 Caddy 的数据卷,里面存着 HTTPS 证书,重复申请可能被限流。
域名打不开,或者浏览器提示证书错误
依次确认:域名已经解析到这台服务器;云服务商的安全组放行了 80 和 443;如果域名开了 CDN 代理,先改成「仅 DNS」,等证书签发成功后再决定是否开启代理。
AI 要求我提供 API 密钥
不要提供。本页的提示词已经要求 AI 不索要机密。如果它仍然索要,说明它没有遵守规则,请在网页上自己填写,并提醒它机密由你本人填写。
后台检测卡台时报 403
多数是 IP 白名单的问题:新签发的密钥必须先填服务器的出口 IP,不是你自己电脑的 IP,也不是内网地址。让 AI 执行 curl -fsS https://api.ipify.org 查出出口 IP,再到卡台「开发者」页补上。
想自己指定 Setup Token 或管理员密码
Setup Token 可以通过官方支持的环境变量 SETUP_BOOTSTRAP_TOKEN 指定;管理员密码在安装向导中选「自设密码」。这两项都不需要经过 AI。
脚本最后提示「设置管理员账号和卡台 API Key」,但安装向导里没有 API Key
安装向导里只有 Setup Token、管理员用户名和密码。卡台 API 密钥在登录后台后,到顶部菜单的「卡台接入」页填写(见本页 5.3)。这是脚本的提示文字没有随功能更新。
以后怎么升级
用同一个域名再运行一次官方部署脚本。脚本发现 /opt/cdk-recharge 已经存在,会拉取最新代码、保留原来的 .env(JWT 密钥不变)、重新生成 Caddy 配置,然后重建并重启。脚本结尾也给出了更新后重建的命令 docker compose up -d --build。升级前先备份(见提示词的步骤 H)。后台的「一键无痕更新」是给二进制部署方式用的,Docker 部署请用上面的方法。
本页依据卡台官方《CDK 卡密系统接入文档》《开放 API 文档》、帮助中心,以及官方仓库中的 deploy/docker-deploy.sh、docker-compose.yml 整理。页面和脚本会更新,请以官方最新版本为准。