【無料】M1・M2 MacでJava版マイクラサーバー「SpigotMC」の立て方

  • URLをコピーしました!
Java版マイクラ「SpigotMC」を自宅サーバーで構築!
Java版マイクラ「SpigotMC」を自宅サーバーで構築!

無料で外部に公開するサーバーを立てます。
つまり友達の家からでも接続できるサーバーを構築します。

  • 無料と書いてある通りレンタルサーバーを使いません。
  • 準備するものは、自宅のPCとインターネット回線だけです。

僕は企業で最高技術責任者(CTO)をしています。

当然、プロのITエンジニアです。

そんな僕がどうしてマイクラサーバーの立て方を記事にしているのか?

現状検索してヒットする記事ではマイクラ鯖を外部に公開するのが無理だからです。

この記事では

  • 誰でも統合版マイクラサーバーを立てれるようにします。
  • ConoHa WINGなど課金サーバーを使いません。
  • 家のネットワーク環境をイジります。

ConoHa WING、Minecraft Realms(レルムズ)などの課金サーバーを使いません。

すべて無料でサーバーを外部に公開します。

※実際、僕がこの記事の通りに作業して外部にサーバーを公開しているので、時間を使ってじっくり読んでもらって大丈夫です。

この記事だけでサーバー構築の知識が完結するように、ネットワークに関するIT用語は末尾に「用語解説」を載せています。

目次

SpigotMC はプラグインサーバー!

Minecraft SpigotMC 「GETBUKKIT」配布サイト
Minecraft SpigotMC 「GETBUKKIT」配布サイト
  • SpigotMC
    • 1.19.2、1.18.2、etc
    • 公式:https://SpigotMC.io/
    • 配布:https://getbukkit.org/

上記URLからSpigotMCの公式ホームページに行きます。

右上の「Downloads」からサーバーファイルの配布ページに移動できます。

本記事で立てる「SpigotMCサーバー」の環境

サーバー環境

  • M1・M2 Mac ※Intel Macでもオッケー
  • SpigotMC 1.18.2 サーバー
  • Javaランタイム環境
  • フォルダ場所はC:\SpigotMCで作業 ※場所はどこでも良いです
  • ポート開放ツールを使わない

OSはM1・M2 Macを使いますが、通常のIntel Macでも構いません。Javaを使うので、どんな環境でも動作するからです。

その他、疑問点を以下にまとめたので読むと理解が深まると思います。

本記事のOSは?

OSはM1・M2 Macです。

Javaを使うので、Intelでも、arm64でもどちらでも動作します。

なんでSpigotMCを使うのか?

マイクラを拡張するプラグインを使えるからです。

なんでSpigotMCのバージョンは"1.18.2"を使うのか?

1.18.1以降のバージョンはLog4Shell対策でJVMの起動時に追加引数なしで対応しているからです。ただ、他のバージョンでも対策できるので、特にこだわりはありません。

使いたいModのバージョンに合わせて、鯖を立ててみて下さい。

なんでポート開放ツールを使わないのか?

ポート開放ツールを使わない方がネットワークの理解に役立つからです。

公式サーバー(バニラ鯖)とSpigotMCサーバーの違いは?

公式サーバー(バニラ鯖)ではプラグインを使えません。

M1・M2 Macに無料でMinecraftサーバーを建てる!流れ

引用:マインクラフト

M1・M2 Macに無料でマイクラサーバーを建てる!流れは下の通りです。

解説のために多少長ったらしい冗長な手順にしています。

なので、サーバーを外部に公開する仕組みが分かっている人は「ローカル環境からサーバーに接続する」という手順を省いてもらって構いません。

鯖を建てる流れ

  • ① M1・M2 Mac環境設定
    • Homebrew
    • Java
    • IPアドレスを調べる
       
  • ② マイクラサーバーをダウンロード
     
  • ③ マイクラサーバーを起動する
     
  • ④ ポート開放
     
  • ⑤ 接続テスト1:ローカル環境からサーバーに接続する
     
  • ⑥ ルーターを設定して、サーバーを外部に公開する
     
  • ⑦ 接続テスト2:グローバル環境からサーバーに接続する

上から順に作業を進めていきます。

サーバーを立てるポイント

  • ローカル環境(内部)でのサーバー接続
  • グローバル環境(外部)でのサーバー接続

ほとんどの人はローカル環境(内部)でのサーバー接続グローバル環境(外部)でのサーバー接続の違いを理解できていません。

結果が同じなので、その違いが分からないのかも知れません。

サーバーを建てる際は、必ずローカル環境とグローバル環境の違いを意識するようにしましょう。

M1・M2 Macでターミナルを使う

