我把 Cockpit Tools 的 2 个 Codex 唤醒任务迁到了 VPS:关掉电脑也能自动运行

斌仔 分类:
文章字数 3802 字 阅读时间 29 分钟
🤖 由 OpenAI 兼容接口 生成的文章摘要
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结

我之前一直在 Cockpit ToolsWindows、MacOS安装包) 里登录两个 Codex 账号,并给它们配置了唤醒任务。

Cockpit Tools 唤醒任务,已迁移到VPS,本地停用了
Cockpit Tools 唤醒任务,已迁移到VPS,本地停用了

平时用着没什么问题。

但它有一个明显的限制:

任务还是依赖本地环境。

如果电脑关机、Cockpit Tools 没有运行,唤醒任务自然也就执行不了。

我想要的其实很简单:

不管我的电脑开不开机,都让服务器自己每小时唤醒两个 Codex 账号。

于是我没有继续研究 Cockpit Tools 怎么同步,而是直接把这件事交给了 AI

最后 AI 帮我把两个账号迁到了 VPS,并重新做了一套服务器定时任务。

整个过程我基本没有自己写 systemd,也没有一条一条复制 Linux 命令。

如果你也不太懂 Linux,这篇文章可以直接照着做。

先说结论:不是“同步”,而是“迁移 + 重建”

先说结论:不是“同步”,而是“迁移 + 重建”
先说结论:不是“同步”,而是“迁移 + 重建”

一开始我也以为,可以直接把 Cockpit Tools 里的唤醒任务同步到服务器。

后来才发现,两件事其实不一样。

Cockpit Tools 里的唤醒任务,本质上还是由本地程序负责调度。

所以严格来说,我这次并不是:

把 Cockpit Tools 整个搬到 VPS

而是:

Cockpit Tools 旧环境
        ↓
找到两个 Codex 账号的登录状态
        ↓
迁移到 VPS
        ↓
两个账号分别使用独立 CODEX_HOME
        ↓
VPS 使用 systemd 每小时执行一次 codex exec

也就是说:

账号状态迁过去,定时任务在服务器上重新建。

这样本地电脑关机以后,VPS 仍然可以自己运行。

我最终做成了什么样?

我最终做成了什么样?
我最终做成了什么样?

部署完成后,服务器上大概是这个结构:

VPS
├─ Codex 账号 1
│   └─ 独立 CODEX_HOME
│
├─ Codex 账号 2
│   └─ 独立 CODEX_HOME
│
└─ systemd
    ├─ codex-wakeup.service
    └─ codex-wakeup.timer
          ↓
      每小时执行一次
          ↓
      账号 1 → Codex
      账号 2 → Codex

最后实现的效果是:

  • 两个 Codex 账号互不影响。
  • 每小时自动执行一次轻量请求。
  • 本地电脑关机也没关系。
  • 一个账号失败,不影响另一个继续执行。
  • VPS 重启以后任务还会继续。
  • 可以随时通过日志确认任务是否执行成功。

后来我还加了一个网页日志看板,不过这个属于可选功能,后面单独说。

我没有重新登录两个账号

我没有重新登录两个账号
我没有重新登录两个账号

这一点是这次迁移里最省事的地方。

因为我之前已经在 Cockpit Tools 里登录好了两个 Codex 账号,所以旧环境里已经保存了它们各自需要的登录状态。

AI 能访问我原来的环境以后,没有让我重新 OAuth 两次。

它先找到了 Cockpit Tools 里两个账号对应的数据,然后把运行 Codex 所需要的登录文件直接迁到了 VPS。

最后分别放到:

/var/lib/codex-wakeup/accounts/account1

和:

/var/lib/codex-wakeup/accounts/account2

两个账号继续完全隔离。

这里有一个很重要的区别:

迁移登录文件,不等于把 auth.json 发给 AI

不要自己打开:

auth.json

然后把里面的 Token、OAuth 信息复制到聊天里。

正确的做法是:

让 AI 在它已经获得授权访问的两台机器之间直接传文件。

例如:

本地 Cockpit Tools 环境
        ↓
AI 读取文件路径
        ↓
直接上传到 VPS
        ↓
重新设置文件权限

凭证内容不需要显示在聊天里,也不需要打印到终端。

如果旧环境已经不存在、AI 无法访问,或者登录状态迁过去以后已经失效,再使用:

