今天,TSM Travel 安卓客户端正式发布。原本只能挂在电脑或 NAS 上的内网穿透客户端,现在可以装进一台手机里——包括那台已经闲置两三年、卖二手不值钱、扔了又可惜的旧安卓机。
这也是我们做安卓端最直接的动机:家庭里最不缺的设备,是抽屉里的旧手机。
一个很典型的用法是这样的:旧手机上装一个 AList Lite,把网盘和局域网共享挂上去;再打开 TSM Travel 安卓客户端,把 AList 的 5244 端口映射到公网;之后在办公室、在通勤路上、在外地出差,用浏览器打开自己的域名,就能取到家里那台手机里的文件。
整条链路里,公网一侧只需要一台 1 核 1G 的小服务器。家里不需要公网 IP,不需要动路由器的端口映射,也不需要有人在电脑前守着——手机插着电、连着 Wi-Fi,它就是一台 7×24 的存储节点。
旧手机其实很适合承担这类任务:屏幕常年熄着,功耗通常只有两三瓦;自带电池,等于自带一块 UPS,短暂停电也不会断线;存储普遍 128G 起步,512G、1T 的机型也不少见。这些条件凑在一起,已经是一台 NAS 该有的样子——它不需要再添置任何设备,装好 AList Lite,就是一台能放在家里、却能在任何地方打开的存储服务器。
客户端把「常驻」这件事做扎实了:内核以独立进程运行,界面只负责下发配置和展示状态,退到后台、锁屏、切换 Wi-Fi 与蜂窝网络,都不会把隧道带走。断线之后自动重连,重连了几次,状态页上写得明明白白。
界面一共四页,没有多余的东西。
状态页给出连接状态、在线隧道数、TLS 版本、上下行流量、工作连接与重连次数,一个红色按钮随时掐断内核;
隧道页用列表管理每一条映射,左边是内网地址、右边是公网端口,开关一拨就生效;
日志页把每一次隧道生效、每一次握手、每一次内核启动,都按时间戳记下来,出问题不用靠猜;
设置页只有四项:服务端地址、控制端口、token、客户端标识。

TLS 1.3 是默认开启的。日志里会直说一句实话:未配置任何证书校验时,链路存在中间人风险。所以我们把服务端证书指纹放进了设置页,填一次,之后每次连接都会核对。能跑,但不假装安全——这是我们希望保持的态度。
客户端标识(client_id)是这台手机在服务端上的身份。换机、重装时把它填回去,服务端仍然认得它;两台手机共用同一个标识,后连上的会把前一个顶掉,这一点在日志里同样看得到。
AList Lite 负责把各种存储源统一成一个入口,TSM Travel 负责把这个入口安全地送到公网。两者叠加,一台旧手机的剩余价值被重新兑现,而成本几乎为零。
客户端与开源仓库同步发布,安卓 7.0 及以上可用。下载地址与部署文档见官网首页。
如果你家里正好躺着一台开不了机、也卖不掉的旧手机,不妨先给它插上电。