どうも、コメントをもらうようになってテンション爆上げのnovaです。
サーバーを立てるとき、一番の大変なのがポート開放ですよね。
中にはポート開放できない人もいて(プロバイダとの契約上)、その方はほかにVPSを借りたり、Hamachiを使ってサーバーを立てたりすることしかできません。
けど、「hamachiって怖いって聞くからなぁ」(本当の安全性について筆者は知りません)とか「VPS高いしなぁ」っていう思いがあると思います。
実は、それらを使わなくても無料で自宅サーバーを立てられる方法があるんです!!
今回は、その方法について書いていきます。
Windows前提で話を進めていきます。
クライアント版でのライセンスがどうたらこうたら~同時接続人数に制限がある~等の説明は省きます。
注意点
海外プロキシサーバーを経由するので、少しラグくなる
自分の環境では、350ミリ秒遅延がありました(ポート開放だと、高くても50ミリ秒[環境による])
(2021/02/21追記)コメントで有用な情報をいただきました
日本サーバーを使えばかなり遅延が抑えられるようです(筆者の環境では37ms)- ngrokを閉じるたびに接続先アドレスが変動する
サーバーを起動するたびに新しいアドレスを教える必要があります(有料プランでは固定可)
固定したアドレスやカスタムアドレスを使いたいときは、有料プランを契約してください(今回は説明しません)
ポート開放無しでサーバー構築を可能にするNgrok
早速作業を始めていきましょう。
アカウントを作成する
https://dashboard.ngrok.com/signupへ移動します
「Name」に名前、「E-mail」にメールアドレス、「Password」にパスワードを入力します。
「私はロボットではありません」にチェックを入れ、「Sign Up」で登録します。ロボットならチェックを入れないで、どっか行ってください

GithubやGoogleアカウントを使ってログインすることもできます。
その場合メアド等の入力が不要ですし、管理が楽だと思います。
有料版の登録をしない限り請求はされないのでご安心下さい。
ngrokをダウンロードする
こんな画面(https://dashboard.ngrok.com/get-started/setup)に移動すると思うので、「Download for Windows」をクリックします。

ダウンロードしたzipファイルを解凍して、ngrok.exeを適当なフォルダに保存します
このソフトはインストール不要です
アカウントを紐づけ
この状態ではまだアカウントがダウンロードしたngrok.exeに認識されていないので、設定をします。
https://dashboard.ngrok.com/auth/your-authtokenに移動します

上に表示されてるトークンを「Copy」をクリックしてコピーします
これはアカウントの認証に使われるキーなので、他の人に教えないでください!
そしたら、ダウンロードしたngrok.exeをダブルクリックして起動します。
黒画面(コマンドプロンプト)が出てくるので、そこに
ngrok authtoken トークン
を入力して実行します。
これでアカウントが紐づけされました。
ngrok起動
さっき開いた黒画面(閉じていたらngrok.exeをダブルクリックして再度開きます)に、
ngrok tcp 25565 --region jp
を入力して実行します。
(2021/02/21追記)–region jpで日本サーバーを使えるようです
これでngrokが起動し、パケット(ネットから送られてくるデータ)を自分のPC(サーバー)に転送できるようになりました!
この黒画面はサーバーを動かしている間、開いたままにしておいてください
サーバーを起動
では、マイクラサーバーを起動しましょう!
筆者はとりあえず公式サーバーソフトウェアを使うことにします。
SpigotやPaperなど、ほかのサーバーソフトも使えます。
起動やセットアップの仕方は省略します。
サーバーに接続
ではでは!サーバーに接続してみましょう!!
さっき開いたままにしておいた黒画面を見てください。

黒で囲ったアドレスをコピーしておきます(tcp://は不要です)
※環境によってアドレスは異なります。
マイクラを起動します。
「マルチプレイ」の「サーバーを追加」で「サーバーアドレス」に先ほどコピーしたアドレスを入力します(:以降も忘れずに!!)

サーバーに接続します。

ほーらできた!!
他のプレイヤーにも同じアドレスを教えます(グローバルIPとは別物なので、サーバー主もほかのプレイヤーも同じアドレスで接続します)
チェックも成功!!↓

まとめ
ポート開放無しでサーバーを動かせるようになったことで、少しサーバー運営のハードルも下がったのではないでしょうか?
このような素晴らしいソフトウェアを開発してくださった方々に感謝です!!
ちなみにですが、このngrokはマイクラサーバー以外にもwebサーバー公開など、幅広い用途で使えます。
コメント
こんにちは。
spigot+geyserを使ってサーバーを建ててみて、ngrokのipでjava版からの接続はできましたが
be(win10版)からの接続はできませんでした。
どうすればbeからも接続が可能になるでしょうか。
教えてください。
ngrokはTCP(JEが使用する通信方式)のみでUDPパケット(BEが使用する通信方式)の転送をサポートしていないようです。
代替方法としては
・UDPをTCPに変換してngrokを通して通信する(全員にデータを変換するソフトを起動してもらわないといけない)
・ポート開放をなんとかする
などがあると思います
いずれにしても高難易度で、前者は私も試したことがないです。
他に方法が見つかれば、記事にしたいと思います
UDPでもポート開放無しで公開する方法が見つかったので紹介します
https://novablog.work/make-crossplay-server/
ngrokでサーバーを立てている方に…
ngrokでサーバーを立てていて反応速度が遅いと感じ一旦あきらめたのですが…
最近になり海外の動画を見ていて中継サーバーを選べるとゆうことを知り試した結果
ものすごい軽くなったので同じような症状の方へ…
例)
/home/username/.ngrok2/ngrok.yml
このngrok.ymlの中にregion: jpと入力するだけ
ngrok.ymlの中ははじめはauthtoken: [token]があるだけですが
その下にregion: jpと入力すると中継サーバーが日本になり通信にかかる
ラグがなくなり通信が早くなります!!
参考サイトhttps://symfoware.blog.fc2.com/blog-entry-2358.html
海外の動画https://youtu.be/dC-hecmyxr4
有用な情報をありがとうございます!
参考にさせていただきます
これをするのにバージョンは関係ありますか?
特に関係ないと思います
なんか開けなくなりました。やっぱversion関係あるんじゃ,、、
Java版限定ですか?