M1・M2 Macで検索欄にターミナルと入力する
M1・M2 Macで検索欄にターミナルと入力する

M1・M2 Macで検索欄から"ターミナル"と入力すればターミナルが表示されます。

そのまま"Enter"を押せばターミナルが起動します。

起動のやり方は他にもあります。

任意のフォルダ直下でターミナルを起動させる

M1・M2 Macのターミナルの起動に"フォルダに新規ターミナル"を使えば時短になる
M1・M2 Macのターミナルの起動に"フォルダに新規ターミナル"を使えば時短になる

ターミナルの起動には、任意のフォルダで"右クリック"⇒"ターミナルで開く"の方が時短になります。

ターミナル上でcdコマンドを使ってフォルダを移動するのも良いですが面倒です。

例えば、ターミナルでマイクラのサーバーフォルダを直接開く

M1・M2 Macのターミナルをフォルダから直接起動
M1・M2 Macのターミナルをフォルダから直接起動

フォルダを"右クリック"⇒"ターミナルで開く"で開けば、わざわざマイクラサーバーの場所にcdコマンドで移動する必要がありません。

任意のフォルダ直下で"右クリック"⇒"フォルダを新規ターミナル"でターミナルを起動する方が楽です。

① M1・M2 Mac環境設定

マイクラのサーバー構築に必要な環境を設定していきます。

環境設定の流れ

  • ① Homebrew
  • ② OpenJDK(javaランタイム)
  • ③ ローカルIPアドレス

Homebrewはインストールとパッケージの更新をしておきます。順々にやっていきます。

前準備:Homebrew をインストールする

引用:Homebrew
引用:Homebrew

Homebrewをインストールしておきましょう。Homebrewは、Macユーザーなら100%インストールするパッケージマネージャーです。

※すでにHomebrewをインストールしている方は読み飛ばして下さい。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

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

.zprofileにPATHを追加してくださいと表示されるので下のコマンドを実行します。

==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/ユーザー名/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"
- Run brew help to get started
- Further documentation:
    https://docs.brew.sh

brew -vなどして.zprofileにPATHが追加されたのを確認すれば完了です。

Homebrewの基本的な使い方は下記を参考にして下さい。

準備②:OpenJDK(Java)のインストール

  • OpenJDK
    • https://openjdk.org/

上記URLからインストールファイルを一式ダウンロードできます。

ただ、いちいちサイトに訪問するのも面倒なのでbrewを使ってOpenJDK 17(2022/9/1最新)をダウンロードしていきます。

① OpenJDKインストール
% brew install openjdk@17
Running `brew update --auto-update`...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
distrobox    echidna      kubesess     libff        libplacebo   popeye
==> New Casks
orka-vm-tools                            reflect

You have 2 outdated formulae installed.
You can upgrade them with brew upgrade
or list them with brew outdated.

==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/17/manifests/17.0.4.1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/17/blobs/sha256:ef9bebe
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Pouring openjdk@17--17.0.4.1.arm64_monterey.bottle.tar.gz
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
  sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

openjdk@17 is keg-only, which means it was not symlinked into /opt/homebrew,
because this is an alternate version of another formula.

If you need to have openjdk@17 first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk@17 you may need to set:
  export CPPFLAGS="-I/opt/homebrew/opt/openjdk@17/include"

==> Summary
🍺  /opt/homebrew/Cellar/openjdk@17/17.0.4.1: 640 files, 306.6MB
==> Running `brew cleanup openjdk@17`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

brew install openjdk@17で、openjdk@17をインストールしました。

では、試しにjavaのコマンドを打ってみましょう。

% java -version
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.

% 

上にも書きましたが、シンボリックリンク、openjdk@17のパスを追加していないので、当然にjavaのコマンドは通りません。

② OpenJDKのシンボリックリンク作成
% sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk
Password:

% 

コマンドを打ってパスワードを入力すればシンボリックリンクの作成が完了します。

③ OpenJDK のパスを通す
If you need to have openjdk@17 first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc

For compilers to find openjdk@17 you may need to set:
  export CPPFLAGS="-I/opt/homebrew/opt/openjdk@17/include"

インストール時のプロンプトに上記が表示されます。

OpenJDKのパスを追加して下さい。とのことです。

実行例

% echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
                                                                                
% export CPPFLAGS="-I/opt/homebrew/opt/openjdk@17/include"
                                                                                
%

パス追加のスクリプトを打っても、何も表示されません(これでパスは追加されています。)。

java -versionで確認する
% java -version 
openjdk version "17.0.4.1" 2022-08-12
OpenJDK Runtime Environment Homebrew (build 17.0.4.1+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.4.1+0, mixed mode, sharing)

$ 

