开发者纷纷转向的开源 ngrok 替代方案 (zrok)

BBetter Stack
Internet TechnologySmall Business/StartupsComputing/Software

Transcript

00:00:00在理想的世界中,分享 localhost 应该很容易,但不知为何它却变成了一件
00:00:05麻烦事。
00:00:06你打开 ngrok,触发限制,得到一个随机 URL,原本只需 10 秒就能搞定的事情
00:00:11却把一切都搞砸了。
00:00:12或者更糟的是,你需要与某个人分享一些内容,但你不想将其
00:00:16公开。
00:00:17这就是 zrock。
00:00:18它是 ngrok 的开源替代品,基于 OpenZiti 构建并内置零信任架构,现在越来越多的
00:00:24开发者正在转向它,因为它解决了隧道技术中最糟糕的部分。
00:00:33那么,什么是 zrock?
00:00:34简单来说,它让你能公开或私密地分享本地应用、文件,甚至 TCP 和 UDP 服务,
00:00:40而无需开启端口、动你的路由器,也不需要公网 IP。
00:00:45一切都是端到端加密的,所以它的理念是你可以在不暴露多余内容的前提下,
00:00:50只暴露你真正需要的部分。
00:00:52它是免费的,支持自托管,由于它构建在零信任网格之上,除非你愿意,
00:00:58否则你的流量不会接触公网。
00:01:01而且它也更加丝滑,这也是我喜欢它的原因。
00:01:03比如自定义域名、更好的性能,以及全新的 UI。
00:01:07但如果速度不快,这些都不重要,所以让我演示给你看。
00:01:10如果你喜欢能加速工作流的开源工具和编程技巧,请务必订阅
00:01:15Better Stack 频道。
00:01:16我们经常会发布新视频。
00:01:18好了,环境已经清理,我有一个简单的 Next.js 应用运行在 localhost。
00:01:23没什么复杂的,就是基础的默认页面。
00:01:26你可能觉得这需要几个步骤,对吧?
00:01:30端口、配置,可能还有一些设置,但请看这个。
00:01:34首先,我确保我的 zrock 环境已经启用。
00:01:37通过 zrock enable 进行一次性设置。
00:01:40然后,我可以在这里运行一条命令。
00:01:44真的就是这样。
00:01:45没有配置文件,没有额外的设置,瞬间你就能得到一个公网 HTTPS URL。
00:01:51我可以在这里打开它,没错,它就能用了。
00:01:55应用已经在互联网上实时运行了。
00:01:57没有端口转发。
00:01:58没有防火墙变更。
00:02:00到这一步它是公开的,但这也是容易出问题的地方。
00:02:05所以我们停止它。
00:02:06Ctrl+C。现在让我们来操作大多数开发者真正想要的版本。
00:02:10zrock share private localhost,同样的应用,同样的机器,但现在行为完全不同。
00:02:17我们得到的不是公网 URL,而是一个令牌(token),这是核心区别,
00:02:23因为现在的访问权限并没有直接开放。
00:02:25而是通过使用这个令牌来授予。
00:02:28所以任何我信任的人都可以使用我给他们的令牌运行 zrock access private,
00:02:34只有在那之后他们才能访问。
00:02:36没有机器人扫描你的端点,没有随机流量撞击你的应用,完全没有这些。
00:02:42只有受控的访问。
00:02:44所以你不是在暴露你的应用,而是根据你的意愿有选择地允许访问,
00:02:49这就是这两者之间的巨大区别,而且它不仅适用于应用。
00:02:53同样的理念也适用于文件和文件夹。
00:02:56我可以使用 backend mode drive 将整个目录作为可浏览的驱动器分享。
00:03:02这不仅仅是隧道技术,这是受控的分享。
00:03:04这就是 zrock 真正带给我们的东西。
00:03:06那么,为什么这一切都很重要?
00:03:08因为大多数隧道工具都会强迫你做出权衡。
00:03:12ngrok 很精致,但免费层级限制很多。
00:03:15Cloudflare 隧道很棒,但伴随着复杂的设置和额外步骤。
00:03:19Tailscale 很好,但如果你只想快速分享,可能会觉得大材小用。
00:03:24所以你最终要在速度、隐私和控制之间做选择,而这正是 zrock 解决的问题。
00:03:29无需防火墙设置,太棒了。
00:03:32没有 NAT 问题,很好。
00:03:35私密分享是真的私密,这正是我们想要的。
00:03:38支持 UDP,适用于游戏服务器、VOIP、物联网,还有内置的文件分享。
00:03:44这是日常开发工作。
00:03:46Webhook 测试,对吧?
00:03:48所有这些事情我们都可以很好地利用 zrock 来完成。
00:03:52现在快速对比一下 zrock 和 ngrok。
00:03:54ngrok 感觉像是一个精致的商业产品,因为它确实是。
00:03:58zrock 感觉像是一个你真正拥有的工具。
00:04:00这是主要区别。
00:04:02ngrok 是闭源的,zrock 是开源的。
00:04:05它是可自托管的。
00:04:06如果你在乎控制权和隐私,这一点非常重要。
00:04:10然后是私密分享。
00:04:12在 ngrok 中,它更像是一个插件。
00:04:15它不是集成的。
00:04:16而在 zrock 中,它是所有功能核心理念的一部分。
00:04:19协议支持也很重要。
00:04:22ngrok 主要关注 HTTP 和 TCP。
00:04:26zrock 支持这两者的同时也支持 UDP。
00:04:29公平地说,ngrok 仍然拥有请求重放和检查功能。
00:04:35zrock 没有。
00:04:36而这一点确实挺重要。
00:04:37zrock 很好。
00:04:38但它并不完美。
00:04:39人们喜欢它是因为它感觉很简单。
00:04:41隐私优先。
00:04:43这意义重大。
00:04:44如果你自托管它,你就能完全控制一切。
00:04:47但它依然存在权衡,就像任何开源工具一样。
00:04:50如果你想深入了解,会有一定的学习曲线,尤其是在自托管方面。
00:04:55它没有像 ngrok 那样内置的请求检查。
00:04:58根据你的设置,你可能会注意到一点延迟。
00:05:01但即便有这些缺点,对于大多数开发者来说,它依然是更好的选择。
00:05:05那么,zrock 值得吗?
00:05:06这就是我们要问的问题。
00:05:08如果你的痛点是快速分享,那么是的,它绝对值得。
00:05:12尤其是当我们不必放弃控制权或隐私时。
00:05:15zrock 解决了这个问题。
00:05:16如果你喜欢这类开源编码工具和技巧,请务必订阅
00:05:20Better Stack 频道。
00:05:21我们下个视频再见。