codex login --device-auth

重新授权。

所以我更推荐:

能迁就先迁,迁不了再重新登录。

开始前需要准备什么?

开始前需要准备什么?
开始前需要准备什么?

其实不多。

你需要:

  1. 一台 Ubuntu VPS:RackNerdCloudCone 都可(我用的是我闲置的 Racknerd VPS)。
  2. VPS 可以通过 SSH 正常登录。
  3. 两个能正常使用 Codex 的账号(一个账号也可以,根据自己的账号数量来)。
  4. VPS 可以正常访问 OpenAI
  5. 一个能够直接操作终端、SSH 和文件的 AI Agent / Codex。

如果你和我一样,原来就在 Cockpit Tools 里运行任务,最好让 AI 同时可以访问原来的电脑环境。

这样它才能自己找出:

  • Cockpit Tools 的任务配置。
  • 两个账号。
  • 两个账号对应的登录状态。
  • 原来的执行周期。

真正需要我自己做的事情很少

真正需要我自己做的事情很少
真正需要我自己做的事情很少

这次部署里,大部分工作都是 AI 完成的。

包括:

  • 检查服务器系统。
  • 检查 Node.js。
  • 检查 Codex CLI。
  • 找 Cockpit Tools 的账号数据。
  • 找原来的唤醒任务配置。
  • 上传两个账号的登录文件。
  • 创建专用 Linux 用户。
  • 创建两个独立 CODEX_HOME。
  • 设置权限。
  • 创建运行脚本。
  • 创建 systemd service。
  • 创建 systemd timer。
  • 实际执行两个账号。
  • 查看日志。
  • 排查错误。
  • 检查下一次运行时间。

我真正需要人工处理的,通常只有两种情况。

第一种:

旧登录状态不能用了。

这时候 AI 会运行:

codex login --device-auth

然后给我登录网址和验证码。

我自己去浏览器完成授权,再回复:

已完成,继续

第二种:

如果后面部署网页看板,而 AI 无法操作云服务器安全组,我自己去开放对应端口。

其他事情,能交给 AI 的就全部交给 AI。

直接把这段提示词交给 AI

直接把这段提示词交给 AI
直接把这段提示词交给 AI

下面这段就是我现在更推荐的版本。

把:

<你的服务器IP或SSH别名>

换成自己的服务器即可。

你现在是一名 Linux / Ubuntu / systemd / Codex CLI 运维工程师。

请直接操作我的旧 Cockpit Tools 环境和目标 VPS,把现有的两个 Codex 唤醒任务迁移到 VPS。

目标服务器:

<你的服务器IP或SSH别名>

我要实现:

- 两个 Codex 账号继续完全隔离。
- 每个账号每小时执行一次轻量 Codex 请求。
- 优先沿用原 Cockpit Tools 任务中的模型和推理强度。
- 一个账号失败时,另一个仍然继续执行。
- 使用 systemd service + timer。
- 本地电脑关机后不受影响。
- VPS 重启以后任务自动恢复。
- 部署完成后必须真实执行并验证。

【第一步:先检查旧环境】

如果你可以访问原来的 Cockpit Tools 环境:

1. 找到当前启用的 Codex 唤醒任务。
2. 确认任务包含几个账号、执行周期、模型和推理强度。
3. 找到两个账号各自对应的 Codex 登录状态。
4. 确认两个账号原本是分开的。
5. 不要先删除或暂停旧任务。

如果登录状态可用:

优先直接把两个账号运行 Codex 所需要的登录文件安全迁移到 VPS。

要求:

- 不要把 auth.json、OAuth Token 等内容打印到终端或聊天。
- 不要让我手动复制 Token。
- 直接在授权环境之间传输文件。
- VPS 上两个账号必须放在不同 CODEX_HOME。

如果旧环境无法访问、找不到登录状态,或者迁移以后认证已经失效,再使用 codex login --device-auth。

【第二步:检查 VPS】

先检查:

- Ubuntu / Linux 版本
- Node.js
- npm
- Python
- Codex CLI
- codex 真实路径
- 是否已经存在相同用户、目录、service、timer 或类似任务

不要直接覆盖未知配置。

修改已有文件前先备份。

如果 Codex CLI 版本过旧,导致原 Cockpit Tools 使用的模型无法运行,先确认兼容性,再决定是否升级。

【第三步:创建运行环境】