Javaのパスが通っているか確認のために、試しにjava -versionを打ってみます。

openjdk version "17.0.4.1"が入っており、無事にJavaのパスが通ってると分かります。

OpenJDKを詳しく知りたい方はこちら

準備③:M1・M2 MacでローカルIPアドレスを調べる

% ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether 3c:a6:f6:39:80:31 
	inet6 fe80::a0:9cb4:a1ea:7f44%en0 prefixlen 64 secured scopeid 0xb 
	inet 192.168.10.103 netmask 0xffffff00 broadcast 192.168.10.255
	inet6 240b:250:89e0:d200:1c6c:b923:d997:677d prefixlen 64 autoconf secured 
	inet6 240b:250:89e0:d200:7c09:806b:dd61:651c prefixlen 64 autoconf temporary 
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active

M1・M2 MacでIPアドレスを調べるコマンドはifconfig en0です。

僕のローカル環境のIPアドレスは192.168.10.103です。192.168.10.103はあくまでローカルIPアドレスであることを押さえておきましょう。

SpigotMCサーバーをダウンロード

Minecraft SpigotMC 1.18.2をダウンロード
  • SpigotMC
    • 1.19.2、1.18.2、etc
    • 公式:https://SpigotMC.io/
    • 配布:https://getbukkit.org/

この記事ではSpigotMC 1.18.2 でJava版マイクラサーバーを立てます。

使いたいSpigotMCサーバーを選べば良いです。

Javaなのでどのファイルを使っても起動のやり方は同じです。

③ SpigotMCサーバーを起動する

% java -Xms1G -Xmx4G -jar spigot-1.18.2.jar

SpigotMCサーバーを起動させるコマンドです。

サーバー起動例

