ngrokとは? 役割とUbuntu 24.04でのインストール・使い方を解説

ngrokとは? 役割とUbuntu 24.04でのインストール・使い方を解説

ローカルで動かしているWebアプリやAPIを、外部から一時的に見られるようにしたいことがあります。
たとえば、Ubuntu上で開発中のアプリをスマホから確認したい場合や、Webhookの受信テストをしたい場合です。

そのようなときに便利なのが ngrok です。

この記事では、ngrokの役割、Ubuntu 24.04でのインストール方法、基本的な使い方を、初心者にもわかりやすいように整理して解説します。


ngrokとは何か

ngrokは、ローカルPCやサーバーで動いているサービスを、インターネット越しに一時公開するためのツールです。

たとえば、Ubuntuで localhost:8000 で動かしているアプリがあるとします。
通常、このアプリはそのマシン自身からしかアクセスできません。

しかし、ngrokを使うと、次のような公開URLが発行されます。

https://xxxxxxx.ngrok-free.dev

.devの部分は、アカウント登録時の使用用途の設定によって、.appとなることもあります。

このURLへアクセスすると、ngrokが中継して、Ubuntu上の localhost:8000 に通信を転送してくれます。

つまり、ローカルのサービスに対して、安全なトンネルを作ってくれるのがngrokです。

ngrokの役割

ngrokの主な役割は、ローカル環境のサービスを、ポート開放なしで外部公開することです。

通常、外部から自宅PCやローカルサーバーへアクセスするには、次のような設定が必要になることがあります。

  • ルーターのポート開放
  • グローバルIPアドレスの確認
  • DNS設定
  • HTTPS証明書の設定
  • ファイアウォール調整

しかし、ngrokを使えば、こうした手間を大きく減らせます。

ngrokが役立つ場面

たとえば、次のような用途で便利です。

  • 開発中のWebアプリをスマホから確認したい
  • 自分のPCで動かしているAPIを一時的に公開したい
  • 外部サービスからWebhookを受け取りたい
  • ポート開放せずに動作確認したい

ngrokを使うメリット

ngrokのメリットは、とにかく手軽に公開できることです。

  1. ポート開放が不要
    家庭用ルーターの設定を変えなくても、ローカルのサービスを公開できます。

  2. HTTPSで使える
    公開URLはHTTPSで提供されるため、証明書の準備を自分でしなくても試験公開しやすいです。

  3. 一時公開に向いている
    必要なときだけ起動し、終わったら停止できます。
    開発やテスト用途と相性が良いです。


Ubuntu 24.04でのngrokインストール方法

Ubuntu 24.04では、公式が案内しているAPT経由のインストール方法を使うのが簡単です。

以下を実行します。

curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc \
  | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null \
  && echo "deb https://ngrok-agent.s3.amazonaws.com bookworm main" \
  | sudo tee /etc/apt/sources.list.d/ngrok.list \
  && sudo apt update \
  && sudo apt install ngrok

インストール後、次のコマンドで確認します。

ngrok help

ヘルプが表示されれば、インストールは成功です。


使い始める前の準備

ngrokを使うには、ngrokのアカウントとauthtokenが必要です。
ngrokのサイトでアカウントを作成したら、取得したトークンを次のコマンドで登録します。
トークンは、ngrokのサイトのGetting Started - Setup & Installationに記載されています。

ngrok config add-authtoken <あなたのトークン>

これで、ngrokを使う準備が整います。


ngrokの基本的な使い方

ここでは、Ubuntu上で動かしている簡易Webサーバーを公開してみます。

1. ローカルでWebサーバーを起動する

まず、Pythonの簡易HTTPサーバーを 8000 番ポートで起動します。

python3 -m http.server 8000

これで、Ubuntu上では http://localhost:8000 でアクセスできる状態になります。


2. 別ターミナルでngrokを起動する

次に、別のターミナルを開いて、以下を実行します。

ngrok http 8000

すると、次のようなURLが表示されます。

Forwarding    https://xxxxxxx.ngrok-free.dev -> http://localhost:8000

この https://xxxxxxx.ngrok-free.dev にブラウザでアクセスすると、Ubuntu上の localhost:8000 の内容が表示されます。


3. 停止する

ngrokは、実行中のターミナルで Ctrl + C を押すと停止できます。

停止すると、公開URLも無効になります。


ngrok http 8000 は何をしているのか

ngrok http 8000 は、Ubuntu上の 8000番ポートで動作しているHTTPサービスを、外部へ公開する という意味です。

つまり、流れとしては次のようになります。

  1. Ubuntuでアプリが localhost:8000 で動いている
  2. ngrok http 8000 を実行する
  3. ngrokが公開用のURLを発行する
  4. 公開URLへのアクセスが、Ubuntuの localhost:8000 に転送される

ここで大事なのは、ngrok自身が外部への入口になるという点です。

Ubuntu側で新しくポートを直接インターネットへ開けるわけではありません。
あくまで、ngrokのトンネルを通じてアクセスされます。

HTTP以外にも使える

ngrokはHTTPだけでなく、TCPのトンネルも扱えます。

たとえば、SSH用に22番ポートを公開したい場合は、次のような使い方があります。

ngrok tcp 22

ただし、TCPの利用条件はプランやアカウント設定によって異なることがあるため、実際に使う前に公式の条件を確認しておくと安心です。


よくある勘違い

1. ngrokを入れただけでは公開されない

ngrokは中継役なので、公開したいローカルサービスが実際に起動している必要があります

たとえば ngrok http 8000 を実行しても、8000番ポートでアプリが動いていなければ、アクセスしても正しく表示されません。


2. ルーターのポート開放とは別物

ngrokは、従来のポート開放の代わりとして使えることが多いです。
特に、自宅回線やNAT配下の環境では便利です。


3. 常設公開には向かないことがある

ngrokは、開発や検証、一時的な共有にはとても便利です。
ただし、本番運用や長期の常設公開では、独自ドメイン、可用性、料金プラン、アクセス制御なども含めて検討したほうがよい場合があります。

まとめ

ngrokは、ローカル環境で動いているサービスを、簡単に外部公開できる便利なツールです。

特に次のような場面で力を発揮します。

  • 開発中のWebアプリを一時公開したい
  • Webhookのテストをしたい
  • ルーター設定なしで外部から確認したい
  • HTTPS付きで手軽に公開したい

Ubuntu 24.04でも、APTで比較的簡単に導入できます。
まずは python3 -m http.server 8000ngrok http 8000 の組み合わせで試してみると、仕組みが理解しやすいでしょう。


おわりに

ローカル開発では、「自分のPCでは見えるけれど、外から見せられない」という場面がよくあります。
そのようなとき、ngrokは非常に手軽で便利です。

まずは一時公開の仕組みを体験してみて、必要に応じてWebhookテストや開発環境の確認に活用してみてください。