创建专用系统用户:

codex-wakeup

不要长期使用 root 运行 Codex。

使用:

/var/lib/codex-wakeup

作为主要目录。

两个账号分别使用:

/var/lib/codex-wakeup/accounts/account1

/var/lib/codex-wakeup/accounts/account2

工作目录:

/var/lib/codex-wakeup/workspace

两个账号必须使用不同 CODEX_HOME。

迁移登录文件以后,重新设置 owner 和严格文件权限。

【第四步:账号认证】

优先使用迁移过来的登录状态。

分别检查 account1 和 account2 是否仍然有效。

如果有效,不要让我重新 OAuth。

只有下面情况才执行:

codex login --device-auth

- 无法访问旧登录状态
- 迁移失败
- codex login status 显示认证失效
- 实际调用 Codex 证明认证不可用

如果需要 Device Auth,把网址和验证码告诉我,然后暂停。

等我回复:

已完成,继续

再继续后面的部署。

【第五步:创建自动任务】

创建:

/usr/local/libexec/codex-wakeup-run

要求:

- account1 和 account2 依次执行。
- account1 失败以后,account2 仍然继续。
- 两个账号使用各自 CODEX_HOME。
- 请求尽量轻量,例如:

Reply OK only.

Codex 调用尽量使用:

--ephemeral
--skip-git-repo-check
--sandbox read-only
--ignore-user-config
--ignore-rules

工作目录:

/var/lib/codex-wakeup/workspace

然后创建:

codex-wakeup.service

codex-wakeup.timer

要求:

- service 使用 codex-wakeup 用户。
- timer 每小时执行一次。
- 开机自动启用。
- 保留合理的 systemd 安全限制。
- 不要为了省事取消 NoNewPrivileges。

【第六步:真实验证】

不要只创建文件。

必须真实执行一次:

codex-wakeup.service

并确认:

1. account1 实际调用成功。
2. account2 实际调用成功。
3. 日志能看到 Codex 的实际回复。
4. 能看到 tokens used。
5. timer 为 active / enabled。
6. 能看到下一次运行时间。
7. 一个账号失败不会阻止另一个账号。

如果日志出现:

401
451
ERROR

不要只看到这些词就判断失败。

继续检查后面是否仍然出现:

session id
Codex 实际回复
tokens used

以最终完整结果判断。

【第七步:迁移完成以后】

只有 VPS 上两个账号都真实执行成功,并且 timer 正常以后,才暂停原来的 Cockpit Tools 唤醒任务。

不要在 VPS 验证成功以前先删除旧任务。

【最后只告诉我】

- 迁移是否成功
- account1 是否正常
- account2 是否正常
- timer 是否 active / enabled
- 下一次运行时间
- 当前 Codex CLI 版本
- 实际使用模型
- 实际推理强度
- 创建或修改了哪些关键文件
- 原 Cockpit Tools 任务是否已经暂停
- 还有没有需要我本人处理的问题

如果遇到问题,优先自己检查和修复。

只有遇到必须本人处理的 OAuth、密码或云厂商控制台操作时,再停下来找我。

我实际部署时踩了 3 个坑

我实际部署时踩了 3 个坑
我实际部署时踩了 3 个坑

这一部分我觉得比复制 Linux 命令更重要。

因为你真的让 AI 去部署以后,最容易卡住的往往不是“大问题”,而是一些很小的细节。

第一个坑:脚本权限导致 203/EXEC

第一次运行 systemd 的时候,任务直接失败。

日志里出现:

203/EXEC
Permission denied

一开始看起来挺吓人,其实跟 Codex 账号完全没关系。

原因只是执行脚本权限设置错了。

脚本一开始是:

0700

只有 root 可以执行。

但 systemd service 使用的是:

codex-wakeup

专用账号,自然跑不了。

后来 AI 把权限改成:

0755

问题马上解决。

所以以后碰到:

203/EXEC

先查脚本路径和执行权限,不要上来就重装 Codex。

第二个坑:服务器上的 Codex CLI 太旧

第一次真实执行的时候,两个账号其实已经可以运行。

但 AI 发现服务器默认使用的模型和 Cockpit Tools 原任务不一样。

我原来的任务使用的是:

gpt-5.6-luna
low

服务器上的 Codex CLI 当时比较旧。

把模型强制改成原来的配置以后,反而执行失败。

