自托管iTerm2Buddy中继服务器,手机远程连接Mac终端速度提升15倍

iTerm2 Buddy 是一款通过 iOS 连接 macOS iTerm2 的工具,但默认公共中继服务器导致连接延迟。本文介绍如何自托管中继服务器,将局域网及异地连接速度从 15 秒缩短至 1 秒,...

互联网/IT

在远程办公和跨设备协作日益普及的今天,终端工具的效率直接影响生产力。iTerm2 Buddy 作为 iTerm2 官方推出的 iOS 应用,允许用户通过手机实时控制 Mac 上的终端窗口,实现无缝衔接的工作流。然而,默认情况下,iTerm2 Buddy 使用公共中继服务器(如 relay1.iterm2.com),这种全球范围内的数据转发机制带来了显著的延迟问题。

以青小蛙的实际体验为例,在外使用 5G 网络连接家中的 iTerm2 时,从启动 iTerm2 Buddy 到成功建立连接需要至少 5 秒,其中包含了加密握手等步骤。这种延迟不仅影响操作流畅性,也降低了用户体验。为解决这一痛点,开发者社区提供了开源的中继服务器解决方案:iterm2-companion-relay,其核心原理是通过 WebSocket 在 Mac 和手机之间建立直接连接,由中继服务器负责转发加密数据,而无需经过公共网络节点。

为了实现更快速、稳定的连接,自托管中继服务器成为一种理想选择。这种方法的优势在于:本地化部署可以避免跨国数据传输带来的延迟;同时,中继服务器本身不存储明文数据,确保了安全性。以下是基于群晖 NAS 的完整部署指南:

首先,需要准备以下条件:公网 IP 地址、一台 Linux 服务器(如群晖 NAS)、域名用于创建 TLS 证书、以及具备 Docker 和证书目录访问权限的 SSH 账号。接下来,按照以下步骤操作:

  • 建立部署目录:在群晖 NAS 上创建 /volume1/docker/iterm2-relay-nas 目录,并下载官方源码。如果 NAS 未安装 Git,可先在电脑上克隆代码库后再传输至 NAS。
  • 文章配图
  • 配置 Docker 环境:在部署目录下创建 Dockerfile 文件,指定 Node.js 24 版本构建依赖,并确保最终容器以普通用户运行。
  • 生成 TLS 证书:使用支持 DNS 验证的域名生成覆盖 Relay 域名的 TLS 证书,确保 iOS 和 macOS 系统信任该证书。
  • 启动服务:通过 Docker Compose 启动 iterm2-companion-relay 服务,并验证 WebSocket 升级功能。
  • 完成上述步骤后,回到 Mac 端运行两条命令,然后使用 iTerm2 Buddy 扫描二维码配对设备。经过对比测试,自托管中继服务器将异地连接时间从 15 秒缩短至 1 秒以内,局域网内更是几乎无延迟。

    值得注意的是,虽然自建中继服务器显著提升了连接速度,但它并不会增加 iTerm2 Buddy 的客户端功能,例如新建终端标签页等。此外,该方案已在 x86_64 架构的群晖上验证通过,其他 NAS 架构可能需要额外适配。

    图中展示了自托管 iTerm2 Buddy 中继服务器后的显著性能提升:手机远程操作 Mac 终端的速度从 15 秒缩短至 1 秒,同时强调了将中继服务器部署到群晖 NAS 的可行性。这一改进不仅解决了公共中继服务器的延迟问题,也为希望提升工作效率的用户提供了实用的解决方案。