---
id: 43210fd43f7878fd6c6b931640fb2175
author: gosunuts
title: Portal Tunnel：通过去中心化公共中继暴露本地主机服务
description: 通过一条 curl 命令，即可将本地 HTTP 服务暴露到公共互联网，借助多中继、无需许可的 Portal 隧道实现，无需注册账户，也无需安装二进制文件。
language: zh
date: 2025-12-06T05:35:03.047352133Z
path: /blog/posts/make-localhost-public-with-one-curl-—-portal-tunnel-z2f33ae49
go_package: gosuda.org/portal
go_repourl: https://github.com/gosuda/portal.git
category: network
---

## Portal 与隧道

借助 AI，我们可以随时随地创建程序。
但无论一个程序多么出色，它通常只存在于你自己的计算机上：即 localhost。
![vibecon](/assets/images/portal/vibecon.webp)

要将其暴露给外部网络，通常需要经过一系列复杂的步骤，例如路由器配置、防火墙规则、公网 IP 设置以及隧道配置。

如果这一切只需一行命令就能解决，会怎样？

借助 Portal 的隧道功能，你只需一条命令，即可将本地程序转变为公开服务。

## 让 localhost 公开访问

1. 首先，在本地运行你的程序。

2. 然后，只需这一行命令即可：

   ```bash
   curl -fsSL portal.gosuda.org/tunnel | PORT=3000 NAME={app name} sh
   ```

3. 检查你的应用是否已可公开访问：
   - {app name}.portal.gosuda.org

## 多租户

Portal 被设计为一个开放网络，而非单一服务。任何人都可以运营一个 Portal 中继节点，并且单个应用可以同时连接到多个 Portal，以实现冗余或地理分布。

```bash
# 同时发布到多个 Portal 中继节点
curl -fsSL http://portal.gosuda.org/tunnel | \
PORT=3000 \
NAME={app_name} \
RELAY_URL=portal.thumbgo.kr,portal.iwanhae.kr,s-h.day,portal.lmmt.eu.org \
sh
```

活跃的公共 Portal 列表维护在 Portal List 应用中（该应用本身也托管于 Portal 网络之上）：
https://portal-list.portal.gosuda.org/

这代表了一种真正无需许可的发布环境，不依赖于任何特定的提供商或基础设施。

## 与其他服务的比较

ngrok 和 cloudflared 等工具被广泛用于将本地服务暴露至公共互联网。  
然而，Portal 在设计理念和使用模式上存在根本差异。

ngrok 和 cloudflared 是集中式的、基于 SaaS 的隧道服务。  
使用前它们需要创建账户、颁发令牌、安装二进制文件并进行配置，且用户不可避免地受制于服务条款和定价模式。

与之相比，Portal Tunnel：

- 无需安装，一行命令即可运行
- 无需账户或令牌，即可即时发布
- 允许任何人运营中继节点
- 允许单个应用同时连接多个 Portal
- 是一种纯粹的网络架构，不依赖于任何特定厂商

这些特性使 Portal Tunnel 与传统隧道服务处于截然不同的类别之中。
