ServBay での Ngrok リバースプロキシサービス設定ガイド
Ngrok は強力なセキュリティトンネルツールで、リバースプロキシ技術を活用してファイアウォールや NAT を越え、ローカルで動作しているサービスをインターネット上のドメインへと公開できます。本ガイドでは、ServBay のローカル開発環境に Ngrok サービスを統合・設定し、ローカル Web サービスや API などを外部から安全にアクセスできるようにする方法を詳しく解説します。遠隔からのデモ、チームでのコラボレーション、サードパーティサービスのコールバックテストに最適です。
技術原理
Ngrok の基本原理は、お使いのローカルマシンと Ngrok サーバーの間に暗号化されたトンネルを確立し、外部ユーザーが Ngrok に割り当てられたドメインへアクセスした際、その通信が Ngrok サーバーを経由して安全にローカルの ServBay 環境上の対象サービスへ転送されるという仕組みです。これにより、ローカルマシンがグローバル IP 非対応やファイアウォール越しであっても、外部へのサービス公開が可能となります。ServBay の使用シナリオの場合、ローカルで構築した Web サイトや API、その他の HTTP/HTTPS ベースのサービスを、リアルタイムで外部へ共有し、テストやプレゼンテーションに活用できます。
環境準備
Ngrok 設定を始める前に、以下の環境が整っていることを確認してください。
- ServBay のインストールと稼働: ServBay アプリケーションをインストールし、Ngrok 経由で公開したい Web サービス(例:Web サイト)が ServBay 内部で正常に動作していること。ServBay の「Webサイト」パネルでローカルサイトの設定状況を確認できます。
- Ngrok クライアントのインストール: 以下の手順で Ngrok CLI ツールを導入してください。
- Ngrok 公式ダウンロードページからお使いのOS用パッケージを取得
- ダウンロードしたファイルを解凍し、生成された
ngrok
実行ファイルを macOS なら/usr/local/bin
など PATH が通ったディレクトリへ配置bash# macOS ARM64 環境の例 sudo unzip ~/Downloads/ngrok-v3-stable-darwin-arm64.zip -d /usr/local/bin
1
2 - ターミナルで
ngrok version
を実行し、インストールが成功したか確認bashngrok version # 出力例: ngrok version 3.5.0
1
2
- Ngrok アカウント(任意だが推奨): Ngrok アカウントを作成することで、トンネル管理や固定ドメインの利用など高度な機能が使えます。Ngrok 公式サイトで登録し、認証トークン(
ngrok config add-authtoken <YOUR_AUTH_TOKEN>
)を取得・設定すると、トンネル接続の時間制限解除や追加機能が解放されます。 - ローカルサイトの設定済み: 公開対象のローカルサイトが ServBay で少なくとも1つ構成済みであること(例:
servbay.local
やyourproject.servbay.demo
など)。
トンネル設定の実践
主要パラメータ解説
標準的なサービス公開コマンドの構成は以下の通りです。
ngrok http --domain=<NGROK_DOMAIN> <LOCAL_ENDPOINT> \
--request-header-add='host: <VIRTUAL_HOST>'
2
パラメータ | 説明 |
---|---|
http | HTTP プロトコルベースのトンネルを作成。Ngrok が HTTP/HTTPS リクエストを処理します。 |
--domain <NGROK_DOMAIN> | Ngrok で割り当てられる固定ドメイン名(Dashboard で設定・確認したものに置き換えてください)。無料プランの場合は省略可で、ランダムサブドメインが自動割当されます。 |
<LOCAL_ENDPOINT> | ServBay のローカルサービスのエンドポイント。通常はローカル用ドメイン(https://servbay.local など)、または http://localhost:ポート番号 。 |
--request-header-add='host: <VIRTUAL_HOST>' | 【重要】 リクエストの Host ヘッダを書き換えます。ServBay では通常 Host ヘッダでバーチャルホストを切り分けるため、外部リクエストの Host を ServBay で設定したローカルドメイン名(例:servbay.local )へ変更し、正しいサイトへルーティングされるようにします。 |
設定例
ServBay で servbay.local
というローカルサイトを公開したい場合、Ngrok 無料プランなら下記コマンドでランダムサブドメインを割り当ててアクセスできます。
# ServBay の servbay.local サイトを Ngrok のランダムドメインで公開
ngrok http https://servbay.local --request-header-add='host: servbay.local'
2
Ngrok の Dashboard で固定ドメイン(例: your-servbay-demo.ngrok-free.app
)を設定している場合、--domain
オプションを付けて実行します。
# ServBay の servbay.local サイトを指定した Ngrok ドメインで公開
ngrok http --domain=your-servbay-demo.ngrok-free.app https://servbay.local --request-header-add='host: servbay.local'
2
上記コマンドを実行すると、Ngrok クライアントのターミナルにトンネルの状態情報が表示されます。割り当てられたパブリックURL(例: https://xxxx.ngrok-free.app
など)と、リアルタイムトラフィックモニター用のローカルアドレス(たとえば http://127.0.0.1:4040
)も確認できます。
サービス検証
Ngrok トンネルの起動後、下記の手順で外部アクセスの動作確認を行います。
- パブリックURLの取得: Ngrok クライアントの
Forwarding
行を参照し、https://
で始まる外部アクセス用 URL をメモします。 - ブラウザからアクセス: ネット接続環境下の任意デバイスで、上記 Ngrok パブリック URL(例:
https://cunning-lacewing-fresh.ngrok-free.app
)にアクセスします。 - 結果の確認:
- ブラウザでローカル ServBay サイトのコンテンツが正しく表示されるか確認
- アドレスバーに HTTPS のセキュアマークが表示されているか確認(Ngrok は自動的に有効な SSL 証明書を提供)
- Ngrok クライアントのターミナル、もしくはローカル Web ダッシュボード(
http://127.0.0.1:4040
)でリクエスト・アクセスログをチェックし、リクエストが正しく到達しているか確認
図: Webブラウザ経由で Ngrok トンネルへ正常アクセスした例
上級テクニック・注意事項
- ドメイン管理:
- 無料プラン利用時は
.ngrok-free.app
サブドメインがランダム割り当て&接続時間制限あり - アカウント登録&Ngrok Dashboardで固定ドメイン設定を行えば、URL変更なしで再接続可能
- 有料プランでは独自ドメインの利用、帯域幅拡大、同時接続数拡大など高度な機能が利用可能
- 無料プラン利用時は
- 複数サービスの公開: ServBay の複数サービスやポートを同時公開したい場合は、異なる Ngrok プロセスを複数起動するか、Ngrok の設定ファイル(通常
~/.config/ngrok/ngrok.yml
)で複数トンネルを定義して管理できます。例:bash※バーチャルホストの公開には# ServBay の servbay.local を(HTTPS 443, Host ヘッダルーティングで)公開 ngrok http --domain=servbay-website.ngrok-free.app https://servbay.local --request-header-add='host: servbay.local' # 別ターミナルや設定ファイルで 3000 ポートの Node.js アプリも公開 ngrok http --domain=nodejs-api.ngrok-free.app http://localhost:3000
1
2
3
4
5https://[ローカルドメイン]
+--request-header-add
方式の利用を推奨します(ServBay の 80/443 直アクセスでは全バーチャルホストが対象になるため)。 - 診断コマンド:
ngrok config check
: 設定ファイル(~/.config/ngrok/ngrok.yml
)の文法チェックngrok logs
: ターミナル上で Ngrok クライアントの詳細ログをリアルタイム表示(接続やルーティング不具合の診断に便利)
- セキュリティ: ローカルサービスのインターネット公開は潜在的リスクが伴うため、公開は必要最低限・安全が確保されたサービスでのみ行ってください。有料プランでは IPホワイトリスト・アクセス制限等、さらなるセキュリティ機能が提供されます。
トラブルシューティング
現象 | 解決策 |
---|---|
接続タイムアウト・ページが開かない | ServBay の対象サイトが正常動作し、ローカルから指定ドメイン(例: https://servbay.local )でアクセス可能か・Webサーバ(Caddy/Nginx等)が稼働中か確認。ファイアウォール設定で Ngrok クライアントの通信が遮断されていないかもチェック。 |
HTTPS証明書エラー(ブラウザ警告) | Ngrok は公開URLに対し自動で有効なSSL証明書を付与します。Ngrokで分配された https:// URLでのみアクセスしているか確認。エラーがローカルドメイン時のみ発生する場合は ServBay 側のSSL設定を見直しましょう。 |
接続断や遅延 | ローカルのネット回線安定性を確認。ネットワーク不安定時はトンネルが途切れる場合があります(可能なら有線接続推奨)。高安定・高帯域が必要な場合は有料プラン検討も。 |
ServBay 既定ページが表示され特定サイトが見れない | ngrok http コマンドの <LOCAL_ENDPOINT> と --request-header-add='host: <VIRTUAL_HOST>' で設定した値が正確か再確認。正しいバーチャルホスト名記載が必須です。 |
よくある質問(FAQ)
Q: ServBay のデータベースサービスも公開できますか?
A: Ngrok は主に HTTP/HTTPS 用トンネルサービスです。TCPトンネル機能を使えばDB公開も可能ですが、HTTP用ガイドの範疇を超え、セキュリティ上ローカルDBの外部公開は推奨されません。リモートDB利用時は SSHトンネル等より安全な手段を検討してください。
Q: Ngrok を起動するたび公開URLが変わりますか?
A: 無料プランの場合は
.ngrok-free.app
のサブドメインが原則ランダム発行されます。固定URLを利用したい場合はアカウント登録し Dashboard で設定するか、有料プランへ移行する必要があります。Q: Ngrok の利用で ServBay のパフォーマンスに影響は出ますか?
A: Ngrok 経由となるため若干のネットワーク遅延は発生しますが、開発・テスト・デモ用途なら実用上問題は少ないです。処理の根幹はローカルPCとサイト/アプリの最適化次第です。
まとめ
Ngrok を活用することで、ServBay 利用者はローカル Web 開発成果物を手軽・安全にインターネット上へ共有できます。ネットワーク設定の煩雑さが不要で、リモートコラボ・クライアント向けデモ・モバイル検証・外部サービス連携テストに最適です。トラフィックのリアルタイム監視や高度なセキュリティ機能(有料)も用意されており、ビジネス用途や固定ドメインが求められるシーンでは有料プランの活用をおすすめします。