% java -Xms1G -Xmx4G -jar spigot-1.18.2.jar
Unbundling libraries to C:\SpigotMC\bundler
Starting server
Loading libraries, please wait...
[00:35:03] [ServerMain/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[00:35:03] [ServerMain/INFO]: Found new data pack file/bukkit, loading it automatically
[00:35:08] [Worker-Main-5/INFO]: Loaded 7 recipes
[ERROR] Terminal initialization failed; falling back to unsupported
[00:35:12] [ServerMain/INFO]: [STDERR]: java.lang.NoClassDefFoundError: Could not initialize class org.fusesource.jansi.internal.Kernel32
[00:35:12] [ServerMain/INFO]: [STDERR]:         at org.fusesource.jansi.internal.WindowsSupport.getConsoleMode(WindowsSupport.java:50)
:
:
:
[00:35:14] [Server thread/INFO]: Starting minecraft server version 1.18.2
[00:35:14] [Server thread/INFO]: Loading properties
[00:35:15] [Server thread/INFO]: This server is running CraftBukkit version 3498-Spigot-b081915-10ba1be (MC: 1.18.2) (Implementing API version 1.18.2-R0.1-SNAPSHOT)
[00:35:15] [Server thread/INFO]: Debug logging is disabled
[00:35:15] [Server thread/INFO]: Using 4 threads for Netty based IO
[00:35:15] [Server thread/INFO]: Server Ping Player Sample Count: 12
[00:35:16] [Server thread/INFO]: Default game type: SURVIVAL
[00:35:16] [Server thread/INFO]: Generating keypair
[00:35:16] [Server thread/INFO]: Starting Minecraft server on *:25565
[00:35:18] [Server thread/INFO]: Using default channel type
[00:35:19] [Server thread/INFO]: Preparing level "world"
[00:35:20] [Server thread/INFO]: -------- World Settings For [world] --------
[00:35:20] [Server thread/INFO]: Item Merge Radius: 2.5
[00:35:20] [Server thread/INFO]: Item Despawn Rate: 6000
[00:35:20] [Server thread/INFO]: View Distance: 10
[00:35:20] [Server thread/INFO]: Simulation Distance: 10
[00:35:20] [Server thread/INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
:
:
:
[00:35:20] [Server thread/INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[00:35:20] [Server thread/INFO]: Experience Merge Radius: 3.0
[00:35:20] [Server thread/INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[00:35:39] [Server thread/INFO]: -------- World Settings For [world_nether] --------
[00:35:39] [Server thread/INFO]: Item Merge Radius: 2.5
[00:35:39] [Server thread/INFO]: Item Despawn Rate: 6000
[00:35:39] [Server thread/INFO]: View Distance: 10
[00:35:39] [Server thread/INFO]: Simulation Distance: 10
[00:35:39] [Server thread/INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
:
:
:
[00:35:39] [Server thread/INFO]: Custom Map Seeds:  Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Nether: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645
[00:35:39] [Server thread/INFO]: Max TNT Explosions: 100
[00:35:39] [Server thread/INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[00:35:39] [Server thread/INFO]: Experience Merge Radius: 3.0
[00:35:39] [Server thread/INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[00:35:41] [Server thread/INFO]: -------- World Settings For [world_the_end] --------
[00:35:41] [Server thread/INFO]: Item Merge Radius: 2.5
[00:35:41] [Server thread/INFO]: Item Despawn Rate: 6000
[00:35:41] [Server thread/INFO]: View Distance: 10
[00:35:41] [Server thread/INFO]: Simulation Distance: 10
[00:35:41] [Server thread/INFO]: Allow Zombie Pigmen to spawn from portal blocks: true
[00:35:41] [Server thread/INFO]: Zombie Aggressive Towards Villager: true
[00:35:41] [Server thread/INFO]: Nerfing mobs spawned from spawners: false
:
:
:
[00:35:41] [Server thread/INFO]: Custom Map Seeds:  Village: 10387312 Desert: 14357617 Igloo: 14357618 Jungle: 14357619 Swamp: 14357620 Monument: 10387313 Ocean: 14357621 Shipwreck: 165745295 End City: 10387313 Slime: 987234911 Nether: 30084232 Mansion: 10387319 Fossil: 14357921 Portal: 34222645
[00:35:41] [Server thread/INFO]: Max TNT Explosions: 100
[00:35:41] [Server thread/INFO]: Tile Max Tick Time: 50ms Entity max Tick Time: 50ms
[00:35:41] [Server thread/INFO]: Experience Merge Radius: 3.0
[00:35:41] [Server thread/INFO]: Hopper Transfer: 8 Hopper Check: 1 Hopper Amount: 1
[00:35:43] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[00:35:44] [Worker-Main-5/INFO]: Preparing spawn area: 0%
:
:
:
[00:36:55] [Worker-Main-6/INFO]: Preparing spawn area: 98%
[00:36:55] [Server thread/INFO]: Time elapsed: 72408 ms
[00:36:55] [Server thread/INFO]: Preparing start region for dimension minecraft:the_nether
[00:36:56] [Worker-Main-6/INFO]: Preparing spawn area: 0%
:
:
:
[00:37:26] [Worker-Main-4/INFO]: Preparing spawn area: 95%
[00:37:27] [Worker-Main-6/INFO]: Preparing spawn area: 97%
[00:37:27] [Server thread/INFO]: Time elapsed: 32322 ms
[00:37:27] [Server thread/INFO]: Preparing start region for dimension minecraft:the_end
:
:
:
[00:37:32] [Worker-Main-4/INFO]: Preparing spawn area: 83%
[00:37:32] [Server thread/INFO]: Time elapsed: 4888 ms
[00:37:32] [Server thread/INFO]: Done (133.421s)! For help, type "help"
>

サーバーを起動するとポート番号などの設定値が表示されます。

起動時には表示を見る癖をつけると良いでしょう。

起動時の表示にサーバー情報が出る!

[00:35:16] [Server thread/INFO]: Starting Minecraft server on *:25565

SpigotMCサーバーの起動を確認したら一旦閉じます。

初回サーバー起動時はeula.txtでこける

% java -Xms1G -Xmx4G -jar spigot-1.18.2.jar
Unbundling libraries to C:\SpigotMC\bundler
Unpacking spigot-1.18.2-R0.1-SNAPSHOT.jar (versions:spigot-1.18.2-R0.1-SNAPSHOT.jar) to C:\SpigotMC\bundler\versions\spigot-1.18.2-R0.1-SNAPSHOT.jar
Unpacking asm-9.2.jar (libraries:asm-9.2.jar) to C:\SpigotMC\bundler\libraries\asm-9.2.jar
:
:
:
Unpacking spigot-api-1.18.2-R0.1-SNAPSHOT.jar (libraries:spigot-api-1.18.2-R0.1-SNAPSHOT.jar) to C:\SpigotMC\bundler\libraries\spigot-api-1.18.2-R0.1-SNAPSHOT.jar
Unpacking sqlite-jdbc-3.36.0.3.jar (libraries:sqlite-jdbc-3.36.0.3.jar) to C:\SpigotMC\bundler\libraries\sqlite-jdbc-3.36.0.3.jar
Starting server
Loading libraries, please wait...
[00:13:04] [ServerMain/ERROR]: Failed to load properties from file: server.properties
[00:13:04] [ServerMain/WARN]: Failed to load eula.txt
[00:13:04] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
[00:13:04] [ServerMain/WARN]: Failed to load eula.txt
[00:13:04] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

初回サーバー起動時はeula.txtを設定する必要があります。

eula=trueにする
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Mon Sep 12 00:13:04 JST 2022
eula=true

eula.txtの設定は以上です。

④ ローカルマシン(M1・M2 Mac)のポート開放

なんとMac(M1・M2含む)ではファイアーウォールがデフォルトで無効
なんとMac(M1・M2含む)ではファイアーウォールがデフォルトで無効

Mac(M1・M2含む)でポート開放をしましょう。

とは言え、Macはデフォルトでファイアーウォールがオフ(無効)になっています。

なので、マイクラのポート開放に関わらず、Macを買ったら必ずファイアウォールをオン(有効)にしてください。アプリでは必ずポートを利用する通信が発生しているからです。

ファイアウォールがオフ(無効)だと、セキュリティ的には"ガラ空き"で使っていることになります。

例:OpenJDK(Java)のポートを開放する

M1・M2 Macでポップアップ表示されるポート開放画面(OpenJDKの場合)
M1・M2 Macでポップアップ表示されるポート開放画面(Nukkitサーバーの場合)

Mac(M1・M2含む)でOpenJDK(Java)ポートを解放しましょう。

ファイアウォールをオンにした状態で、マイクラサーバーを起動させてください(Javaを実行します。)。

マイクラサーバープログラムを実行すると自動でポート開放画面がポップアップ表示されます(上の画像)。

これを「許可」をすれば、ポート開放が完了します。

厳密には、Javaプログラムをネットワーク上で受信する許可です。

  • Java版マイクラサーバー受信ポート:25565/TCP
  • 統合版マイクラサーバー受信ポート:19132/UDP

つまり、Javaで実行されるプログラムすべてが受信許可される設定です。

Mac(M1・M2含む)のファイアウォールは個別に受信ポートを設定するわけではなく、プログラムごとで受信設定します。

⑤ 接続テスト1:ローカル環境からサーバーに接続する【Java版】

IPアドレスの確認、ローカルマシンのポート開放も済んだので、ローカル環境からサーバーに接続テストをしましょう(以下、ローカル接続テストと言います。)。

下記手順で進めましょう。

ローカル接続テスト手順

  • 1)Java版マイクラサーバーを起動する。
  • 2)IPアドレス・ポート番号を再度確認する。
  • 3)マイクラランチャーをバージョン1.18.2にする。
  • 4)自宅のパソコンからサーバーにアクセスする。

当然、IPアドレス、ポート番号が必要になるので、どこかにメモっておきましょう。

先ずはサーバーを起動しましょう。

1)Java版マイクラサーバー「SpigotMC」を起動する。

Minecraft SpigotMC サーバー起動
Minecraft SpigotMC サーバー起動
PS C:\SpigotMC> java -Xms1G -Xmx4G -jar spigot-1.18.2.jar

SpigotMCサーバーを起動させるコマンドです。

2)IPアドレス・ポート番号を再度確認する。

% ifconfig en0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6463<RXCSUM,TXCSUM,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether 3c:a6:f6:39:80:31 
	inet6 fe80::a0:9cb4:a1ea:7f44%en0 prefixlen 64 secured scopeid 0xb 
	inet 192.168.10.103 netmask 0xffffff00 broadcast 192.168.10.255
	inet6 240b:250:89e0:d200:1c6c:b923:d997:677d prefixlen 64 autoconf secured 
	inet6 240b:250:89e0:d200:7c09:806b:dd61:651c prefixlen 64 autoconf temporary 
	nd6 options=201<PERFORMNUD,DAD>
	media: autoselect
	status: active

M1・M2 MacでIPアドレスを調べるコマンドはifconfig en0です。

僕のローカル環境のIPアドレスは192.168.10.103です。192.168.10.103はあくまでローカルIPアドレスであることを押さえておきましょう。

ポートは上のサーバー起動の表示から25565/TCPだと分かります。

3)マイクラランチャーのバージョンを1.18.2にする。

