1. 项目定位与用途
PortBuddy 是一款多协议端口暴露工具,定位为开发者和团队提供简单、安全的本地服务公网访问方案。其核心用途是通过建立加密隧道,将运行在本地或内网的服务(如 Web 应用、数据库、游戏服务器)快速映射到公网 URL,无需复杂网络配置。工具提供跨平台 CLI 和 Web 管理仪表板,支持 HTTP/TCP/UDP 协议,所有 HTTP 流量默认启用 SSL 加密,确保传输安全。用户可通过简短命令立即暴露端口,适用于开发调试、测试反馈、临时演示等场景,显著提升协作效率,类似 ngrok 但提供更灵活的订阅模式。
2. 解决的问题
PortBuddy 主要解决本地或私有网络服务无法被外网直接访问的痛点。开发中常需测试 Webhook 回调、移动应用接口或让客户预览本地成果,传统方案需复杂网络配置或不稳定的内网穿透工具。PortBuddy 提供一键式安全隧道,自动处理 NAT 穿透、域名解析和 SSL 证书,避免暴露本地网络风险。同时支持多协议和 WebSocket,满足数据库共享、实时通信等需求,替代 ngrok 等工具,提供更灵活的订阅计划和团队管理功能,让外网访问变得简单可靠。
3. 适用场景
PortBuddy 适用于多种临时暴露本地服务的场景:Web 应用开发与测试,本地运行的服务可生成公网 URL 供团队或客户访问;Webhook 调试,接收 GitHub、Stripe 等第三方回调;数据库共享,安全暴露 PostgreSQL、MySQL 等端口供远程连接;实时应用调试,支持 WebSocket 协议用于聊天、协作工具;游戏服务器测试,如 Minecraft 或 Hytale 服务器的临时外网访问。此外,演示环境搭建、API 测试、IoT 设备调试等场景也可受益,是开发、测试和协作的实用工具。
4. 安装方式
PortBuddy 安装流程简洁:首先访问 portbuddy.dev 官网,根据操作系统(Windows、Linux 或 macOS)下载对应的 `portbuddy` CLI 二进制文件;下载后无需复杂安装,可直接在终端运行。接着进行身份认证:登录官网 Web 仪表板,在用户设置中生成 API Token;然后在终端执行 `portbuddy init {YOUR_API_TOKEN}` 命令完成配置。CLI 基于 GraalVM 原生镜像,通常已捆绑运行环境,可直接执行;但若需从源码构建,则需 Java 25、Maven 等开发环境。具体步骤可能随版本更新,建议参考官网最新文档。
5. 使用方式
使用 PortBuddy 非常简单,通过命令行即可快速暴露端口。默认模式下,`portbuddy 3000` 将本地 3000 端口的 HTTP 服务暴露为 HTTPS 公网地址,自动分配子域名。暴露 TCP 服务(如 PostgreSQL)使用 `portbuddy tcp 5432`,生成形如 `net-proxy-3.portbuddy.dev:43452` 的地址;UDP 服务通过 `portbuddy udp 9000` 暴露。可选参数包括:`-d` 指定静态子域名,`-pc` 添加访问密码,`-pr` 预留特定端口,`-v` 启用详细日志。所有 HTTP 隧道默认启用 SSL 并支持 WebSocket。Web 仪表板还提供隧道管理、订阅升级和团队协作功能,详细命令可通过 `portbuddy --help` 查看。
6. 实现特点
PortBuddy 采用多模块微服务架构确保高可用与可扩展性。CLI 模块基于 Java 25 和 Picocli 框架开发,通过 GraalVM 编译为原生可执行文件,实现跨平台快速启动。后端核心包括:server 模块(Spring Boot 3.5.7,负责隧道管理和用户认证)、net-proxy 模块(高性能 TCP/UDP 代理)、gateway 模块(基于 WebFlux 的 API 网关)、ssl-service 模块(自动化 SSL 证书管理)以及 eureka 模块(服务发现)。前端 web 模块使用 React + TypeScript + TailwindCSS 构建响应式仪表板。所有模块通过 Maven 统一构建,支持 Docker Compose 一键部署。common 模块共享 DTO 和工具类减少重复代码,整体设计确保低延迟转发、自动加密和易于维护。