Show HN: Port Zero – 如何学会不再担心并爱上 PORT=0

Hacker News Top 工具

摘要

Port Zero 是一款免费、开源的工具,它为开发服务器分配稳定的本地域名而非端口号,从而消除端口冲突,并支持轻松的多分支开发和云隧道功能。

Hi HN,<p>最近我浪费了几个小时折腾开发环境,最后发现浏览器前端连接的是错误的后端版本。这让我思考——为什么我们还在用简单的数字来描述要连接哪个进程?为什么不改用名称呢?我想起无数次程序因为端口冲突而无法启动。越想越觉得这太疯狂了。<p>现代操作系统已经提供了无冲突端口:如果你让 TCP 服务器监听端口 0,操作系统就会随机分配一个可用端口。但这只解决了问题的一半。<p>我构建了另一半:PortZero。这是一个 GPLv3 程序,它会监控带有特殊环境变量 PZ_TUNNEL 的进程(以及 Docker 容器!):<p><pre><code> PZ_TUNNEL=myapp-{branch}.portzero.local:80 npm run dev </code></pre> 当它检测到这样的进程或容器时,PortZero 会执行以下操作:<p>1. 创建一个虚拟网卡(如果尚未创建)<p>2. 创建一个新的虚拟 IP 地址<p>3. 创建一个 DNS 记录,根据进程的工作目录替换 {branch} 等内容,并指向该虚拟 IP 地址<p>4. 在你选择的端口上监听该虚拟 IP 地址(例如,HTTP 使用 80 端口,HTTPS 使用 443 端口,PostgreSQL 使用 5432 端口)<p>5. 将所有发往该虚拟 IP 地址/虚拟端口的 TCP 连接转发到你的进程或容器实际监听的操作系统随机分配的端口。<p>结果是你不必再关心端口,只需关心子域名即可。只要使用不同的 portzero.local 子域名,就可以在 80 端口上运行多个服务而不会发生冲突。<p>它还具备一些其他很酷的功能:<p>- 通过创建本地 CA 并在机器上注册,在本地 HTTP 服务上启用 HTTPS<p>- 启用云隧道,以便在其他设备上访问你的应用(付费功能)<p>链接:<p><a href="https://portzero.net/docs/" rel="nofollow">https://portzero.net/docs/</a><p><a href="https://github.com/PortZeroNetwork/portzero" rel="nofollow">https://github.com/PortZeroNetwork/portzero</a>
查看原文
查看缓存全文

缓存时间: 2026/07/27 01:42

