---
id: 43210fd43f7878fd6c6b931640fb2175
author: gosunuts
title: ポータルトンネル：分散型パブリックリレーを介してローカルホストのサービスを公開する
description: アカウントの登録も実行ファイルのインストールも不要で、マルチリレー型かつ許可不要のPortalトンネルを経由し、単一のcurlコマンドでローカルのHTTPサービスを公開インターネットに公開できます。
language: ja
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
---

## ポータルとトンネル

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 は単一のサービスではなく、オープンなネットワークとして設計されています。誰でもポータルリレーを運営でき、一つのアプリを冗長性や地理的分散のために複数のポータルへ同時に接続することができます。

```bash
# 複数のポータルリレーへ一度に公開
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 List アプリ(これ自体も Portal ネットワーク上でホストされています)で管理されています:
https://portal-list.portal.gosuda.org/

これは、特定のプロバイダーやインフラストラクチャに依存しない、真に許可不要の公開環境を表しています。

## 他のサービスとの比較

ngrok や cloudflared は、ローカルのサービスを公開インターネットに公開するために広く利用されているツールです。
しかし、Portal は設計思想と利用モデルの両面において根本的に異なります。

ngrok と cloudflared は、集中型の SaaS ベースのトンネリングサービスです。
利用の前にアカウントの作成、トークンの発行、バイナリのインストール、設定が必要であり、利用者は必然的にサービスポリシーや料金モデルの制約を受けます。

これに対し、Portal Tunnel は次の特徴を持ちます:

- インストールなしで一行で実行できる
- アカウントやトークンなしで即座に公開できる
- 誰でもリレーを運営できる
- 一つのアプリを複数のポータルへ同時に接続できる
- 特定のベンダーに依存しない純粋なネットワークアーキテクチャである

これらの特徴により、Portal Tunnel は従来のトンネリングサービスとはまったく異なるカテゴリーに位置づけられます。