Key Takeaway

zrok 作为一个开源且支持自托管的隧道工具,通过零信任架构和 UDP 支持解决了 ngrok 免费层级的限制与隐私暴露问题。

Highlights

zrok 是基于 OpenZiti 构建的开源 ngrok 替代方案,内置零信任架构以确保数据安全。

该工具支持公开或私密分享本地应用、文件、TCP 及 UDP 服务,无需配置端口转发、路由器或公网 IP。

私密模式(zrok share private)不生成公网 URL,而是通过特定的令牌(token)授权受信任的用户访问。

zrok 内置 backend mode drive 功能,可将本地整个目录作为可浏览的驱动器进行远程分享。

与 ngrok 仅支持 HTTP/TCP 不同,zrok 额外提供了对 UDP 协议的支持,适用于游戏服务器和物联网设备。

用户可以完全免费地自托管 zrok,从而获得对流量和隐私的绝对控制权。

Timeline

传统隧道工具的局限性与 zrok 的核心定位

  • ngrok 等工具存在随机 URL 不稳定和免费层级限制过多的问题。
  • zrok 采用端到端加密技术,确保流量在未经许可的情况下不会接触公网。
  • 零信任架构允许开发者仅暴露必要的服务部分,而非整个网络环境。

分享 localhost 在开发流程中经常遇到配置繁琐和安全性不足的挑战。zrok 作为一种现代替代方案,消除了对防火墙变更和公网 IP 的依赖。它在提供高性能和全新 UI 的基础上,重点解决隧道技术中隐私控制最薄弱的环节。

快速部署与公开分享的操作流程

  • 通过 zrok enable 命令可完成环境的一次性初始化设置。
  • 单一命令即可瞬间生成公网 HTTPS URL,使 Next.js 等本地应用在互联网实时运行。
  • 整个部署过程无需任何配置文件、防火墙变更或端口转发操作。

以本地运行的 Next.js 应用为例,zrok 展现了极简的工作流。开发者只需确保环境启用,运行分享指令后即可获得即时生效的加密链接。这种方式虽然便捷,但会将应用完全暴露在公网上,因此更适合临时性的公开展示。

基于令牌的私密分享与文件驱动模式

  • 私密分享模式生成唯一的访问令牌而非 URL,从而杜绝机器人扫描和随机流量撞击。
  • 访问者必须运行 zrok access private 并输入对应令牌才能建立连接。
  • backend mode drive 模式支持将本地文件夹直接转化为远程可访问的驱动器。

私密模式是 zrok 区分于传统隧道工具的核心功能。它通过受控访问机制,确保只有持有特定令牌的信任用户才能连接。此外,该工具的功能不仅限于应用隧道,还扩展到了文件系统分享,使其成为一种多功能的协作工具。

zrok 与主流工具的横向对比

  • Cloudflare 隧道虽然功能强大,但其设置过程相对复杂且步骤繁多。
  • Tailscale 在仅需快速分享的场景下显得功能过剩,增加了不必要的复杂度。
  • zrok 在速度、隐私和控制权之间取得了平衡,特别适用于 Webhook 测试和物联网开发。

开发者在选择隧道工具时往往需要在精致度、易用性和隐私之间做权衡。zrok 解决了 NAT 穿透问题,并原生支持 UDP 协议,这使其在游戏服务器、VOIP 和 Webhook 测试等日常开发场景中具有显著优势。

开源优势、功能权衡与适用场景总结

  • zrok 是完全开源且可自托管的,赋予用户对数据和基础设施的最高拥有权。
  • 相比 ngrok,zrok 目前缺少请求重放(request replay)和内置的请求检查功能。
  • 自托管 zrok 存在一定的学习曲线,且在特定配置下可能会产生轻微延迟。

尽管 ngrok 在商业成熟度和调试功能(如请求重放)上占优,但 zrok 的开源特性使其成为更具性价比的选择。对于追求隐私优先和完全控制的开发者来说,zrok 提供的私密分享集成和多协议支持弥补了其在调试工具上的短板。它是一个旨在简化开发者工作流,同时不牺牲安全性的实用工具。

Community Posts

View all posts