部落格
在雲端 VM 或無顯示器 Linux 伺服器上執行 Claude Code,並用 iPhone 遠端控制
AI 代理可以跑在任何一台全天候運作的 Linux 機器上——雲端 VM、遠端開發機、Docker 容器——你的 iPhone 就是控制介面,不管身在何處都能連線。
繼續查看該欄目下的產品與工程更新。
瀏覽此分類大多數 Tactic Remote 使用者都是在自己寫程式的 Mac 上執行伺服器,這是最自然的起點。但執行環境不必是你的筆電,也不必放在你的桌子旁。
npx tacticremote 可在任何安裝了 Node.js 的 Linux 機器上執行——雲端 VM、遠端開發機、放在電視下方的無顯示器主機,或 Docker 容器。啟動之後,iOS 應用程式透過 Cloudflare Tunnel 連線,提供和區域網路一樣的 Chat Mode、Terminal Mode、Quick Prompts、推播通知以及一鍵核准功能。
本指南說明的正是這種用法:一個在遠端伺服器上持續執行的 AI 代理,以及一支可以在任何地方操控它的手機。
為什麼要在遠端伺服器上執行代理
把執行環境從筆電移走,有幾個好理由。
長時間任務不需要讓筆電插著電源。 耗時數小時的重構、大型測試套件執行,或探索性的程式碼工作階段,可能比你願意讓筆電一直開著的時間還長。雲端 VM 可以持續運作,你蓋上筆電,任務照樣繼續。
隨時用手機連線存取。 如果伺服器一直在線,出門前不需要先啟動它。打開 App,工作階段就在那裡。
接近 CI 的工作負載。 有些團隊使用 AI 代理來草擬修補程式、針對分支執行測試套件,或預先篩選 pull request。一台專用的 Linux 主機——獨立於個別開發者的機器之外——天然適合擔任這類任務的執行環境。
更充裕的運算資源。 將代理任務卸載到 CPU 或記憶體更多的機器,或是距離 API 端點較近的機器,可以縮短大型任務的實際完成時間。
不需要 Mac。 如果你的主力機器是 Windows 工作站,但手邊有 Linux 伺服器,就可以在那裡執行代理,仍然透過 iPhone 控制。
前置條件
在執行以下步驟之前,你需要準備:
- 一台可透過網路連線存取的 Linux 伺服器或 VM(任何發行版皆可;我們測試使用 Ubuntu 22.04 或更新版本)
- 已安裝 Node.js 16 或更新版本(執行
node --version確認) - 在該伺服器上安裝並登入你想使用的 AI 代理:
- Claude Code:依照 Anthropic 的安裝說明操作,然後執行
claude login - Codex:依照 OpenAI 的文件安裝並驗證身分
- Amp:依照 Amp 的文件安裝並登入
- Claude Code:依照 Anthropic 的安裝說明操作,然後執行
- 在你的 iPhone 上安裝 iOS 應用程式(App Store)
你不需要 Mac 選單列應用程式或 Windows 應用程式——那些是桌面用的選用 GUI 介面。在無顯示器的伺服器上,npx tacticremote 就是主機端所需的一切。
安裝並執行伺服器
npx tacticremote 會自動下載並執行伺服器,無需先進行全域安裝。在剛建立的伺服器上:
第一次執行時,會印出類似以下的內容:
對於遠端伺服器(沒有區域網路、沒有 mDNS),你將透過 Cloudflare Tunnel 連線。上面印出的 API Key 用來驗證你的 iPhone 身分。請複製它——配對時需要在應用程式中輸入。
如果你想指定特定版本而不是每次都拉取最新版:
使用 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而非 npx,也可以直接使用全域安裝的tacticremote執行檔路徑。 Environment=HOME這一行確保 Node/npm 能在正確使用者的家目錄下找到快取和全域套件,在透過 sudo 提權執行時尤其重要。
透過 Cloudflare Tunnel 從 iPhone 連線
在遠端伺服器上,沒有共用的區域網路,因此 mDNS 探索不適用。這種設定的連線方式是 Cloudflare Tunnel。
Tactic Remote 內建 Cloudflare Tunnel——不需要另外安裝 cloudflared 就能使用隧道。啟動伺服器時加上旗標即可啟用:
或者,如果你透過 systemd 執行,請更新 unit 檔案:
Cloudflare Tunnel 啟用後,伺服器會印出一個 trycloudflare.com 網址:
在 iPhone 上:
- 開啟 Tactic Remote
- 點選 Add Host,選擇 Manual
- 將
trycloudflare.com網址填入主機位址欄位 - 輸入伺服器輸出的 API Key
- 點選 Connect
連線透過 Cloudflare 進行端對端加密。你的程式碼和終端機輸出不會經過任何 Tactic Remote 雲端中繼——因為根本沒有這個東西。流量從伺服器傳到 Cloudflare 的邊緣節點,穿過隧道,直接抵達 iOS 應用程式。
若要建立永久設定,你可能會想使用綁定自有網域的具名 Cloudflare Tunnel,而非每次重啟都會改變的臨時 trycloudflare.com 位址,這樣配對網址就能在重啟後保持不變。詳情請參閱 Cloudflare Tunnel 設定指南。
安全性說明
在這種設定下——遠端伺服器、Cloudflare Tunnel、API Key——相關的安全特性如下:
- 伺服器的 8765 埠不需要對外開放。Cloudflare Tunnel 從你的伺服器向 Cloudflare 邊緣節點建立向外的連線,無需開放任何向內的埠。
- API Key 驗證意味著只有知道金鑰的裝置才能連線。請設定一個強健的金鑰,或使用隨機產生的那一組。
- 區域網路模式使用明文的
ws://。在遠端伺服器上你不會使用區域網路模式,因此這點不適用——Cloudflare Tunnel 的流量是 TLS 加密的。
如果你的伺服器位於私有 VPC 內,Cloudflare Tunnel 就是你不需要在防火牆上打洞就能連線的方式。
在伺服器上使用多個代理
遠端伺服器設定支援與本地 Mac 或 Windows 主機相同的代理選擇。在 iOS 應用程式中建立新的工作階段時,每個工作階段都有一個選擇器,讓你挑選 Claude Code、Codex 或 Amp——只要是安裝在伺服器上的代理都可以選。
每個工作階段彼此獨立。你可以同時讓一個 Claude Code 工作階段執行長時間的測試任務,以及一個 Codex 工作階段在不同的分支上工作。iOS 應用程式可以在它們之間切換。
在這種設定下,推播通知同樣可以運作。當代理完成任務、暫停等待核准或意外結束時,你的 iPhone 會收到通知。對於那些你偶爾查看而非持續盯著的長時間任務,這是最關鍵的功能——你不需要一直開著 App。
在 Docker 中執行
如果你的伺服器環境是基於 Docker,可以在容器內執行 npx tacticremote。主要注意事項如下:
- 容器需要安裝並驗證代理(Claude Code、Codex、Amp)
- 如果使用區域網路模式,需要對外公開 8765 埠(Cloudflare Tunnel 則不需要)
- 使用 Cloudflare Tunnel 時,容器需要有向外的網路存取權限
- 容器內的程序管理(使用 CMD 或監控工具,而非 systemd)
最簡化的 Dockerfile 片段:
代理的持久化驗證資料(例如 Claude Code 的 ~/.claude 目錄)應掛載為磁碟區,這樣在容器重啟後才不會遺失。
注意事項
代理仍然需要在伺服器上有效的憑證。 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。
tmux 用於 Linux 上的工作階段持久性。 請確認 tmux 已安裝(apt install tmux 或對應指令)。若缺少 tmux,工作階段在重新連線後將無法持久保留。
iOS 應用程式的免費方案完全可以支援這種設定。 Chat Mode、Terminal Mode、推播通知和多代理功能在免費版都有提供。Pro 方案增加了額外功能。定價:免費 / Pro 每月 $2.99 / 每年 $19.99。
在全天候運作的伺服器上執行代理,是遠端控制模式效益最高的用法:代理在夜間繼續工作、在開會時繼續工作、在搭機時繼續工作,而你的手機是你隨時查看進度的窗口。
如果這是你第一次設定,先從基本的 npx tacticremote --tunnel --api-key YOUR_SECRET_KEY 開始,確認從 iPhone 到伺服器的端對端連線正常,再加上 systemd 服務來提升可靠性。