免费开源的内网穿透工具,ngrok 最佳平替
⭐ 5.6K Star · MIT开源 · Rust编写tunnelto 是一个开源的内网穿透工具,可以将你本地运行的服务(如 localhost:3000)通过一个公网 URL 暴露出去,方便远程访问和调试。简单来说,就是 ngrok 的免费开源替代品!
核心优势:不用买服务器,一行命令让外网访问你的 localhost!
| 项目信息 | 详情 |
|---|---|
| GitHub 地址 | github.com/agrinman/tunnelto |
| 官方网站 | tunnelto.dev |
| Star 数量 | 5.6K+ |
| 开发语言 | Rust(高性能、单一二进制文件) |
| 开源协议 | MIT License(可商用) |
为什么选择 tunnelto 而不是 ngrok?看看对比就知道了:
| 功能 | tunnelto | ngrok (免费版) |
|---|---|---|
| 价格 | 完全免费 | $8-29/月 |
| 会话时长 | 无限制 | 2小时限制 |
| 带宽限制 | 无限制 | 有限制 |
| 拦截页面 | 无 | 有警告页面 |
| 开源 | MIT 开源 | 闭源 |
| 自托管 | 支持 | 企业版才支持 |
省钱小技巧:ngrok 付费版每年 $96-348,而 tunnelto 完全免费,一年能省下一台云服务器的钱!
给客户演示本地开发的项目,无需部署到服务器
接收 Stripe、微信等第三方 Webhook 回调
手机 App 测试时连接本地后端服务
代码开源可审计,支持自建服务端
curl -sL https://tunnelto.dev/install.sh | sh
brew install tunnelto
cargo install tunnelto
从 GitHub Releases 下载对应系统的二进制文件:
安装完成后,运行 tunnelto --version 验证是否安装成功!
首先确保你的本地服务已经在运行,比如:
# 示例:启动一个 Node.js 项目
npm run dev
# 假设运行在 localhost:3000
# 将本地 3000 端口暴露到公网
tunnelto --port 3000
运行后会返回一个公网 URL,类似:
https://abc123.tunnelto.dev -> localhost:3000
# 使用自定义子域名
tunnelto --port 3000 --subdomain myproject
# 访问:https://myproject.tunnelto.dev
# 如果本地服务不在 localhost
tunnelto --port 3000 --local-host 192.168.1.100
| 参数 | 说明 | 示例 |
|---|---|---|
--port |
本地端口号 | --port 8080 |
--subdomain |
自定义子域名 | --subdomain demo |
--local-host |
本地服务地址 | --local-host 127.0.0.1 |
--key |
API Key(付费用户) | --key xxx |
如果你想完全掌控,可以自己搭建 tunnelto 服务端。
git clone https://github.com/agrinman/tunnelto.git
cd tunnelto
# 需要安装 Rust
cargo build --release --bin tunnelto_server
你需要:
./target/release/tunnelto_server
注意:自建服务端需要一定的运维能力,普通用户直接使用官方服务即可!
ngrok 作为商业产品,在稳定性和功能上确实更全面。但对于开发调试场景,tunnelto 完全够用,而且免费无限制!
不建议!tunnelto 主要用于开发调试场景,生产环境建议使用正式的云服务或自建反向代理。
tunnelto 使用 Rust 编写,性能很好。但实际速度取决于网络环境,国内用户可能需要自建服务端以获得更好的体验。
支持!tunnelto.dev 官方服务自动提供 HTTPS,自建服务端需要自行配置 SSL 证书。
可以用,但官方服务器在国外,速度可能较慢。建议: