🎮

ngrokでMinecraftサーバを公開する

2021/05/09に公開

主に Minecraft Java Edition のマルチプレイをしたいけどポート開放が面倒とか、ネットワーク上の問題でポート開放ができないなどで困っている人向けに ngrok(エングロック)というサービスを使って 一時的に 公開する方法の解説です。

Minecraft サーバの立て方などは説明しません。
Minecraft でなくても、TCP というプロトコルで通信する場合は ngrok が利用できます。統合版の場合は UDP なので、localtonet などがおすすめかもしれません。このへんの記事 がよさそうです。

環境

  • Windows 11 Pro 23H2 (Build 22631.3296)
  • ngrok 3.8.0

やり方

1. ngrok へ登録

まず、ngrok.com へアクセスします。
Sign Up にて、以下の項目を入力し、Sign up をクリックしてください。

  • Name: 適当な名前(ハンネなどでよい)を入力
  • Email: 受信可能・有効なメールアドレスを入力
  • Password: 任意のパスワードを入力
  • ロボット認証を実施
  • I accept the terms of service and privacy policy: チェックをいれる

2. ngrok のコマンドラインツールをダウンロード

ngrok は exe ファイルそのもののダウンロードに加え、chocolatey や Scoop でもインストールが可能です。

exe ファイルダウンロードによるインストール

ダッシュボードのセットアップページ にて、Download タブをクリックし、Download for Windows (64-Bit) をクリックします。

Zip ファイルがダウンロードされるので展開し、中身の exe ファイルを任意の場所に移動してください。

chocolatey でのインストール

以下のコマンドでインストールできます。

choco install ngrok

Scoop でのインストール

以下のコマンドでインストールできます。

scoop install ngrok

3. ngrok のアカウントを連携

自分のパソコンに ngrok の認証情報を保存する必要があるので、アカウント連携をしなければなりません。

先ほどの ダッシュボードのセットアップページ にて、ngrok config add-authtoken から始まるコマンドをコピーします。
右側にあるコピーアイコンをクリックすると、簡単にコピーできます。

次に、コピーしたコマンドを自分のパソコンで実行します。

exe ファイルをダウンロードした場合は、以下の手順で PowerShell を起動し、コマンドを実行します。

ngrok.exe ファイルを置いたフォルダをエクスプローラーで開き、何もないところを「Shift + 右クリック」します。
するとメニューが出てくるので、「PowerShell ウィンドウをここで開く」をクリックします。

PowerShell が開いたら、先ほどコピーしたコマンドの ngrok という文字を .\ngrok.exe に置き換えつつ入力してください。
たとえば、ngrok config add-authtoken XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX とコピーしていたら .\ngrok.exe config add-authtoken XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX と書き換えます。
入力し終えたら Enter で実行します。

chocolatey や Scoop でインストールした場合は、PATH に登録されているかと思うので、PowerShell などを起動してコピーしたコマンドをそのまま(.\ngrok.exe に書き換えずに)実行してください。

4. ngrok でサーバ(ポート)を公開

アカウント連携ができたら、いよいよサーバを公開します。

Minecraft のサーバを立ち上げたうえで、先ほどと同じように PowerShell を起動し、以下のコマンドを実行します。
exe ファイルでインストールした方は ngrok.\ngrok.exe に書き換えて実行してください。

ngrok tcp 25565

以下のように表示され、Session Status 欄で online になれば接続できます!

サーバアドレスは、 Forwarding 欄にある 0.tcp.jp から始まるアドレスがそれにあたります。下記の画像であれば、0.tcp.jp.ngrok.io:15826 です。

5. ログインできれば完了

実際に確認したアドレスでログインしてみて、ログインできれば成功です🎉

2回目以降

2 回目以降は、先ほどと同じように ngrok tcp 25565 のコマンドを実行することで、同じようにサーバを公開できます。
しかし、いちいち PowerShell を開くのも面倒なのでこのコマンドを実行できるファイルを作っておきます。

まず、拡張子を表示させるための設定をします。エクスプローラーで、以下のように 表示表示 と進み、ファイル名拡張子 の箇所にチェックが入るようにクリックしてください。

テキストファイルを作成し、start.bat というファイルを作成します。

以下のように、「ファイルが使えなくなる可能性があります」という画面が出たら「はい」をクリックしてください。

start.bat ファイルを右クリックし、編集 を押します。

メモ帳アプリが開くので、以下を入力し保存します。
exe ファイルでインストールした方は ngrok.\ngrok.exe に書き換えて実行してください。

ngrok tcp 25565
pause

ここまで準備できれば、あとは作成した start.bat をダブルクリックするだけで、サーバが公開できるようになります💪

公開ドメインについて

なにも設定せずそのまま公開する場合、以下のドメインが使われます。

  • http の場合: xxxx-xxxx-xx-xxxx-xxx-xxxx-xxxx-xxxx-xxxx.ngrok-free.app (x には小文字英数字が入る)
  • tcp の場合: 0.tcp.jp.ngrok.io:xxxxx

http の場合サブドメイン部分が、tcp の場合ポート番号が公開作業を行うごとにランダムで設定されます。

無料プランにおいては、以下のように設定することでサブドメイン部分を固定値にできます。
固定値といっても、ユーザーが自由に決められるわけではなく、予約時にサービス側が勝手に割り振るような仕組みとなっています。

1. ngrok のダッシュボードにログイン

ngrok のダッシュボード にアクセスし、登録したメールアドレスとパスワードでログインします。

2. Domains ページにアクセス

ログインしたら、左側ナビゲーションバーにて、Cloud Edge の Domains をクリックします。

3. ドメインを作成(予約)

Create Domain をクリックします。

Your static domain ... has been created と表示され、右側に Start a Tunnel という画面が表示されます。
Close で閉じます。

Domain 画面が表示されるので、Domain 欄のコピーアイコンをクリックします。

4. 予約ドメインを使ってサーバ(ポート)を公開

PowerShell を開き、以下のコマンドを実行します。
実行前に以下の部分を置き換えてください。

  • <コピーしたドメイン名>: 先ほどコピーしたドメイン名
  • <ポート番号>: 公開するポートの番号。80 など
ngrok http --domain=<コピーしたドメイン名> <ポート番号>

有料プランについて

2024/05/04 時点では、大きく固定額サブスクリプションの development プランと、利用量に応じた従量課金の production プランがあるようです。金額の記載はいずれも月額料金です。

  • production
    • 18 ドルから
  • development
    • Personal: 8 ドル
    • Pro: 20 ドル
    • Enterprise: 39 ドル

各プランの差をこの場で具体的に示すのは大変なので、詳しくは Pricing をご覧ください。

GitHubで編集を提案

Discussion