# Port Zero — 为本地开发端口提供稳定域名 来源:https://portzero.net/ 开发人员联网,告别端口冲突 ## 消除端口冲突 将所有端口设为 `0`,然后启动开发服务器。Port Zero 为每个进程或容器分配一个稳定的域名——无需记忆端口,再也不会遇到 `EADDRINUSE`。 bash `` $ PZ_TUNNEL="web.myapp-feat-checkout-redesign.portzero.local" node app.ts $ PZ_TUNNEL="web.myapp-feat-dark-mode.portzero.local" node app.ts `` web.myapp-feat-checkout-redesign.portzero.local git worktree feat/checkout-redesign `` Hello from the PortZero Node.js TypeScript process example. PZ_TUNNEL=nodejs-typescript-process.portzero.local:80 localhost_port=52431 `` web.myapp-feat-dark-mode.portzero.local git worktree feat/dark-mode `` Hello from the PortZero Node.js TypeScript process example. PZ_TUNNEL=nodejs-typescript-process.portzero.local:80 localhost_port=52431 `` 一台机器,多个分支 ## 同时运行所有分支,在 git worktree 中 每个 worktree 的开发服务器都拥有自己清晰的 URL——分支间无需切换端口,绝不会冲突。 bash `` $ PZ_TUNNEL="web.myapp-feat-checkout-redesign.portzero.local" node app.ts $ PZ_TUNNEL="web.myapp-feat-dark-mode.portzero.local" node app.ts `` web.myapp-feat-checkout-redesign.portzero.local git worktree feat/checkout-redesign `` Hello from the PortZero Node.js TypeScript process example. PZ_TUNNEL=nodejs-typescript-process.portzero.local:80 localhost_port=52431 `` web.myapp-feat-dark-mode.portzero.local git worktree feat/dark-mode `` Hello from the PortZero Node.js TypeScript process example. PZ_TUNNEL=nodejs-typescript-process.portzero.local:80 localhost_port=52431 `` 超越你的机器 ## 在手机上查看 本地域名局限于你的机器。云端隧道将同一个应用带到你的手机、平板或你选择的任何人那里——HTTPS 也包含在内。 bash `` $ PZ_TUNNEL="nodejs-typescript-process.acme.tunnel.portzero.cloud:80" node app.ts `` nodejs-typescript-process.portzero.local `` Hello from the PortZero Node.js TypeScript process example. PZ_TUNNEL=nodejs-typescript-process.portzero.local:80 localhost_port=52431 `` nodejs-typescript-process.acme.tunnel.portzero.cloud `` Hello from the PortZero Node.js TypeScript process example. PZ_TUNNEL=nodejs-typescript-process.acme.tunnel.portzero.cloud:80 localhost_port=52431 `` 你需要什么? ## 一个工具,六项任务 Port Zero 从本地免费开始,并可根据需要扩展。选择你感兴趣的功能——或者随便探索。 你为何而来? **彻底终结端口冲突**使用稳定的本地域名代替端口号。将所有端口设为 0。每个进程和容器都会获得一个稳定的 *.portzero.local 域名——没有 EADDRINUSE,没有端口映射,无需记录。免费且开源。 下载 Port Zero → (https://portzero.net/#download) **同时运行所有分支**每个 worktree 对应一个 URL,无论你启动多少个。AI 代理和 git worktree 各自启动自己的开发服务器。每个都获得一个清晰的 URL,因此 N 个并行构建永远不会争抢 :3000——而且你的编码代理可以通过 MCP 统一管理。 查看代理工作流 → (https://portzero.net/docs/ai-agents) **在手机上查看**本地域名局限于你的机器。隧道则不然。*.portzero.local 无法访问手机或平板。云端隧道将同一个应用跨越设备边界,附带 HTTPS——在任何设备上点击 URL 即可迭代。每个 worktree 也适用:每个分支都可以获得自己的云 URL。 查看云端隧道方案 → (https://portzero.net/#pricing) **将本地应用发布到互联网**Webhook、演示、预览——一个命令,公共 HTTPS。为任何本地应用提供一个公共 HTTPS URL——也可以使用你自己的域名。固定价格:无按量计费,无按请求定价,无超额费用。 云带宽慷慨且遵循公平使用原则。(https://portzero.net/terms#fair-use) 比较方案 → (https://portzero.net/#pricing) **让懂行的人来评判**指定协作者使用实际应用并在上下文中留下评论。将实时构建分享给那个能告诉你它有问题的人。他们实名登录,使用真实应用,并直接在其上留下反馈评论——无需部署,无需 git clone,每次迭代。 查看方案 → (https://portzero.net/#pricing) **控制团队暴露的内容**审批、策略、统一账单。未经批准,任何内容都不会公开。团队访问策略、共享子域名、组织账单——固定价格,无按席位收费。企业版提供审计日志。 查看团队方案 → (https://portzero.net/#pricing) Agent 就绪 ## 为智能编码代理做好准备 将你的编码代理指向 Port Zero,它就能替你处理隧道——无需复制粘贴 JSON,无需猜测端口。 - **简单配置**一个命令即可连接你机器上的所有 AI 编码代理。 - **MCP**`portzero mcp`将实时隧道和服务状态以工具形式暴露出来,代理可直接调用。 - **技能**`portzero skill install`教会代理从你的 compose 文件中提取生产拓扑。 查看AI 代理文档 (https://portzero.net/docs/ai-agents)以获取完整的 MCP 工具参考,或将精简参考 (https://portzero.net/llms.txt)粘贴到你仓库中的任何代理中。 ## 下载 选择适合你平台的 Port Zero CLI 安装程序。 Port Zero Local(`*.portzero.local` 隧道)是免费开源软件,遵循GNU GPL v3.0 协议 (https://github.com/PortZeroNetwork/portzero/blob/staging/LICENSE)。云功能受服务条款 (https://portzero.net/terms)约束。 ## 定价 本地隧道始终免费,无需 portzero.cloud 账户。付费方案为固定价格——无计量,无超额,无按席位收费。 ### 免费与开源 - 无限本地隧道,开源 - 付费方案提供云隧道 - 社区支持 下载 (https://portzero.net/#download) 最受欢迎### 专业版 $49/月 或 $490/年(按年付费) 包含免费版所有功能,外加: - 无限云隧道 - 慷慨的云带宽与请求数* - 访客认证与访问控制 - 实时隧道上的反馈评论 开始使用 (https://app.portzero.net/#/settings?checkout_plan=professional&cadence=monthly) ### 团队版 $149/月 或 $1,490/年(按年付费) 包含专业版所有功能,外加: - 无限成员——无按席位收费 - 团队与成员邀请 - 共享团队子域名 - 团队命名与访问策略 - 云隧道审批 - 组织账单 开始使用 (https://app.portzero.net/#/teams) ### 企业版 包含团队版所有功能,外加: - 审计日志 - 自定义条款与更高限制 - 安全审查支持 - 专属上线支持 联系销售 (https://app.portzero.net/#/contact) ### 功能对比 * 云带宽和请求数慷慨且遵循公平使用原则——请参阅我们的服务条款 (https://portzero.net/terms#fair-use)。 ## 将你的端口设为 0。 其余交给 Port Zero——永无冲突。免费开源,从它开始。

相似文章

vercel-labs/portless

GitHub Trending (daily)

Portless 是一款开发者工具,它用稳定、带名称的 .localhost 域名取代端口号,用于本地开发环境。它提供 HTTPS 支持与 HTTP/2 协议,并为 Next.js 和 Vite 等框架进行自动配置。