ServBay で Pinggy を使いローカルサイト・サービスをインターネット公開する方法
Pinggy(ピンギー)は、極めてシンプルで使いやすい内部ネットワーク貫通ツールです。リバースプロキシ技術を活用し、ServBay 環境で稼働している Web サービスを安全に外部(インターネット)へ公開できます。本ガイドでは、ServBay 環境で Pinggy を用いてローカル Web サービスへインターネット経由でアクセスする手順を詳しく解説します。これによりリモートデモ、チームでの共同作業、Webhook リクエストの受信などが簡単に実現可能です。
技術原理
Pinggy のコアは、SSH トンネルによる安全な通信です。ローカル(NAT やファイアウォール越し)で稼働するサービスのポートを、SSH 経由で Pinggy のパブリックサーバーへ転送します。インターネット上のユーザーが Pinggy から割り当てられた URL にアクセスすると、そのリクエストはトンネル経由であなたのローカルサービスへ安全に伝送されます。
ServBay の利用シーンでは、たとえば ServBay 環境で動作しているローカル サイト(例:https://myproject.servbay.demo
)を、Pinggy を使ってパブリック URL へマッピングできます。複雑なポート開放やファイアウォール設定は不要です。
環境準備
Pinggy の利用にあたり、ローカルに特別なクライアントソフトをインストールする必要はありません。必要なものは以下です。
- ServBay のインストールと起動: ServBay 環境が正しくセットアップされ、公開したいローカル サイトやサービスが稼働していること。
- 運用中の ServBay サイト: ServBay 上にひとつ以上のローカル サイトがセットアップされていること。これらサイトは通常、ServBay に内蔵の Caddy または Nginx サーバーによってローカルの 80(HTTP)もしくは 443(HTTPS)ポートでリクエストを待ち受けています。
- SSH 対応の端末: macOS 標準のターミナル、または他の SSH 対応ターミナルソフト。
- 基礎的な SSH コマンド知識: ターミナルで SSH コマンドを操作できること。
トンネル構築の実践
基本コマンド
Pinggy でトンネルを作るのは非常に簡単で、1行の SSH コマンドだけでOKです。以下は ServBay でローカル 443 ポート公開中の servbay.new
サイトをインターネット公開する例です。
ssh -p 443 -R0:localhost:443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected] x:localServerTls:servbay.new "u:host:servbay.new"
重要メモ: このコマンドの XXXXXXXXXXX
部分は、Pinggy サイトで取得したご自身のユーザー名(英数字列)に置き換えてください。また servbay.new
は、公開したい ローカルサイトのドメイン名(例:myproject.servbay.demo
など)に書き換えてください。
このコマンドの主なパラメータを解説します。
パラメータ | 説明 |
---|---|
-p 443 | Pinggy サーバーへ 443 ポートで SSH 接続します。標準の HTTPS ポートなのでファイアウォールを突破しやすいです。 |
-R0:localhost:443 | リモート(Pinggy)で割り当てるポートを自動(0)で決め、全てのリクエストをローカルの 443 番(HTTPS対応)へリダイレクトします。Caddy や Nginx で HTTPS を 443 で待ち受けている場合に使用。 |
-o StrictHostKeyChecking=no | SSH ホスト鍵チェックを無効化。初回接続やテストが楽ですが、本番運用では鍵確認を推奨します。 |
-o ServerAliveInterval=30 | 30秒ごとにサーバーへ監視パケットを送り、非通信による自動切断を防ぎます。 |
-t [email protected] | Pinggy のユーザー名および接続先サーバー。XXXXXXXXXXX は Pinggy ユーザー名です。 |
x:localServerTls:servbay.new | Pinggy 独自オプション。ローカルサービスが TLS(HTTPS)対応で、そのドメイン名が servbay.new (自分のサイト名に変更必須)であることを指定。正しい HTTPS 転送に重要。 |
"u:host:servbay.new" | Pinggy 独自オプション。トンネルで転送される HTTP リクエストの Host ヘッダーを必ず servbay.new (自分のサイト名)へ書き換えます。**複数サイト(バーチャルホスト)運用時は必須!**どのローカルサイトに応答させるかウェブサーバに通知します。 |
コマンドが成功すると、ターミナルに Pinggy で利用可能なインターネット公開用 URL(HTTP/HTTPS)が表示されます。例:
http://rnirh-172-188-50-148.a.free.pinggy.link
https://rnirh-172-188-50-148.a.free.pinggy.link
2
サービス確認
トンネル確立後に正しくアクセスできるか、次の方法で検証できます。
curl で検証(推奨):
curl
コマンド+-I
(ヘッダーのみ取得)オプションでパブリック URL をテストします。URL は自分のものに置き換えて使用してください。bashcurl -I https://rnirh-172-188-50-148.a.free.pinggy.link
1正常なら、Nginx や Caddy などローカル Web サーバーのレスポンスヘッダーが次のように表示されます。
HTTP/1.1 200 OK Connection: close Access-Control-Allow-Credentials: true Access-Control-Allow-Headers: Content-Type, Authorization Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS Access-Control-Allow-Origin: * Cache-Control: max-age=0, must-revalidate, no-cache, no-store, private Connection: keep-alive Content-Type: text/html; charset=UTF-8 Date: Tue, 18 Feb 2025 11:51:48 GMT # 日付は異なる場合あり Expires: Sun, 02 Jan 1990 00:00:00 GMT Pragma: no-cache Server: nginx # または caddy など、ServBay 設定による Vary: Accept-Encoding X-Frame-Options: SAMEORIGIN X-Powered-By: PHP/8.4.3 # 技術スタックによって異なります
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16HTTP/1.1 200 OK
ステータスと、想定どおりのServer
ヘッダーが返れば問題なくローカル ServBay Web サーバーへアクセスできています。ブラウザでアクセス: Pinggy が示した HTTPS URL(例:
https://rnirh-172-188-50-148.a.free.pinggy.link
)を、手元の PC やモバイル端末などどこからでもブラウザで開いてください。ローカル ServBay で見えるのと同じ内容が表示されます。想定される結果:
- インターネットユーザーが Pinggy の URL 経由でローカル ServBay サイトやサービスにアクセスできます。
- ローカルサービスで HTTPS(ServBay はデフォルトで自己署名証明書を発行)を利用している場合、Pinggy 経由の公開アクセスでも自動でパブリック CA 証明書が付与され、追加設定不要です。
- レスポンス速度や安定性はローカルネットワークと Pinggy サーバー間の接続状況および Pinggy 側の負荷に左右されます。
上級テクニック
別ポートやサービスの公開: Web サービス以外や、80/443 以外のポートを使う場合は
-R
パラメータを変更してください。例えばローカル 8000 ポート(Python/Node.js など)を公開するには:bashssh -p 443 -R0:localhost:8000 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected]
1Web 以外や
Host
ヘッダーが重要でない場合、x:localServerTls
およびu:host
オプションは省略してOKです。カスタムドメインの利用(Pinggy Pro): Pinggy Pro 利用者なら、ランダムサブドメインの代わりに独自カスタムドメインを指定できます。プロフェッショナルな公開アドレスが必要な場合は、詳細を公式ドキュメントでご確認ください。
トンネル常時維持(autossh 利用): ネットワーク不調などで SSH トンネルが切れることがあります。トンネルを長時間維持するには
autossh
がおすすめです。autossh
は切断検知・自動再接続を行います。macOS(Homebrew:brew install autossh
)等で導入後、以下のように使えます。bashautossh -M 0 -t "ssh -p 443 -R0:localhost:443 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 -t [email protected] x:localServerTls:servbay.new \"u:host:servbay.new\""
1-M 0
は監視専用ポートを使わず、SSH 自身の keep-alive のみで監視する指定です。Token-less コマンド: Pinggy ではユーザー名/トークンをコマンドに書かない一時的コマンドも利用可能です。ウェブサイトでワンタイムコマンドを取得でき、人に共有する際もトークン漏洩の心配がありません。
よくある利用シーン
- リモートデモ: ローカル ServBay 環境で開発したサイトやアプリを、いちいちステージングや本番へ公開せずクライアントやチームに紹介。
- Webhook デバッグ: サードパーティ(決済ゲートウェイ、GitHub等)の Webhook リクエストを直接ローカルで受信・検証。
- 多端末テスト: 別ネットワークのモバイルやタブレットでローカルサイトのレスポンシブデザインや動作確認も簡単。
- チーム作業: チーム同士でローカル ServBay 上のサービスを相互にテスト・共有できる。
トラブルシューティング
症状 | 解決策 |
---|---|
SSH 接続タイムアウト・失敗 | ネットワーク接続および a.pinggy.io へのアクセス可否を確認。ローカルのファイアウォール設定で443番発信がブロックされていないかチェック。Pinggyのユーザー名が正しいか確認。 |
Pinggy割当てURLがエラー(502 Bad Gateway等) | ServBayのローカルサイト又はサービスが localhost:443 (もしくは -R で指定したポート)で稼働しているか、Caddy/Nginx の設定が正しいか確認。 |
Pinggy URLで 404/デフォルト ServBay ページ | ServBay で複数サイト(バーチャルホスト)を運用中の場合は、SSH コマンド内の x:localServerTls /u:host パラメータに希望するローカルサイトのドメイン名(例:myproject.servbay.demo )がセットされているか必ずご確認ください。これが反応先サイトの指定として重要です。 |
時折切断される | ネットワーク不安・SSH セッションタイムアウトが原因。ServerAliveInterval 値を上げるか、autossh による自動再接続を推奨(「上級テクニック」参照)。 |
HTTPS 証明書エラー | Pinggy は無料ユーザーでも公的 CA 証明書を付与します。ただし、ServBayローカルが自己署名証明書の場合、ローカルアクセス時は警告が出ることがあります。Pinggy 公開用アドレス経由では通常証明書警告が抑制されますが、引き続き問題がある場合、ServBay サービスがHTTPS(443)で稼働中かご確認ください。 |
まとめ
Pinggy を使えば、ServBay のユーザーは極めて簡単・迅速に安全なパブリック公開回線を構築し、自分の開発サイト・アプリを外部に共有できます。この方法の主なメリットは:
- クライアントインストール不要: 簡単セットアップ。
- ワンコマンド起動: SSH 一発でトンネル開始。
- 自動 HTTPS 対応: Pinggy が無料の公的 CA 証明書を発行。HTTPS 証明書エラー対策も万全。
- HTTP/TCP トンネル対応: 様々な公開ニーズに対応。
- ServBay との高い親和性:
Host
ヘッダーを適切に調整することで複数サイト運用の要件もクリア。 - Token-less コマンド: 共有時の安全性も向上。
複雑なクライアント導入や設定が必要な他の内部ネットワーク貫通ツールと比べ、Pinggy はずっと軽快・手軽です。ServBay ユーザーのテスト・デモ・一時的なサービス共有に最適。また業務用途など長期運用や独自ドメイン要求には Pinggy の有料プランも検討可能。強力な ServBay ローカル開発環境+Pinggy の手軽な外部公開で、あなたの開発・チーム協働の生産性が大きく向上します。