十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

go2rtc 使用 Pinggy 公网隧道:零注册暴露 WebUI 与 RTSP 摄像头的完整指南

go2rtc 使用 Pinggy 公网隧道:零注册暴露 WebUI 与 RTSP 摄像头的完整指南 go2rtc 使用 Pinggy 公网隧道零注册暴露 WebUI 与 RTSP 摄像头的完整指南【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc本文围绕 go2rtc 内置的 Pinggy 支持模块internal/pinggy/README.md讲解如何通过 Pinggy 服务将本地的 go2rtc WebUI 与 RTSP 摄像头快速暴露到公网。读完本文你将掌握pinggy配置项的完整用法、如何从启动日志中提取公网地址并理解该模块基于 SSH 协议的隧道实现原理可直接用于调试双向音频、验证 WebRTC 外部连通性以及向开发者分享摄像头访问。Pinggy 是什么面向本地服务的公网隧道Pinggy 是一种提供公网隧道public tunnel的服务可以把运行在本地网络中的服务如 go2rtc WebUI、RTSP 流映射为公网可访问的地址。根据项目文档它具备以下特性免费账户无需注册开箱即用无需账号体系不依赖第三方二进制工作走 SSH 协议go2rtc 内置客户端通过 SSH 建立隧道支持多种协议可工作于 HTTP、TCP 和 UDP 协议自动 HTTPS会为你的 HTTP 服务生成 HTTPS 访问地址。[!IMPORTANT] 免费账户创建的隧道地址是随机生成的且仅持续一小时只适合测试用途。[!CAUTION] 在未授权的情况下将 go2rtc 暴露到公网会让你的整个家庭网络面临风险请谨慎使用。为什么要在 go2rtc 中使用 Pinggy文档明确列出了使用 Pinggy 的三个典型场景为测试双向音频轻松配置 HTTPS——摄像头双向语音通常要求安全的传输环境快速验证 WebRTC 技术下的外部访问是否可行——WebRTC 需要穿透 NAT公网隧道是验证外部连通性的捷径方便向 go2rtc 开发者分享 RTSP 或 HTTP 摄像头的直接访问地址——在调试问题时可通过临时隧道把摄像头流暴露给开发者而无需把设备直接暴露在公网。配置原理从 YAML 配置到 SSH 隧道go2rtc 将 Pinggy 作为一个辅助模块supporting module集成这一点在 internal/README.md 的模块清单中有明确说明并在 main.go 中以{pinggy, pinggy.Init}完成注册。模块入口位于 internal/pinggy/pinggy.go其工作流程为通过app.LoadConfig(cfg)读取配置文件中的pinggy.tunnel字段若配置为空则直接返回模块不生效否则解析出协议scheme与目标地址host调用pinggy.NewClient(proto)建立 SSH 连接调用client.GetURLs()获取公网地址并打印到日志调用client.Proxy(address)将隧道流量双向转发到本地目标。底层实现位于 pkg/pinggy/pinggy.go有几个值得注意的实现细节支持的协议NewClient只接受http、tcp、tls、tlstcp四种协议其中空值默认按http处理其他值会返回unsupported proto错误SSH 握手客户端连接a.pinggy.io:443用户名为auth协议名密码固定为nopass并设置了 5 秒连接超时地址获取通过 SSH 隧道内的 HTTP 客户端请求http://localhost:4300/urls接口解析 JSON 得到公网地址列表数据转发Proxy循环接受隧道连接对每条连接开启两个方向的io.Copy实现透明 TCP 代理。另外www/schema.json 中提供了该配置项的 JSON Schema 定义tunnel字段的描述为 Expose local address via Pinggy示例为http://127.0.0.1:1984与tcp://192.168.1.123:554可供 IDE 与 WebUI 表单做校验和提示。实战一将 go2rtc WebUI 隧道到公网在 go2rtc 的配置文件默认为go2rtc.yaml也可通过--config指定见 internal/app/config.go中添加如下内容pinggy: tunnel: http://localhost:1984这里的1984是 go2rtc 默认的 HTTP API 端口。配置后启动 go2rtc你会在启动日志中找到公网链接文档明确说明You will find public links in the go2rtc log after startup日志由internal/pinggy/pinggy.go中的log.Info().Str(url, s).Msgf([pinggy] proxy)输出。由于http协议会走 Pinggy 的 HTTP 隧道Pinggy 会同时为你的 WebUI 生成一个 HTTPS 地址浏览器访问该地址即可打开 go2rtc 的配置界面适合快速测试双向音频等需要安全上下文的场景。实战二将 RTSP 摄像头隧道到公网假如你有一台局域网内的摄像头RTSP 地址为rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0其中192.168.1.123:554是摄像头的 RTSP 服务地址。在 go2rtc 配置中添加pinggy: tunnel: tcp://192.168.10.91:554启动后在 go2rtc 日志中会看到类似下面的输出协议前缀为tcp16:17:43.167 INF [pinggy] proxy urltcp://abcde-123-123-123-123.a.free.pinggy.link:12345其中abcde-123-123-123-123.a.free.pinggy.link:12345就是 Pinggy 分配给你的公网 TCP 地址。此时你已经拥有了一条可用的公网流把原 RTSP 地址的主机部分替换为隧道地址即可rtsp://admin:passwordabcde-123-123-123-123.a.free.pinggy.link:12345/cam/realmonitor?channel1subtype0即隧道地址替换原地址中的 IP 与端口192.168.10.91:554→abcde-...link:12345其余路径与参数保持不变。这个新地址可以直接交给 go2rtc 开发者或任意支持 RTSP 的播放器访问。使用注意与安全边界免费隧道仅一小时有效免费账户每次启动会得到随机地址且一小时后失效重启 go2rtc 会获得新地址仅适合短时测试公网暴露有风险文档特别警示未授权情况下将 go2rtc 暴露到公网会危及整个家庭网络。建议仅在确有调试需求时开启测试完毕后立即移除配置协议选择按需在tunnel地址中指定http://WebUI / HTTP 服务或tcp://RTSP 等裸 TCP 服务如需 TLS 相关能力底层NewClient还支持tls与tlstcp协议配置缺失即禁用未配置pinggy段或tunnel为空时模块直接返回不影响 go2rtc 其他功能。与 ngrok 模块的对比go2rtc 同时内置了 ngrok 隧道模块注册于 main.go。两者的主要差异在于维度Pinggyngrok配置方式pinggy.tunnel: url内置 SSH 客户端ngrok.command: 命令需要本机安装 ngrok 二进制免注册免费账户无需注册通常需要 authtoken应用场景快速把 WebUI / RTSP 流暴露公网类似另可用于向 WebRTC 添加外部 candidate见 internal/ngrok/ngrok.go两者均为 go2rtc 的辅助模块可按需选用。独立复用 Pinggy 客户端仓库的 examples/mod_pinggy/main.go 提供了一个不依赖 go2rtc 的独立示例演示如何直接用github.com/Pinggy-io/pinggy-go/pinggy库创建隧道并开始转发支持SshOverSsl、Header 处理等高级选项默认已注释。如果你需要在自己的 Go 程序中复用 Pinggy 能力该示例与 pkg/pinggy/pinggy.go 是很好的参考起点。小结通过pinggy.tunnel配置项go2rtc 可以用一段 YAML 配置、零注册地借助 SSH 协议把 WebUI 或 RTSP 摄像头暴露到公网公网地址直接打印在启动日志中。该能力尤其适合快速验证双向音频的 HTTPS 环境、检测 WebRTC 外部连通性以及向开发者临时分享摄像头流。请务必牢记免费隧道仅一小时有效且随机寻址并始终对公网暴露保持安全警惕。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表