起動構成を開いて「新規作成」を押します。

バージョン欄から「release 1.18.2」を選びます。そして「作成」を押します。

ちなみに「名前」は任意です。本記事では「SpigotMC」にしました。

「SpigotMC 1.18.2」を選んでからマイクラを起動します。

4)自宅のパソコン(ローカル環境)からサーバーにアクセスする。

ローカル環境からサーバーに接続する端末選びですが「自宅のネットに接続したパソコン」を使うと良いでしょう。

細かなことが分からなければ、とりあえず「自宅のネットに接続したパソコン」でサーバーに接続してみて下さい。

M1・M2 Macで自宅サーバー(マイクラ Java Edition)にローカル接続テスト!
M1・M2 Macで自宅サーバー(マイクラ Java Edition)にローカル接続テスト!

「自宅のネットに接続したパソコン」でMinecraftを起動します。

次に「マルチプレイ」を押します。

「サーバーを追加」を押します。

Java版マイクラ自宅サーバーのアドレス(ローカル)を追加
Java版マイクラ自宅サーバーのアドレス(ローカル)を追加

サーバーアドレスにIPアドレス:ポートの組み合わせで入力します。

僕の環境では192.168.10.103:25565です。

入力したら「完了」を押します。

Java版Minecraftサーバーにローカルから接続テスト
Java版Minecraftサーバーにローカルから接続テスト