后来检查才发现是 CLI 版本兼容问题。

AI 先备份旧版本,再升级 Codex CLI。

升级以后重新运行:

两个账号都正常返回:

OK

所以以后遇到:

Cockpit Tools 能用这个模型,但 VPS 上 Codex CLI 不能用

不要先怀疑账号。

先检查:

codex --version

再确认当前 CLI 是否支持这个模型。

第三个坑:日志里有 401 / 451,不一定真的失败

这个非常容易误判。

我的服务器日志里偶尔会看到:

401
451
ERROR

如果只看到这几个词,很容易以为任务挂了。

但继续往后看,却仍然有:

session id
OK
tokens used

说明最终请求其实成功了。

所以判断 Codex 唤醒任务有没有真正运行成功,不能只搜:

ERROR

而应该看完整执行结果。

最简单的方法就是:

最后有没有 Codex 实际回复,有没有 tokens used。

有的话,再结合 systemd 返回码判断。

VPS 跑通以后,再停本地 Cockpit Tools

VPS 跑通以后,再停本地 Cockpit Tools
VPS 跑通以后,再停本地 Cockpit Tools

这个顺序也很重要。

不要刚开始迁移,就先把 Cockpit Tools 里的原任务关掉。

正确顺序应该是:

旧 Cockpit Tools 任务继续保留
        ↓
VPS 部署
        ↓
迁移账号
        ↓
VPS 手动运行一次
        ↓
确认账号 1 成功
        ↓
确认账号 2 成功
        ↓
确认 timer active / enabled
        ↓
确认下一次运行时间
        ↓
再暂停本地任务

这样即使 VPS 中途部署失败,原来的任务还在,不会两边一起停掉。

怎么判断部署真的完成了?

怎么判断部署真的完成了?
怎么判断部署真的完成了?

不用看几十条日志。

最后我只检查这几件事:

account1:正常

account2:正常

timer:active / enabled

下一次运行时间:正常

如果还想再严谨一点,再确认:

Codex 实际回复:有

tokens used:有

这些都正常,主任务基本就完成了。

可选:再做一个网页日志看板

可选:再做一个网页日志看板
可选:再做一个网页日志看板

最开始我只是想解决:

电脑关机以后,Codex 还能不能继续自动唤醒?

systemd 已经把这个问题解决了。

后来我觉得,每次 SSH 上服务器看日志还是有点麻烦。

于是又让 AI 做了一个网页看板。

浏览器打开以后可以直接看到:

  • 最近一次运行时间。
  • 两个账号分别成功还是失败。
  • 使用的模型。
  • 推理强度。
  • 提示词。
  • Codex 回复。
  • Token。
  • 执行耗时。
  • 历史运行。
  • 下次运行时间。
  • 秒级倒计时。
  • systemd 原始日志。

还增加了:

立即执行

按钮。

不过这里我建议:

先把自动任务跑通,再做看板。

不要第一次部署就把所有东西都塞给 AI。

如果想让 AI 部署日志看板

如果想让 AI 部署日志看板
如果想让 AI 部署日志看板

可以继续发送:

刚才的 codex-wakeup 已经正常运行。

现在帮我增加一个独立的网页日志看板。

要求:

- 使用 Python 3。
- 程序放在 /opt/codex-dashboard/app.py。
- 使用独立系统用户 codex-dashboard。
- 不要使用 root 运行网页。
- 使用 HTTPS。
- 默认端口 8787。
- 页面需要登录保护。
- 页面能查看两个账号最近运行结果。
- 能查看历史执行。
- 能查看模型、推理强度、提示词、回复、Token 和耗时。
- 能看到下一次运行的北京时间,精确到秒。
- 显示剩余倒计时。
- 日志按照时间倒序,最新日志显示在最上面。
- 手机和电脑都要正常显示。
- 原始 systemd 日志默认折叠。
- 不要展示 OAuth Token、auth.json 或其他敏感信息。

再增加一个“立即执行”按钮。

安全要求:

- 网页程序不能获得任意 root / sudo / shell 权限。
- 保留 NoNewPrivileges。
- 网页只能创建一个固定的请求文件。
- 使用 systemd path unit 监听请求文件。
- root service 只能启动 codex-wakeup.service。
- 页面不能传入任意 shell 命令。
- “立即执行”需要二次确认。
- 加入登录和 CSRF 检查。
- 如果任务正在运行,不允许重复启动。

