在笔记本上运行 Codex 没问题,直到任务时长超过你合上屏幕的时间。一次大型重构、一次夜间代码审查、或一套要跑一小时的测试,都需要一台始终在线、保持干净 checkout、并且不在乎你连的是哪个 Wi-Fi 的机器。
这台机器通常就是一台小型 VPS。本指南是我们在一台全新的 Ubuntu 24.04 服务器上会手动完成的设置:选好配置、做好加固、安装 Codex CLI、无浏览器登录、保持会话不中断,以及在不把 SSH 暴露到公网的前提下访问它。
Codex 对 VPS 的要求
模型运行在 OpenAI 那边,所以 VPS 上的 Codex CLI 主要是一个终端客户端,再加上你的仓库要做的事:安装依赖、构建、测试。OpenAI 的安装文档列出的 Linux 要求是 Ubuntu 20.04+ 或 Debian 10+,内存最低 4 GB、推荐 8 GB,Git 2.23+ 为可选但推荐。
这与我们自己的 agent 所用配置一致:
| 最低 | 推荐 | 原因 | |
|---|---|---|---|
| CPU | 2 vCPU | 4 vCPU | 用于你的构建和测试,而不是模型 |
| 内存 | 4 GB | 8 GB | OpenAI 对 CLI 的官方推荐 |
| 磁盘 | 50 GB | 150 GB | 仓库、node_modules、构建缓存、日志 |
| 系统 | Ubuntu 24.04 | Ubuntu 24.04 | 当前 LTS,Codex 和 Tailscale 都支持 |
一台 VPS 只跑一个 Codex 工作负载,是无聊但安全的选择。任务出了问题,影响范围也只是一台可以随时清空重建的小机器。
第 1 步:创建非 root 用户
全新的 VPS 镜像通常直接给你 root。不要用 root 运行一个会改文件、执行命令的 agent。创建一个专用用户,并把你的 SSH 公钥复制过去:
# as root, once
adduser codex
usermod -aG sudo codex
mkdir -p /home/codex/.ssh
cp ~/.ssh/authorized_keys /home/codex/.ssh/
chown -R codex:codex /home/codex/.ssh
chmod 700 /home/codex/.ssh
chmod 600 /home/codex/.ssh/authorized_keys在关闭 root 会话之前,先在另一个终端里以 codex 用户登录确认。后面的所有操作都以这个用户执行。
第 2 步:安装 Codex CLI
OpenAI 为 macOS 和 Linux 提供独立安装脚本,所以服务器上不需要 Node.js。先装基础软件包,再装 Codex:
sudo apt update && sudo apt install -y git tmux curl
curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version如果你本来就在服务器上维护 Node,npm install -g @openai/codex 是另一种官方方式。两种方式都写在 openai/codex 的 README 和 Codex CLI 文档里。
第 3 步:登录——ChatGPT 套餐还是 API key
第一次运行 codex 时会提供 Sign in with ChatGPT。在笔记本上这会打开浏览器;VPS 上没有浏览器,所以 OpenAI 的认证文档给出了三种方式:
设备码(无界面服务器首选)。 该功能处于 beta 阶段,需要先在 ChatGPT 的安全设置中启用:
codex login --device-authSSH 端口转发。 登录回调监听在 localhost:1455。从笔记本转发这个端口,然后在本地浏览器中打开终端打印的地址:
# on your laptop
ssh -L 1455:localhost:1455 codex@your-vps
# then, inside that SSH session
codex loginAPI key。 通过管道传入,而不是粘贴到 shell 历史里:
printenv OPENAI_API_KEY | codex login --with-api-key选哪种主要是计费问题。Codex 包含在 ChatGPT 的 Free、Go、Plus、Pro、Business、Edu 和 Enterprise 套餐中,使用额度取决于套餐;而 API key 则按 API 价格逐 token 计费。具体算账见Codex 订阅 vs API 成本。
无论选哪种,Codex 都会把凭据缓存在 ~/.codex/auth.json(或操作系统的凭据存储)中。OpenAI 建议像对待密码一样对待这个文件:不要提交到仓库,不要贴进工单,也不要在聊天里分享。
第 4 步:用 tmux 和 systemd 保持会话不中断
笔记本休眠时 SSH 会话就会断开,Codex 在里面做的事情也随之终止。交互式工作请在 tmux 中运行 Codex:
tmux new -s codex
cd ~/work/project
codex
# detach with Ctrl-b then d; later, from any machine:
tmux attach -t codex对于周期性任务,干脆不用终端。codex exec 以非交互方式运行,把最终回答输出到 stdout,默认使用只读沙箱,需要用 --sandbox workspace-write 显式允许修改(见非交互模式文档)。用 systemd timer 就能把它变成夜间任务:
# /etc/systemd/system/codex-nightly.service
[Unit]
Description=Nightly Codex review
[Service]
Type=oneshot
User=codex
WorkingDirectory=/home/codex/work/project
ExecStart=/bin/bash -lc 'codex exec --sandbox workspace-write "review the last day of commits and write findings to REVIEW.md"'
# /etc/systemd/system/codex-nightly.timer
[Timer]
OnCalendar=*-*-* 03:00
Persistent=true
[Install]
WantedBy=timers.targetsudo systemctl daemon-reload
sudo systemctl enable --now codex-nightly.timer这两种模式我们在长时间运行的 Codex 任务和Codex CLI 后台任务中有更详细的介绍。
第 5 步:安全地访问 VPS
22 端口对全网开放的 VPS,几分钟内就会遭到暴力破解尝试。而一台存放着 agent 和你的 Codex 凭据的 VPS,更是不能在这里出错。
我们做三件事:
-
只用密钥。 在
/etc/ssh/sshd_config中设置PasswordAuthentication no和PermitRootLogin no,然后执行sudo systemctl restart ssh。 -
加入私有网络。 安装 Tailscale,把服务器接入你的 tailnet:
curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up -
关闭公网端口。 确认可以通过服务器的 Tailscale IP 用 SSH 登录后,只允许 Tailscale 网卡上的入站流量:
sudo ufw allow in on tailscale0 sudo ufw enable
第 3 步请在已经走 tailnet 的会话中执行,否则会把自己锁在外面。服务商的网页控制台是你的应急入口。之后日常的 SSH 工作流见Codex SSH 远程工作流。
第 6 步:保持 Codex 更新
Codex 更新很频繁。官方文档给出的独立安装更新方式是重新运行安装脚本;如果用 npm 安装,就重新安装这个包:
curl -fsSL https://chatgpt.com/codex/install.sh | sh
# or, if you used npm
npm install -g @openai/codex系统也要更新:定期执行 sudo apt update && sudo apt upgrade,或启用 unattended-upgrades 自动安装安全补丁。
费用
| 项目 | 你需要支付 | 说明 |
|---|---|---|
| VPS | 服务商的月费 | 4 vCPU / 8 GB 的入门套餐足够跑一个 agent |
| 通过 ChatGPT 套餐使用 Codex | 你现有的套餐 | 使用额度取决于套餐 |
| 通过 API key 使用 Codex | 按 token 的 API 价格 | 只有限制用量时才可预测 |
| Tailscale | 个人使用免费 | Personal 套餐即可 |
对大多数人来说,用 ChatGPT 套餐在 VPS 上跑一个 agent 更便宜;API key 更适合 CI 或突发性的自动化。如果你想并行运行多个 agent,请看如何运行多个 Codex agent。
或者让 Office Claws 来完成这些步骤
上面的所有步骤,Office Claws 都能自动完成。你只需准备一台位于你自己 Contabo 账户中的全新 Ubuntu 24.04 VPS 和一个 Tailscale auth key,然后运行:
officeclaws onboard --name Mona
officeclaws connect-codexonboard 会添加专用 SSH 密钥、创建独立用户、开启防火墙、防暴力破解保护和自动安全更新、禁用密码和 root 登录、把服务器接入你的 tailnet、关闭公网 SSH,并启动 agent,通常需要 5–10 分钟。connect-codex 通过 OpenAI 官方登录把 agent 连接到你的 ChatGPT 套餐——不需要 API key,也没有按 token 计费的账单。
坦白说明取舍:你得到的是一个可以通过 CLI 或 Telegram 对话、并支持定时任务的 agent,而不是一个由你自己写脚本驱动的原生 Codex 终端。Office Claws 价格为 $4.99/月;VPS 由 Contabo 直接向你收费。完整步骤见快速开始。
建议
从一台 VPS、一个用户、一个运行在 tmux 中的 Codex 会话开始。先让设备码登录跑通,关闭公网 SSH 端口,然后再添加 timer 或第二个 agent。如果不想自己折腾这些设置,就交给 Office Claws,把时间花在真正的任务上。
延伸阅读:
- Codex SSH 远程工作流——VPS 跑起来之后的日常 SSH 操作
- 长时间运行的 Codex 任务——工作持续数小时时,持久会话为什么重要
- Codex CLI 后台任务——在不挂终端的情况下运行 Codex
- 如何运行多个 Codex agent——从一台 VPS 扩展到一个小团队
- Codex 订阅 vs API 成本——VPS agent 适合哪种 Codex 计费方式