【多分1番簡単】BungeeCordとWireguardでMinecraftサーバーを自宅のポート開放無しで公開する【Java版・BE版】

IT

どうも、どうもどうも、どうもこんちゃ、ねくすちゃんです。

今回は、BungeeCordとWireguardでMinecraftサーバーを自宅のポート開放無しで公開する方法を解説します。

まあまあ需要のあるトピックではあると思うんですが、調べてもなかなか出てこないんですよね。調べて出てくる数少ない情報を探ってみても、NginxのUDPリバースプロキシを使った方法や、iptablesを使った方法、公開ツールを使った方法しか出てきません。ですが、実はもっと簡単な方法があります。

方法

この方法の一番の特徴は、BungeeCordを自宅の外に置くところです。

BungeeCordとは、Minecraft用のリバースプロキシです。リバースプロキシとは、送られてきたパケットをそのまま横流しするWebサーバーの一種です。(「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典https://wa3.i-3-i.info/word1755.html)

インターネットで流れてきたMinecraftクライアントからのパケットを、VPSのBungeeCordで処理し、そのパケットをWireguardで自宅サーバーに送信します。

それぞれの役割

  • 自宅サーバーではSpigotサーバーとWireguardクライアントをホストします。
  • VPSではBungeeCordとWireguardサーバーをホストします。
  • WireguardはVPSと自宅サーバーをつなぎます。
  • BungeeCordはインターネットとMinecraftサーバーの中間で通信の橋渡しをします。
  • Spigotサーバーは、Minecraftサーバーで言うプラグインサーバーです。

当記事での環境

自宅サーバーOSUbuntu 24.04 LTS
自宅サーバープライベートIP192.168.3.85
自宅サーバーVPN内IP10.0.0.2
VPSVultr Cloud Compute メモリ1GB
VPSのOSUbuntu 24.04 LTS
VPSグローバルIP45.77.xxx.xxx
VPSのVPN内IP10.0.0.1
使用するSSHクライアントTeraTerm
BungeeCordポート25565
BE版接続用ポート(Geyser)19132
Spigotサーバーポート25566
Spigotバージョン1.21.1
Spigotサーバーディレクトリ/opt/spigot

※VPN内IPは、VPS側から自宅サーバーにパケットを送信する際に使用するIPアドレスです。
※VPSはVultrを使っています。お好きなサービスをお使いください。

※BungeeCordポートは25565である必要があります。
※BE版接続用ポートは19132である必要があります。
※Spigotサーバーポートは任意の数字で構いません。

必要なもの

  • 自宅サーバー
  • VPS
  • ドメイン

BungeeCordをVPSで動作させるため、VPSはメモリが1GB以上のものを用意してください。

自宅サーバー&VPS編:下準備

ファイアーウォールを開けておく必要があります。開けるポートは自宅サーバー側は22/tcp、25566/tcp、51820/udp、VPS側は22/tcp、19132/udp、25565/tcp、51820/udpです。

VPS側の22/tcpポートは基本的に常時閉じておいてください

接続できるIPを指定する、公開鍵認証を使う、直接コンソールを操作する、など外部からユーザー名とパスワードだけでログインできないようにしてください。

今回の方法は自宅のポート開放はしないといえど、悪意を持った人がVPSにSSH接続できてしまうと自宅のネットワークまでも操作することができてしまいます。

自宅サーバー編:Spigotサーバーの導入&設定

自宅サーバーにSSH接続します。

OpenJDK 21をインストールします。

/optにspigot用のディレクトリを作成し、移動します。

Spigotをダウンロードし、ビルドします。

SpigotMCのダウンロードページに飛び、BuildTools.jarのリンクを取得します。Chromeだったら右クリックで”リンクのアドレスをコピー”が出てくるかと思います。(どのSpigotバージョンでもBuildToolsのファイル名は同じBuildToolsなので、実際には下のコマンドを実行するだけでいいかもしれない。)
1.21.1の部分は、インストールしたいバージョンを指定しましょう。

ビルドは少し時間がかかるので気長に待ちましょう。

Spigotサーバーの起動コマンドです。1500MのところはSpigotサーバーに割り当てるメモリ量、1.21.1のところはインストールしたバージョンを指定します。

初回起動の際は、eulaがfalseになっているため起動しません。eula.txtでeulaをtrueに設定します。

:wqで保存して終了し、もう一度起動コマンドを実行します。

起動し、Minecraftクライアントから接続できることが確認出来たら、stopでSpigotサーバーを停止します。

BungeeCordに接続するための設定を行います。spigot.ymlを開きます。

下の方にあるbungeecord:falseをtrueにします。

:wqで保存して終了します。次は、server.propertiesを開きます。

online-modeをfalse、server-portを25566にします。

これでSpigotサーバーの導入と設定は完了です。

自宅サーバー編:Wireguardの導入&設定

Wireguard用のConfigを作成します。下のサイトで作成します。

WireGuard Tools - Configuration Generator

『Number of Clients』を「1」
『Endpoint (Optional)』を「45.77.xxx.xxx:51820」(VPSのグローバルIP:51820)
『Use Pre-Shared Keys (Enhanced Security)』にチェック(セキュリティをエンハンスドしてくれるらしい。)

Wireguardをインストールし、/etc/wireguard/wg0.confに先ほど作成したConfigのClient 1をコピーして貼り付けます。

[Interface]の最後にTable = off、[Peer]の最後にPersistentKeepAlive = 30を追記します。

KeyやIPアドレスは一部隠してあります。

:qwで保存し終了します。

Wireguardのsystemdをenableし、restartします。

これで自宅サーバー側の操作は終了です。

VPS編:BungeeCordの導入&設定

VPSにSSH接続します。

OpenJDK 21をインストールします。

/optにspigot用のディレクトリを作成し、移動します。

BungeeCordをダウンロードします。

BungeeCordのダウンロードページに飛び、BungeeCord.jarのリンクを取得します。Chromeだったら右クリックで”リンクのアドレスをコピー”が出てくるかと思います。(どのBungeeCordバージョンでもBungeeCordのファイル名は同じBungeeCord.jarなので、実際には下のコマンドを実行するだけでいいかもしれない。)
1.21.1の部分は、インストールしたいバージョンを指定しましょう。

正常に起動出来たら、endで終了しましょう。

ねくす
ねくす

Spigotサーバーのサーバー終了はstop、BungeeCordのサーバー終了はendです。

BungeeCordのConfigを開きます。

serversに先ほど建てたSpigotサーバーを指定します。

「lobby」はSpigotサーバーにつける名前です。任意の文字列にして構いませんが、少し下にあるprioritiesをそれと同じ文字列にしなくてはなりません。「motd」はサーバーの説明、「address」はSpigotサーバーのIPアドレスとポート番号です。ここでのIPアドレスは、自宅サーバーのVPN内IPです。

hostのポート番号を変更します。

Adminの名前を指定します。md_5のところを自分のMinecraftの名前に変えます。

ip_forwardをtrueにします。

これでConfig.ymlの設定は完了です。ほかにも設定項目があるので、必要な方はMinecraft Japan Wikiをご覧ください。(Minecraft Japan Wiki ツール/BungeeCordhttps://minecraftjapan.miraheze.org/wiki/%E3%83%84%E3%83%BC%E3%83%AB/BungeeCord)

これでBungeeCordの導入&設定は完了です。

VPS編:Wireguardの導入&設定

Wireguardをインストールし、/etc/wireguard/wg0.confに前々項で作成したConfigのServerをコピーして貼り付けます。

[Interface]の最後にTable = off、[Peer]の最後にPersistentKeepAlive = 30を追記します。

KeyやIPアドレスは一部隠してあります。

:qwで保存し終了します。

Wireguardのsystemdをenableし、restartします。

これでWireguardの導入と設定は完了です。

VPSと自宅サーバーがつながっているか確認できます。

自宅サーバー&VPS編:SpigotサーバーとBungeeCordを起動

Spigotサーバーを起動します。

BungeeCordを起動します。

Minecraft Java版を起動し、「マルチプレイ」から「サーバーを追加」に移動し、サーバー名に任意のサーバー名、サーバーアドレスにVPSのIPまたはFQDNを入力します。緑色のアンテナ📶のようなものが表示されたら正常に公開できています。

接続できたら大成功です。

VPS編:BedrockEditionでも接続できるようにする

GeyserMCのサイトに行き、BungeeCord用のプラグインをダウンロードします。

Download | GeyserMC
Download the latest versions of our various projects.

Java版を持っていないBEユーザーでも接続できるようにするFloodgateのBungeeCord用プラグインもダウンロードします。

Download | GeyserMC
Download the latest versions of our various projects.

WinSCPなどのファイル転送ソフトを使い、/opt/bungeecord/pluginsに入れます。その後起動すればBE版からもサーバーに参加することができます。

まとめ

今回は、BungeeCordとWireguardを使い、自宅サーバーを外部に公開する方法を紹介しました。
個人的にはこの方法はNginxなど使うよりも簡単だと感じています。

誤字や質問等などはお問い合わせページ・管理人Misskeyにお願いします。

マテリアル (@nekusu)
nekusuchan.net管理人です。

参考にさせていただいたサイト

【マイクラ】Javaバージョンのインストール方法を紹介!【Ubuntu対応】
https://agepote.jp/yakudatu/java-version-install

【マイクラ】丸わかり!SpigotMCをビルドする手順を紹介します!【ツール対応】https://agepote.jp/mcserver/spigot-build#index_id3

VPSとWireguardとnginxで自宅サーバーをポート開放せずに公開するhttps://qiita.com/nexryai/items/80381f6d3f87ff23d61b

SpigotMC Wiki Installation
https://www.spigotmc.org/wiki/spigot-installation

ツール/BungeeCord
https://minecraftjapan.miraheze.org/wiki/%E3%83%84%E3%83%BC%E3%83%AB/BungeeCord

タイトルとURLをコピーしました