マルチプレイをしたいけどポート開放が面倒とか、ネットワーク上の問題でポート開放ができないとかで困ってる人向けにngrokを使って一時的に公開する方法。
ngrokでポートフォワーディングします。Minecraftサーバ自体の立て方については解説しません。

注意

この方法は0.tcp.ap.ngrok.io:<PORT><PORT>を変えてアタックしまくれば誰でもサーバに入れてしまう環境になります。ホワイトリストやプラグインによるIP制限などを実施し、知らない人が入ってきたり荒らされたりしないように十分注意しましょう。
この記事に記載されている内容を実行し、発生したいかなる問題について当サイト管理者は一切責任を負いません。自己責任でお願いします。

今回は説明のために割と画像やらGIFを多用します。

環境

Windows以外のOSの場合は適量読み替えてください。

  • OS: Windows 10 2004 (Build 19041.630)
    winver
  • ngrok version 2.3.35

目次

  1. 注意
  2. 環境
  3. 目次
  4. やり方
    1. ngrokへ登録
    2. ngrokのコマンドラインツールをダウンロード
    3. ngrokのアカウントを連携
    4. ngrokでサーバ(ポート)を公開する
    5. 完了
  5. 2回目以降
  6. 備考

やり方

ngrokへ登録

ngrok.comへアクセス、右上のSign upから適当な名前(ハンネとかで良い)、有効なE-mailアドレス、パスワードを入れロボット認証を行い「Sign Up」をクリック。

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

Download for Windows」をクリックして、Windows版のngrokをダウンロードします。ZIPファイルがダウンロードされるので展開して中にあるngrok.exeをデスクトップとかサーバのフォルダとかに移動させておきます。
もしPATHを通すという作業ができるのであれば、適当なところにおいてPATHを通すとどこをカレントディレクトリにしても使えるので楽ですが、この記事ではPATHを通さない前提で話を進めます。

とりあえず、ここではデスクトップに「test」というフォルダを作りそこにngrok.exeを移動させました。

ngrokのアカウントを連携

自分のPCにngrokの認証情報を保存する必要があるので、アカウント連携をしなければなりません。この記事ではPowerShellを使ってコマンドを入力・実行しますが、コマンドプロンプト(cmd)でも構いません。

まず、先ほどngrok.exeを移動させた先のフォルダで「Shift + 右クリック」し、「PowerShell ウィンドウをここで開く」をクリックします。

もしくは、エクスプローラーのアドレス欄をクリックし、powershellと入力して開いても構いません。

PowerShellが開いたら、先ほどngrokをダウンロードしたページに戻りConnect your accountの欄を確認しましょう。./ngrok authtoken <TOKEN>とトークンが書かれているので、<TOKEN>に当たる部分をコピーします。

PowerShellに戻り、.\ngrok.exe authtoken <TOKEN>と実行します。当然実行する前に<TOKEN>の部分はページに記載されているコピーしたトークンに置き換えること。
Authtoken saved to configuration file:と表示されれば成功です。

ngrokでサーバ(ポート)を公開する

最終工程として、Minecraftサーバのデフォルトポートである25565ポートをngrokで公開し外部からログイン可能にします。

先ほどのPowerShellで.\ngrok.exe tcp --region ap 25565と実行しましょう。
Session Statusonlineと表示され、Forwarding欄にアドレスが表示されていれば成功です。

サーバにログインする人にアドレスを教える場合はtcp://0.tcp.ap.ngrok.io:<PORT>0.tcp.ap.ngrok.io:<PORT>の部分、上記画像で言えば0.tcp.ap.ngrok.io:13915を教えましょう。

ちなみに、他の記事では--region apを付けていないケースが多いですがデフォルトだとアメリカの鯖が選ばれてしまうので無茶苦茶遅いです。--region apをつけてasiaを選ぶことをお勧めします。

完了

実際にログインできれば成功です。サーバを立てている自分自身はわざわざネットワーク上のサーバを介する必要はないので、localhost:25565でログインしましょう。

2回目以降

2回目以降は、.\ngrok.exe tcp --region ap 25565を実行するだけで同じようにサーバ(ポート)を公開できます。しかし、いちいちPowerShellを開くのも面倒なのでこのコマンドを実行できるファイルを作っておきます。

start.batというファイルを作成し、以下のコマンドを入力し保存してください。

ngrok.exe tcp --region ap 25565
pause

保存したら、あとはこのファイルをダブルクリックするだけでサーバ(ポート)を公開できます。

備考

  • serveoというサービスもありますが、難易度は高めです(生SSH接続でポートフォワーディングするので)
  • 独自ドメインとかVPSとか持っているなら、SSHポートフォワーディングして独自ドメイン経由でやったほうがいちいちアドレスも変わらないのでそららを選べるならそっちの方が…。