サーバーを起動させているのでオンライン情報📶が表示されてます。

そのまま「サーバーに接続」を押します。

Java版マイクラ自宅サーバーに接続中
Java版マイクラ自宅サーバーに接続中

サーバー接続中の表示になるので暫く待ちます。

M1・M2 MacでSpigotサーバー(マイクラ Java Edition)にログイン!
M1・M2 MacでSpigotサーバー(マイクラ Java Edition)にログイン!
M1・M2 MacでもSpigotサーバー(マイクラ Java Edition)は軽快に動作!
M1・M2 MacでもSpigotサーバー(マイクラ Java Edition)は軽快に動作!

ログインできれば、ローカル接続テストは成功です。

Spigotサーバー(マイクラ Java Edition)プロンプト
Spigotサーバー(マイクラ Java Edition)プロンプト
Spigotサーバー(マイクラ Java Edition)GUI
Spigotサーバー(マイクラ Java Edition)GUI

M1・M2 MacのJava版マイクラサーバー(SpigotMCサーバー)に、"アカウントA"でログインできてるのが分かると思います。

念の為、サーバーのプロンプトも確認しておきましょう。

特に、この表示に注目してください。

[01:24:50] [Server thread/INFO]: アカウントA[/192.168.10.101:56084] logged in with entity id 129 at ([world]-109.5, 70.0, 178.5)

アカウントA[/192.168.10.101:56084]

このアドレスは、グローバルIPアドレスか、ローカルIPアドレスか?どちらでしょうか?

答えはローカルIPアドレスです。

これはローカルサーバーの接続テストです。

まだ、外部にサーバーを公開していないので外の友達からはこのサーバーにはアクセスできません。

では、次にローカルサーバーを外部に公開していきましょう。

⑥ 外部に公開!ルーター「Aterm WG2600HS」でTCPポート転送の設定例

サーバーを外部に公開するのはここからが本番です。

サーバーを外部に公開するためには、ルーター側にポート転送設定を行います。

場合によってはパケットフィルタ設定(ルーター上のポート開放)も必要になるかも知れません(今回は不要です。)。

※「ルーター」「ポート転送」など「用語解説」は下にあります。

先ずはルーターの設定画面を開こう

NEC製ルーター「Aterm WG2600HS」の設定画面

ルーターのURLは、ローカルIPアドレスの最下段を"1"にしたアドレスです。

ローカルIPアドレス192.168.10.101なら、ルーターのURLは192.168.10.1です。

僕の環境では、ルーターの設定画面を開くには、URL欄にhttps://192.168.10.1でアクセスしました。

また、ログインに必要な「ユーザー名」などは注意書きされてます。

「ユーザー名」には「admin」と半角小文字で入力し、「パスワード」には、本商品本体のラベルに記載された数字6桁のパスワード(Web PW)を入力して、[ログイン]をクリックしてください。

機器によっては取扱説明書などにユーザー名などの初期設定値が記載されていたりもします。

他の機器も多少違いはあれど、ほとんど同じです。

ポートマッピングの設定画面を開く

NEC製ルーター「Aterm WG2600HS」のトップ画面

ルーターにログインしたら、上記画面が表示されます。

中段右側に「ポートマッピング設定」という項目があるので、それをクリックします。

ちなみに、ルーターAterm WG2600HSではポート転送を"ポートマッピング"と呼んでいます。

BUFFALOなどのルーター機器だと"ポートフォワーディング"と表示されてるかも知れません。ポート転送=ポートマッピング=ポートフォワーディング、すべて同じ意味です。

※「ルーター」「ポート転送」など「用語解説」は下にあります。

ポートマッピングの設定をする

NEC製ルーター「Aterm WG2600HS」でポートマッピング(ポート転送)するための設定画面
NEC製ルーター「Aterm WG2600HS」でポートマッピング(ポート転送)するための設定画面

画像はAterm WG2600HSのポート転送設定の画面です。

上段から

  • 利用可能ポート:変換対象ポートで利用可能なポート
  • NATエントリ追加:ここにポート転送設定を入力します。

以下でマイクラサーバーを外部に公開するためのポート転送の設定例を解説していきます。

