一次典型的「够不着」事故

正常流程很简单:Tailscale 连上,SSH 进去,tmux attach 恢复会话,两分钟搞定。但这次 Mac mini 上没装 Tailscale,直接断了「回家的路」。

好在家里还有一台 Mac Studio 装了 Tailscale,而且它和 Mac mini 在同一个局域网。思路就变成了跳板:

[酒店 WiFi] → Tailscale → [Mac Studio] → 局域网 SSH → [Mac mini]

三步走:连上 Mac Studio,跳到 Mac mini,tmux attach 恢复会话。服务还在,只是进程异常退出了,重新跑一遍 uvicorn main:app --reload,搞定。整个过程不到五分钟。

但如果没记那个局域网 IP,这五分钟就会变成「等回家再说」。

复盘:三个「恰好」暴露的系统性问题

这次能救回来,说白了是运气好——三个条件恰好都满足:

  • Mac Studio 恰好装了 Tailscale,两台都没装的话彻底没辙
  • 恰好记了 Mac mini 的局域网地址,没记的话跳板也没用
  • 服务恰好跑在 tmux 里,如果跑在前台,SSH 一断进程就没了

缺任何一个都救不回来。这让人意识到一件事:备份不只是数据,还有「回家的路」

出门前的远程基建清单

马上要放假了,家里有跑着服务的机器?花半小时把下面这些配好,省得到时候干着急。

Tailscale:外网回家的钥匙

至少在一台机器上装好,这是从外面连回家的通道。配好之后不管在哪,ssh jimmylv-studio 直接连,不用折腾端口转发那些破事。

局域网地址:记下来,别等用的时候翻箱倒柜

macOS 有个叫 Bonjour(mDNS)的东西,局域网设备会自动广播主机名,格式是 主机名.local。查当前机器主机名:

scutil --get LocalHostName

IP 也记一份,.local 偶尔抽风。最简单的查法:按住 Option 点菜单栏 WiFi 图标,IP 直接显示。建议在笔记里维护一张设备表——主机名、IP、用途,关键时刻真的能救命。

SSH Config:别每次都敲一堆参数

~/.ssh/config 里配好 ProxyJump,一条命令直达目标机器,不用先连 A 再连 B,SSH 自己帮你跳。

Tmux:进程保命符

远程跑服务,一定要用 tmux。不然 SSH 一断,进程跟着没了。tmux 的会话是独立的,断开 SSH 后进程照样跑,下次连回来 tmux attach 就行。

两个自动化小技巧值得配上:

一键启动脚本:在机器上放个 start-fastapi.sh,会话存在就连,不存在就创建。

.zshrc 自动进 tmux:SSH 连进来自动进入 tmux,防止忘了手动开。这样就算脑子短路忘了敲 tmux,也不会裸奔。

手机 + AI:躺着把活干了

这次救火全程在手机上完成,这才是最值得说的部分。

Termius 是手机上的 SSH 客户端,试过好几个,这个最顺手。提前把 Host、Username、Password 配好,出门在外一键连。

但真正的杀手锏是 Claude Code。连上 SSH 后,在那个小屏幕上敲命令实在太痛苦——手指头比按键还粗。所以提前在服务器上配好了 Claude Code 的全自动模式(--dangerously-skip-permissions),这个模式下它自己执行命令不用逐个确认。

就说了一句「帮我看一下 fastapi 服务为什么挂了,重启一下」,它直接开干——查日志、定位问题、重启服务,一气呵成。

再配上语音输入工具 Typeless,整个流程变成:

语音 → Typeless → Claude Code → 服务重启

躺在酒店床上,娃在旁边睡觉,用语音指挥 AI 修服务器。说是「赛博度假」一点不夸张。

独立开发者的远程基建最小集

这次虚惊一场,但也暴露了一个问题:很多独立开发者的远程基建是「能用就行」的状态,出了事才发现是刚需。

完整清单其实不复杂:

  1. Tailscale 装好,至少覆盖一台机器
  2. 局域网地址记下来(.local + IP)
  3. SSH config 配好 ProxyJump
  4. 服务跑在 tmux
  5. 手机装好 Termius
  6. Claude Code 自动模式备着

说到底,一人公司的「基础设施」不只是代码和服务器,还包括你在任何地方、任何设备上都能接管控制的能力。Claude Code 这类 AI 工具的真正价值,不是替你写代码——是在你只有一块手机屏幕的时候,把你从「敲命令」的苦差事里解放出来,让你用自然语言就能完成运维操作。趁还在家,花半小时把这些配好,别等出了事才想起来。