部署前:

先读取现有环境。

如果已有 app.py,先备份。

部署后必须真实验证:

- dashboard service 正常
- 登录正常
- 错误密码无法登录
- 两个账号结果展示正确
- 下次运行时间正确
- 日志为倒序
- “立即执行”真实运行成功
- 手机页面正常
- 浏览器没有明显 JavaScript 错误

最后只告诉我:

- 看板是否成功
- 访问地址
- 服务状态
- 端口是否已放行
- 是否需要我手动配置云安全组
- 有没有安全风险

这一步属于增强体验,不影响前面的自动唤醒任务。

最后再记住 6 件事

最后再记住 6 件事
最后再记住 6 件事

整篇教程里,我觉得真正值得记住的不是具体 Linux 命令,而是这 6 条。

1. 不要把 auth.json 发到聊天里

包括:

OAuth Token
refresh token
Session Secret
密码

都不要主动复制进去。

2. 两个账号必须使用不同 CODEX_HOME

例如:

account1
account2

必须完全分开。

否则两个账号的登录状态很容易互相覆盖。

3. 定时任务不要长期使用 root

专门创建:

codex-wakeup

用户来运行。

4. 先验证 VPS,再停旧任务

服务器没有真实跑通以前,原来的 Cockpit Tools 唤醒任务不要急着删。

5. 看板不要拿任意 sudo 权限

网页能显示日志,不代表它就应该获得 root。

如果需要“立即执行”,只给它一个固定、安全的触发入口。

6. AI 修改生产文件之前先备份

尤其是:

app.py
systemd 配置
运行脚本

先备份,再改。

出问题还可以直接回滚。

最后

我这次最大的感受其实不是:

我终于学会了 systemd。

恰恰相反。

这些东西我还是没有准备自己一点一点研究。

我真正做的是先把三件事情想清楚:

我要什么结果。

哪些东西 AI 不能乱碰。

最后满足什么条件才算真的成功。

然后把这些告诉 AI。

环境检查、账号迁移、SSH、权限、systemd、CLI 升级、日志排错、网页部署这些事情,让 AI 自己去处理。

以前做这种 VPS 项目,可能要对着教程复制几十条命令。

现在更适合 AI 小白的方式是:

我说清楚目标
        ↓
AI 检查环境
        ↓
AI 自己执行
        ↓
遇到必须人工授权时叫我
        ↓
AI 继续部署
        ↓
AI 自己验证
        ↓
最后把结果告诉我

会不会 Linux 已经没那么重要了。

更重要的是:

你能不能把目标、边界和验收标准说清楚,然后让 AI 真正把事情做完。

推荐文章

近期其他 VPS 优惠活动

AI 提示词

  1. 还在手写?Nano Banana Pro 完美解决 AI 中文乱码,这套「学霸笔记」咒语绝了!

AI 工具

  1. 龙虾大战8款产品全拆解,我用了一周OpenClaw,说点真话
  2. LibTV免费能用吗?我花了170万Token试了一下
  3. GLM-4.7 可以平替 Claude Code 的国产编码大模型
  4. 价值 $300 的 Google AI Pro,0 元白嫖12个月 Google Gemini 学生优惠完全指南(截止到 2026年1月31日)
  5. Google 羊毛:免费领 1 个月 Gemini 3、Nano Banana Pro 和 Veo 3 会员
  6. 12个免费白嫖 Nano Banana Pro 的方法,亲测有用
  7. 网盘拉新项目:打造没有天花板的被动收入(附资源+教程)
  8. Claude Code 进阶秘籍:手把手教你创建专属 Skills,效率翻倍!
  9. 干翻 Copilot?Chrome 这个隐藏功能,我踩坑 3 次终于开启了!(结尾有福利)

SEO+网站

  1. 8年博客的真实收入:月均40美元,RPM从2.8跌到0.9
  2. AI+网站+SEO 出海赚取第一桶金(第三课):如何购买便宜的 VPS 来搭建网站

你觉得这篇文章怎么样?

0
0
0
0

非常感激每一位打赏的朋友!

支付宝扫码支持
微信扫码支持

扫一扫,请博主喝咖啡☕

文章作者: 斌仔
文章链接: https://www.wangdu.site/course/2393.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文武科技柜

相关推荐

共有 0 条评论