Java版マイクラサーバーを外部に公開:ポート転送の設定例

ポート転送の設定例

今回の例ではJava版マイクラサーバーを想定して下記のネットワーク環境で解説します。自分の環境に読み替えて設定して下さい。

ネットワーク環境

  • WAN側(外部):グローバルIPアドレス:ポート(36128/TCP)
  • LAN内サーバー(内部):192.168.10.103:25565/TCP

ポートは内部と外部ともに25565/TCPで統一した方が分かりやすいですが、ルーターで設定できる「利用可能ポート」の範囲外なのでWAN側ポートは36128/TCPとしました。

ちなみに、WAN側ポートとLAN側ポートを違う番号にしてアクセスさせた方が、セキュリティ的にははるかに強くなります。

WAN側ポートを規定値から変えるのは、セキュリティを上げる重要なテクニックです。

理由は、Java版マイクラ鯖は25565/TCPと誰もが知っているからです。

これはグローバルIPアドレスを知られるとグローバルIPアドレス:25565で好き放題にアクセスされる状態で危険なんです。

ルーターは中継地点

中継地点となるルーターは、WAN側ポート36128のアクセスをLAN内サーバー192.168.10.103:25565道案内する役割です。これをポート転送と言います。

サーバー接続の流れ

  • 外部からはグローバルIPアドレス:ポート(36128/TCP)でサーバーにアクセスする。
  • 中継地点のルーターはポート:36128192.168.10.103:25565/TCPにポート転送する。
  • その結果、マイクラサーバー192.168.10.103:25565/TCPが接続に応答する。

さて、上記の内容で、ルーターに実際に設定してみましょう。

WAN側ポート36128/TCP
LAN側ポート192.168.10.103:25565/TCPに転送する。

WAN側ポート36128/TCPをLAN側ポート192.168.10.103:25565/TCPにポート転送する設定をします。

ポート転送

  • LAN側ホスト:マイクラサーバー192.168.10.103
  • プロトコル:TCP
  • 変換対象ポート番号:WAN側ポート(今回は36128/TCP
  • 宛先ポート番号:LAN側ポート(今回は25565/TCP

どうでしょう、簡単じゃないですか?

これでマイクラサーバーが外部に公開されます。

ただ、必ず外部から接続テストをしてください(確認する癖をつけましょう。)。

注意:「利用可能ポート」で設定する

機器にもよりますが、変換対象ポート(WAN側ポート)は「利用可能ポート」の範囲内で設定しましょう。

「利用可能ポート」の制限が無いなら、WAN側ポートにどんなポート番号を設定しても構いません。

⑦ 接続テスト2:グローバル環境からサーバーに接続する

マインクラフト"Java Edition"はM1・M2 Macでも起動する!
マインクラフト"Java Edition"はM1・M2 Macでも起動する!

ここまで来れば、あと一歩です。

今度はグローバル環境(外部)からサーバーに接続テストを行います(以下、グローバル接続テストと言います。)。

外部からの接続テストのために事前に準備するものは下の三つです。

準備するもの

  • 1)CMANグローバルIPアドレスを確認する
  • 2)CMANでPortチェックテスト
  • 3)用意できるなら:友達の家のPCから接続テスト

ちなみに、グローバルIPアドレスの確認はCMANで手軽できます。

1)CMANでグローバルIPアドレスを確認する

CMANでグローバルIPアドレスを確認する(黒塗り)

上はCMANでグローバルIPアドレスを調べた画面です。

画像の黒塗り箇所にグローバルIPアドレスが表示されています。

2)CMANでPortチェックテスト

赤枠の箇所を入力します。

ホスト名はグローバルIPアドレス、チェックポート番号にはWAN側ポート:36128を入力します。

赤枠の箇所を入力したら「Portチェック実行」を押します。

外部から接続が成功するとポート:36128にアクセスできました」と表示されます。

ただし、ここのテストに失敗しても、マイクラのサーバーに接続できることがあるので注意してください。

ポートチェックテストに失敗するケース

  • Pingに応答しないサーバー
  • UDPでのポートチェック
  • 上のポート転送設定を間違えている

UDPでのポートチェック」については、Java版マイクラではTCPポートを使用するので気にしなくて大丈夫です。統合版マイクラサーバーは、UDPポートでのポートチェックになるので注意が必要です。

CMANのポートチェックが失敗しても、友達の家からサーバーに接続できる可能性も20%くらいの確率であります。

ちなみに、この「2)CMANでPortチェックテスト」でアクセスできましたが表示されたら、下の3)は飛ばしても良いです。すでに外部にサーバーは公開されてるので友達と一緒に遊べます。

