博客
在云虚拟机或无头 Linux 服务器上运行 Claude Code,并用 iPhone 远程控制
智能体可以跑在任何一台长期在线的 Linux 机器上——云虚拟机、远程开发机、Docker 容器——iPhone 变成控制界面,无论你身在何处。
继续查看该栏目下的产品与工程更新。
浏览此分类大多数 Tactic Remote 用户都把服务端跑在自己写代码的那台 Mac 上。这是最自然的起点。但主机不一定非得是你的笔记本,也不一定非得在你旁边。
npx tacticremote 可以跑在任何一台有 Node.js 的 Linux 机器上——云虚拟机、远程开发机、电视柜下的无头小主机,或者 Docker 容器。服务跑起来之后,iOS app 通过 Cloudflare Tunnel 连接,你就能获得和局域网模式一样的 Chat Mode、Terminal Mode、Quick Prompts、推送通知和一键审批。
本文讲的就是这种配置:智能体持续跑在远端服务器上,手机从任意地方控制它。
为什么要把智能体跑在远端服务器上
把主机从笔记本迁移出去,有几个实际理由。
长任务跑通宵,不用让笔记本一直插着电。 一个几小时的大型重构、大规模测试、或者探索性编码任务,很容易超出你愿意开着盖子等待的时间。云虚拟机一直在跑,你关上笔记本,任务继续。
手机随时能接入,不用每次先启动服务。 服务器常驻,不需要出门前先手动启动。打开 app,会话就在那里。
CI 周边的任务。 有些团队用 AI 智能体来起草补丁、对分支跑测试,或者预审 Pull Request。一台专用的 Linux 服务器——独立于开发者个人机器——是这类任务的自然归宿。
资源更充裕。 把任务卸载到 CPU/内存更大的机器上,或者更靠近 API 端点的机器上,可以缩短大型任务的实际耗时。
不需要 Mac。 如果你主力机是 Windows 工作站,但有一台 Linux 服务器,完全可以把智能体跑在那台服务器上,再从 iPhone 操控。
前提条件
在跟着下面步骤操作之前,你需要准备:
- 一台能被公网访问的 Linux 服务器或虚拟机(发行版不限;我们主要测试 Ubuntu 22.04+)
- Node.js 16 或更高版本(用
node --version确认) - 在服务器上安装并登录你要使用的 AI 智能体:
- Claude Code:按 Anthropic 的安装说明,再运行
claude login - Codex:按 OpenAI 文档安装并完成认证
- Amp:按 Amp 文档安装并登录
- Claude Code:按 Anthropic 的安装说明,再运行
- iPhone 上已安装 iOS app(App Store)
在无头服务器上,Mac 菜单栏 app 或 Windows app 都不需要——那两个是桌面端的图形界面。服务端只需要 npx tacticremote 就够了。
安装并运行服务端
npx tacticremote 会直接拉取并运行服务端,不需要全局安装步骤。在一台全新服务器上:
首次运行时会打印类似这样的输出:
对于远端服务器(没有共享局域网,没有 mDNS),连接方式是 Cloudflare Tunnel。上面打印的 API Key 就是用来验证你的 iPhone 身份的——记下来,配对时在 app 里输入。
如果想锁定特定版本而不是每次都拉最新:
用 systemd 保持服务常驻
在 shell 里直接跑 npx tacticremote 能让服务起来,但 shell 会话结束时进程也就没了。要让它作为正式的后台服务——开机自启、崩溃自动重启——就需要 systemd。
创建一个 unit 文件。把 youruser 替换成应该拥有该进程的 Linux 用户,WorkingDirectory 也可以调整为你想让智能体在其中工作的项目目录。
启用并启动:
随时查看日志:
几点关于 unit 文件的说明:
After=network-online.target确保网络就绪后再启动服务,开机时 Cloudflare Tunnel 需要出站连接,这个顺序很重要。Restart=on-failure配合 5 秒延迟,让服务在遇到偶发错误时自动恢复,又不会在紧密循环里一直重启。- 如果
npx不在/usr/bin/npx,用which npx查出正确路径并更新ExecStart。如果你更倾向于npm install -g tacticremote做全局安装,也可以直接在 unit 文件里写tacticremote的完整路径。 Environment=HOME那行确保 Node/npm 能在正确用户的 home 目录下找到缓存和全局包,在 sudo 提权场景下偶尔会出问题,加上这行可以避免。
通过 Cloudflare Tunnel 连接 iPhone
远端服务器没有共享局域网,mDNS 发现不管用。这种配置下的连接方式是 Cloudflare Tunnel。
Tactic Remote 内置了 Cloudflare Tunnel 支持,不需要单独安装 cloudflared。启动服务端时加上标志即可开启:
如果通过 systemd 运行,更新 unit 文件:
Cloudflare Tunnel 激活后,服务端会打印一个 trycloudflare.com 地址:
在 iPhone 上:
- 打开 Tactic Remote
- 点击 添加主机,选择手动
- 把
trycloudflare.com地址填入主机地址 - 填入服务端打印的 API Key
- 点击连接
连接通过 Cloudflare 端到端加密。你的代码和终端输出不会经过任何 Tactic Remote 的云中继——因为根本不存在这样一个中继。流量从服务器发往 Cloudflare 边缘节点,穿过隧道直接到达 iOS app。
如果想要持久化配置(让 URL 在服务重启后保持不变),可以使用绑定到自有域名的命名 Cloudflare Tunnel,而不是临时的 trycloudflare.com 地址。详见 Cloudflare Tunnel 配置指南。
安全说明
在这种配置下——远端服务器、Cloudflare Tunnel、API Key——安全属性如下:
- 服务端的 8765 端口不需要对公网开放。Cloudflare Tunnel 从你的服务器向 Cloudflare 边缘节点发起出站连接,不需要暴露任何入站端口。
- API Key 认证意味着只有知道 Key 的设备才能连接。建议使用足够强的 Key,或者直接用随机生成的那个。
- 局域网模式使用明文
ws://。在这个远端服务器场景下你不走局域网模式,所以不涉及这个问题——Cloudflare Tunnel 流量是 TLS 加密的。
如果你的服务器在私有 VPC 里,Cloudflare Tunnel 就是在不开防火墙入站口的前提下访问它的方式。
在服务器上使用多个智能体
远端服务器配置支持和本地 Mac 或 Windows 主机一样的智能体选择。在 iOS app 里新建会话时,每个会话独立选择后端智能体——Claude Code、Codex 或 Amp,取决于服务器上装了哪些。
各会话相互独立。你可以同时跑一个 Claude Code 会话做长任务,再跑一个 Codex 会话在另一个分支上——iOS app 在它们之间切换自如。
推送通知在这种配置下同样有效。智能体完成任务、暂停等待审批、或异常退出时,iPhone 会收到通知。对于那些你偶尔去查看而不是一直盯着看的长任务,这是最关键的体验——不需要一直打开 app。
在 Docker 中运行
如果你的服务端环境是基于 Docker 的,可以在容器里跑 npx tacticremote。主要注意事项:
- 容器里需要安装并认证智能体(Claude Code、Codex、Amp)
- 如果用局域网模式,需要暴露 8765 端口(Cloudflare Tunnel 不需要)
- Cloudflare Tunnel 需要容器有公网出站访问
- 容器内进程管理用 CMD 或 supervisor,不用 systemd
一个最简 Dockerfile 片段:
智能体的持久化认证信息(比如 Claude Code 的 ~/.claude 目录)应该挂载为 volume,确保容器重启后不丢失。
注意事项
智能体仍然需要在服务器上独立完成认证。 npx tacticremote 不处理 Claude Code、Codex 或 Amp 的认证。这些智能体必须在服务器上安装并登录完毕,Tactic Remote 才能启动它们的会话。
Cloudflare Tunnel 有少量延迟开销。 交互式使用时通常感觉不到(大多数区域低于 100ms)。对于高吞吐量的终端输出会稍微明显一些。如果手机和服务器在同一网络下,局域网模式更快;但远端场景下局域网模式不可用。
Node.js 版本有要求。 最低 Node 16,推荐 Node 20 LTS。用 node --version 确认。
npx 首次运行会下载包。 如果服务器有严格的出站限制,需要把 npm 注册表加入白名单。或者用 npm install -g tacticremote 做全局安装,再在 systemd unit 文件里直接写 tacticremote。
Linux 上用 tmux 做会话持久化。 确认 tmux 已安装(apt install tmux 或对应发行版的命令)。没有 tmux,断线后会话不会持续。
免费版就能跑这套方案。 Chat Mode、Terminal Mode、推送通知、多智能体选择在免费版都可以用。Pro 提供额外功能。定价:免费版 / Pro 每月 $2.99 / 每年 $19.99。
把智能体跑在长期在线的服务器上,是远程控制模式效用最大的玩法:智能体通宵工作、在你开会时工作、在你坐飞机时工作,手机是你随时查看的窗口。
如果你是第一次配置,先从最简单的 npx tacticremote --tunnel --api-key YOUR_SECRET_KEY 开始,确认 iPhone 能端到端连通,再加上 systemd 服务来保证稳定性。