Java版マインクラフトでCloudflare TunnelとVPSを使ってポート開放をせずに外部に公開する
当初自宅サーバーでマイクラ鯖を立て、ngrokやlocaltunnelでポートを転送して複数人で快適にプレイしていたのですが、どちらも転送量1GBや独自IPに制約があり、ちょうど自分が持っていた月額400円のVPSをポート転送に使えるようにしてみました。
必要な知識
・Ubuntuの基本的な操作
・systemctl
自宅サーバー(ミニPC)
CPU Ryzen7 5700U
メモリ 16GB
SSD 512GB
月額400円のVPSの性能
CPU 1vCPU
メモリ 1GB
SSD 20GB
NW 100Mbps上限
IP IPv4/IPv6
ポートの転送を行っているだけなので、もしかしたらReplit等の最低限のスペックでも動くかも、
試した方がいらっしゃったらコメントいただけると嬉しいです。
今回ポートは25555を使用します。深い意味はありませんが、外部に公開する都合上デフォルトのポートは少し怖いので変えました。
cloudflaredの設定方法はそこら辺の記事通りにしたらいけるので各種調べてください(丸投げ)
今回は繋げることができれば良いので、VPSの25555をローカルの25555にそのまま転送しています。
もし複数サーバーとかで運用したければ他のポートに転送することもできます。
自宅サーバー
cloudflared tunnel run
cloudflared access tcp --hostname minecraft.example.com --url localhost:25555
リレーサーバ
cloudflared access tcp --hostname minecraft.example.com --url 0.0.0.0:25555
これで起動することができました。
マイクラ側で、VPSのIPアドレス:ポートからアクセスすることができます。
cloudflaredで設定したhostnameになるのかと思いましたが、どうやらトンネルで使われるDNS名っぽいですね。
IPアドレスではなくドメインを使いたい場合は、Aレコードを設定すればいけそうです。
ちなみにBedrock版マインクラフトでは、通信にTCPではなくUDPを用いていますが、Cloudflared TunnelはUDPも対応してるっぽさそうなので、多分いけます。
肝心の遅延ですが、マイクラ内のF3+3で確認してみると、ローカルと比較した時の遅延は10ms以内に収まっていて、5人ぐらいで複数ディメンションとかTTで放置するようなプレイでも安定してます。
消費電力の少ないミニPCと中々相性良さそうです。
それでは、良きマイクラライフを〜
Discussion