3)用意できるなら:友達の家のPCから接続テスト

外部からの接続テストに、友達の家のPCを利用できるなら、友達に接続テストを頼むのもアリです。

ちなみに、この接続テスト2(グローバル接続テスト)の場合、家の外にあるPCを使わないとテストにならないので注意してください。

サーバーがある家の中から、同じネット環境下でグローバルIPアドレスを使ってテストしても100%失敗します。

家の中はローカルエリアネットワーク(LAN)なので、ローカルIPアドレス(192.168.xx.xx)を使えばサーバーにアクセスできます。

グローバル(外部)とローカル(内部)の違いをきちんと理解した上で、接続テストをしましょう。

Java版と統合版(Bedrock版)のMinecraft(マイクラ)の違い

引用:Minecraft

マインクラフトには、Java版と統合版があります。サーバー立てるならどちらが良いか考える必要があります。

大きな違いは"対応デバイス"です。

JAVA版と統合版の違い

JAVA版統合版(Bedrock版)
オススメ★★★★★★★★★☆
対応デバイスWindows、Mac、LinuxWindows 10、スマホ(iOS・Android)、Xbox Series X|S、Xbox One、Nintendo Switch、PlayStation 4、Kindle Fire、Fire TV、Oculus Rift
注意:Mac、Linuxは非対応
MOD・Plugin両方○プラグインのみ
サーバー構築立て易いNukkitサーバーは立て易い
ひとことJAVA版はModが使える。スマホ・Nintendo Switch勢とクロスプレイ出来るのはデカい。

統合版のマイクラサーバーは、スマホとNintendo Switchをカバーします。

統合版マイクラはMac、Linux以外のあらゆるデバイスでプレイしたい時にオススメです。

ネットワークIT用語解説

【1日目】マイクラハードコア100日「地獄の始まり」【ゆっくり実況】
気分転換に御覧ください

ネットワークで使うIT用語を解説していきます。

「ポート」や「ポート開放」「ファイヤーウォール」などの用語をセットで覚えましょう。

IPアドレス

IPアドレスには2種類あります。

グローバルIPアドレス、ローカルIPアドレス

ローカルIPアドレスの呼び方

  • ローカルIPアドレス
  • プライベートIPアドレス

ポート

ポートのイメージはサービスを受け付ける個々の料金所です。

インターネット上では、パケット車がたくさん走っています。すべてのパケット車が料金所を通れるわけではなく、開放されているポート(料金所)のみ通過できます。

WAN側ポート、LAN側ポートと使用するデバイスごとにポートを設定する必要があります。

ポートはプログラム(Webサービス)ごとに使用しています。

デフォルトで開放されているポートを「Well Known Port(ウェルノウンポート)」と言います。例えば、http通信は80番ポートを使っています。

実はみんな自らポートを開閉させている!

実は知らない内に自らポートを開閉させています。

プログラムのインストール時に「プログラムを許可しますか?」に承諾することで、みんな自分のコンピューターのポートを開放しています。

Well Known Port 以外のポートはデフォルトで閉じられているからです。

ポート転送

ポート転送は、WAN側に来たアクセス(パケット)をLAN側の機器に転送する設定です。

ちなみに、今回のNEC製ルーターでは、ポート転送とは呼び方が違う「ポートマッピング設定」という表記です。

ポート転送の呼び方

  • ポート転送
  • ポートマッピング
  • ポートフォワーディング
  • ポートフォワード

上のようにルーター機器によって、同じ意味でも表記が様々です。

ルーター

ルーターは高速道路と一般道の中継地点のイメージです。

高速道と一般道の流れが変わる中継地点に各料金所(ポート)があって、車両を一台一台丁寧に検閲していきます。

ちょうどWAN(グローバル)が高速道で、LAN(ローカル)が一般道みたいなイメージです。

WANからLANに入るには、必ず中継地点(ルーター)の案内が必要になるわけです。

高速道のまま突っ走っても、どこに行けば良いのか分からないので中継地点(ルーター)で目的地を教えてもらったりします。それがポート転送(目的地の案内)です。

ファイヤーウォール

「ファイヤーウォール」は、コンピュータネットワークにおいて、コンピュータセキュリティの保護、その他の目的のため、通信を制御・阻止(パケットフィルタリング)する機能を言います。

「ファイヤーウォール」は、パソコン、スマホ、ルーターなどすべてのデバイスに搭載されている機能と理解しておいてください。

高速道路の料金所で「許可された車だけを通す仕組み(機能)」です。

Java版Minecraft にセキュリティ上の脆弱性【Log4Shell】

参考:https://www.minecraft.net/ja-jp/article/important-message--security-vulnerability-java-edition-jp

コメント

コメントする

目次