【Java版Minecraft】マルチサーバー構築【解説】
みんな大好き Minecraft(マインクラフト)で、マルチプレイするための方法を紹介します!
この記事では、Minecraft のマルチサーバーを構築しつつ、IT 系の知識も蓄えて、セキュリティや機能拡張といった保守面の技術も身につけられるよう様々な解説をしています。
前置きを飛ばしてさっそく構築を進めたいかたは、サーバー構築から進めてもらえばオッケーです♪
目次
はじめに
この記事では、Windows や mac が搭載済みの Minecraft が遊べる機器のことを『パソコン』、Minecraft をマルチプレイできるようにするための装置のことを『サーバー』と呼びます。
Minecraft は一人でも複数人でも遊べるゲームですが、複数人で遊ぶ場合は、『Minecraft のマルチプレイ用サーバーを用意』する必要があります。今回は、『Java 版用 Minecraft のマルチプレイサーバー』が必要になります。
もちろん『Minecraft 本体も Java 版』です。『統合版』と間違えないようにしましょう。
そして、Minecraft のマルチプレイ用サーバーを用意するにあたって、いくつかの選択肢から目的に合った手段を選ぶことになります。
- レンタルサーバーを契約してサーバー構築
- 自前サーバー用マシンにサーバー構築
- 普通のパソコンにサーバー構築
- Realms を契約
どれが最適な方法かは、目的とそのときの状況によります。
わかりやすいよう比較表を用意してみました。
サーバー | 特徴 |
---|---|
レンタル | ほどほどのカスタマイズ性と、ほどほどの維持費。root 権限※の有無や、サーバーの費用対性能くらいは見極めたほうがよい。ウェブサイトやデータベースなどで、既にレンタルサーバーを契約している人は使いまわせるので、当然コスパがよい。 |
自前 | マシンスペックもカスタマイズも自分次第なので完全自由。電気代が維持費になる。初期投資額は最も高くつくが、50人といった大規模マルチプレイなどで、高性能なマシン性能が必要なときに強い。レンタル料を支払うのに抵抗があって、一から自分で挑戦したい人向け。 |
パソコン | Windows や mac のパソコンをそのままサーバーとして使えるため、最も低コストで実現できる。ただし、サーバー機能を動かすために、パソコンに負荷がかかり続けるので、Minecraft の動作が重くなってしまったり、シャットダウンのタイミングにも配慮が必要。 |
Realms | Minecraft のために用意された公式のサーバー。小難しい作業をせずとも簡単にマルチプレイできる。ただ、Minecraft 専用なので、サーバーの費用対効果は悪いといえる。また、拡張機能である MOD の導入ができない。とにかく楽に済ませたい人向け。 |
今回は、『自前サーバーに Minecraft のマルチプレイ用サーバーを構築』する方法で進めていきます。
ちなみに、以下のような理由で自前サーバーを選択しました。
- 契約しているレンタルサーバーにroot権限※がなかった
- サーバー用マシンを既に所有している
- 知的好奇心のため
レンタルサーバーで構築予定のかたも、導入以外は基本的に同じです。
サーバーは CentOS Linux 8※ で本格的に構築します。
OS にソフトウェアをインストールしたり、重要なファイルを書き換えるには、管理者アカウント本人、または管理者の許可が必要です。管理者のことを root や admin、Administrator などと呼び、その管理者が持つ権限のことを『root 権限』と表現します。(Linux や UNIX 系の用語)
root 権限がないレンタルサーバーもあります。その場合は Minecraft のマルチサーバーを構築することはできません。
サーバー用途でよく用いられる OS が『CentOS』 で、正式名称は CentOS Linux といいます。後ろに OS のバージョン番号が付きます。
一般的にパソコン用途は Windows OS や macOS であるように、サーバー用途に向いた OS があるということです。パソコン用途の OS は無駄な機能が多すぎるので、サーバーとして使うなら CentOS のような Linux 系 OS がオススメです。
環境と要件
- 自前サーバー(仮想環境※)
- CentOS 8
- Windows 10 パソコン
- Minecraft 1.17 Java版
- 遠くの人ともマルチプレイする
一般的なパソコンは、『1つのマシンに1つのOS』が搭載されていますね。もちろん、サーバー用にするマシンにも、パソコンと同じように OS をインストールしても構いません。
ただ、1サーバーごとに1マシンを用意していては、毎回導入コストがかかってしまいますね。そこで、1マシンで複数の OS を起動できるようにする『仮想環境』で構築するのが定石です。
仮想環境にもいつかの種類がありますが、私は Hypervisor(ハイパーバイザー)型と呼ばれる方式で構築しています。複数の仮想マシンを構築する際に、最も効率のよい方式です。
仮想マシンは、自由自在に性能を上げたり下げたりできるので、大人数で遊ぶときだけ性能を上げ、複数のゲームサーバーを使うときは均等に割り振ったりと、物理にはない柔軟さを持っています。
サーバー構築
サーバー用マシンの手配
とにもかくにも、まずは機器が必要です。
- 自作する
- 購入する
- レンタルサーバーを契約する
- 古いパソコンをサーバー用にする
- 仮想マシンを立てる
いずれかの方法でサーバー用マシンを手配します。
わざわざ自作せずとも、以下のようなパソコンをサーバー用にするのもアリです。ただ、メモリ量が多いマシンを選ぶようにしましょう。
CentOS8のインストール
マシンを用意したら、次は OS のインストールです。
- CentOS のダウンロード
- USB フラッシュや DVD に書き込み
- マシンにインストール
基本は、次へ次へと進めていくだけです。インストールが完了したら、再起動してログインしておきましょう。
IPアドレス確認
『ip a』のコマンドを実行して、マシンの IP アドレス※を確認します。
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 12:34:56:78:9a:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.0.2/24 brd 192.168.0.255 scope global noprefixroute ens192
上記のような実行結果が表示されるはずなので、「ens」または「eth」から始まる項目の「inet」という部分を確認してください。※上記でいうところの「192.168.0.2/24」の部分です。127 から始まる番号は別物です。
これは人によって違いますし、状況によっても変化します。
この、192.168 から始まる番号をメモしておいてください。
各種パッケージの導入
『yum』から始まるコマンドを、ゆっくり間違えずに入力しましょう。
[root@centos8 ~]# yum -y install wget git epel-release screen
...
完了しました!
2~5分くらい待って、「完了しました!」の文字が表示されたら ok です。
yum | 様々なパッケージをインストールしたり削除したり管理するツール。 |
wget | インターネット経由でファイルを取得できるツール。Minecraft サーバー本体のプログラムを取得するために使用する。 |
git | 分散型バージョン管理システムといって、ファイルの変更履歴を追跡できるツール。後述する OpenJDK16 を取得するために使用する。 |
epel- release | 簡単に表現するなら、標準では入手できないパッケージを取得できるようにするもの。以下の screen を取得するために導入。 |
screen | 作業状態を一時保存(デタッチ)できるツール。作業を中断しても Minecraft のサーバーが動き続けるようにしたり、複数の Minecraft サーバーを稼働させるときに使用する。 |
OpenJDK16のインストール
Minecraft 1.17 版からは、JDK※ のバージョンが 16 です。
まずは、「vi」コマンドでファイルを編集状態にします。
[root@centos8 ~]# vi /etc/yum.repos.d/adoptopenjdk.repo
vi では、『コマンドモード』と『編集モード』の2種類を切り替えながら操作するといった、ちょっと特殊なテキストエディタです。
- 「A」キーで編集モードに切り替え
- テキストデータを入力
- 「Esc」キーでコマンドモードに切り替え
- 「:wq」コマンドで保存して終了
上記の流れを参考に、編集モードで以下のテキストを入力しましょう。
[AdoptOpenJDK]
name=AdoptOpenJDK
baseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/centos/8/x86_64
enabled=1
gpgcheck=1
gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public
以下のコマンドで、インストールを実施します。
[root@centos8 ~]# yum -y install adoptopenjdk-16-hotspot.x86_64
JDK が無事インストールされたことと、バージョンを確認して ok です。
[root@centos8 ~]# java --version
openjdk 16.0.1 2021-04-20
まず、JDK というのは Java言語で開発する環境と、そのプログラムを実行する環境が含まれたツールキットのことです。Open はオープンソースの意味で、プログラムの利用や修正・再配布が可能な形態を意味します。
Minecraft は Java言語で開発されています。つまり、Minecraft を動かすには JDK が必要だという単純な理由です。
そして、『Minecraft 1.17 版から JDK 16 が必要』になりました。※Minecraft 1.16 以前は JDK(JRE) 8 だったので、今までサーバーを構築していた人も注意が必要です。
サーバー用 Minecraft のインストール
JDK を導入したら、次は Minecraft サーバーのインストールです。
「mine01」というディレクトリ(フォルダー)を作り、そのディレクトリの中に入ります。
[root@centos8 ~]# mkdir /opt/mine01
[root@centos8 ~]# cd /opt/mine01
「Spigot※」という拡張性の高い Minecraft サーバーのビルドツールを取得します。
[root@centos8 mine01]# wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
ビルドツールを使い、Minecraft サーバーの実行ファイルを生成します。そこそこ時間がかかるので、Success ! が表示されるまでゆっくり待ちましょう。
[root@centos8 mine01]# java -jar BuildTools.jar
...
Success! Everything completed successfully. Copying final .jar files now.
Copying spigot-1.17.1-R0.1-SNAPSHOT.jar to /opt/multi01/./spigot-1.17.1.jar
- Saved as ./spigot-1.17.1.jar
Minecraft サーバーを起動する命令をし、一度起動に失敗させます。
[root@centos8 mine01]# java -Xms1024M -Xmx1024M -jar spigot-1.17.1.jar nogui
『spigot-1.17.1.jar』はバージョンによって値が変わります。ビルドツールの完了メッセージを確認するか、『ls』コマンドでファイル一覧を表示して確認することができます。
vi コマンドで、eula.txt を編集します。
[root@centos8 mine01]# vi eula.txt
eula 項目を false から true に変更します。使用許諾契約に同意するという意味です。
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Thu Jul 29 20:00:00 JST 2021
eula=true # ←コレを false から true に変更!
下準備はできましたが、まだ Minecraft サーバーは起動しません。
Minecraft のサーバーといっても、実は何種類かあります。
Minecraft 公式のバニラサーバー、プラグインが導入できるようになった CraftBukkit サーバー、CraftBukkit を改良した Spigot サーバー、Spigot の拡張や軽量化を目指す PaperMC サーバーなどなど。
すでに開発が終了したサーバーも多数ありますが、今後また新たに生まれるサーバーも期待できます。公式のバニラサーバーさえあればマルチプレイはできますが、有志によってより快適に遊べるようになっていることに感謝しましょう!
ファイアーウォール許可
サーバー側とゲーム側とで通信ができるよう、アクセス許可をする作業です。
[root@centos8 mine01]# firewall-cmd --zone=public --add-port=25565/tcp --permanent
[root@centos8 mine01]# firewall-cmd --reload
ハイフンが1つだったり、2つだったりするので、間違えずに入力しましょう。
パケットと呼ばれる、あるデータの塊を通信するときに、接続を許可したり、拒否したりする機能を提供しているのがファイアーウォールです。つまり、不正アクセスから守ってくれる機能なのです。
Minecraft は、土を掘ったりゾンビを倒したりと、リアルタイムに様々な通信をおこないます。その通信をするときに、Minecraft では 25565番というポート(扉)を通じてやり取りします。
初期の状態では 25565番のポートは閉じられています。なので、25565番を許可するよう明示することで、サーバー側とゲーム側が通信できるようになります。
サーバー起動
お待たせしました!ついにサーバー起動です。
[root@centos8 mine01]# screen -S mine01
[root@centos8 mine01]# java -Xms1024M -Xmx1024M -jar spigot-1.17.1.jar nogui
...
[18:00:00] [Server thread/INFO]: Done (13.333s)! For help, type "help"
>
Done ! が表示されたら、無事サーバーの起動が完了です!初回は地形の生成をするので、少し時間がかかります。
屋内でマルチプレイ参加
ここからはゲーム側の操作です。
Minecraft を起動して『Multiplayer』を選びましょう。
注意事項が表示されます。
意訳すると『公式が提供しているサーバーではないので、他人のチャットや共有プレイに気を付けてね。』という旨のメッセージです。自前でサーバーを立てているので、別に何の問題もないですね。
チェックボックスをオンにすれば、次回以降は表示されなくなります。『Proceed』を選択して進めましょう。
Windows の警告が出た場合は『プライベート ネットワーク』のチェックをオンにして、アクセスを許可してあげましょう。『ドメインネットワーク』の項目は無い人がほとんどだと思いますが、あればチェックしてよいでしょう。
サーバー一覧画面です。アクセスするサーバーを追加するために『Add Server』を選択します。
『Server Address』に、サーバーの IPアドレスとポート番号を記述します。
IPアドレスは「IPアドレス確認」のときにメモした 192.168 から始まる値です。ポート番号は 25565 です。IP アドレスの後に「:(コロン)」を付けて、ポート番号を記述します。
『Server Name』は、任意の名前をつけることができます。複数のサーバーを管理するときに、わかりやすい名前にしてあげるとよいでしょう。
サーバー一覧に追加されました!
『Join Server』を選択すると、選択中の Minecraft サーバーに入ることができます。
無事、Minecraft の世界に入ることができました!
- サーバーの IP アドレスは正しいか?
- サーバーのプログラムはちゃんと動いているか?
- ファイアーウォールのポート設定が間違っていないか?
- ゲーム側のサーバー設定が間違っていないか?
- ゲームのバージョンとサーバーのバージョンは同じか?
初めて実践するかたは、うまく動かないと嫌になると思います…
でも安心してください!この記事にある内容だけで、ちゃんとマルチプレイまでできるように書きました。できなかったときのために、Tips もたくさん散りばめているので、ゆっくり読みながら挑戦してみてください!
インターネットでマルチプレイ招待
遠くにいる友人と一緒に Minecraft を遊ぶには、追加の設定が必要です。
ポート開放
パソコン側の作業です。
スタートメニューから『コマンドプロンプト』を起動し、『ipconfig』コマンドを実行します。
C:\Users\username> ipconfig
Windows IP 構成
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
リンクローカル IPv6 アドレス. . . . .: fe80::c00e:6563:1b2f:cf99%16
IPv4 アドレス. . . . . . . . . . . .: 192.168.0.50
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .: 192.168.0.1
いくつかある項目の中で『デフォルトゲートウェイ』の IP アドレスを確認します。上記でいう 192.168.0.1 の部分です。
そのデフォルトゲートウェイの IP アドレスを、ブラウザーの URL 欄に入力します。
以降はルーター側の設定になるので、メーカーや製品ごとに画面や名称がバラバラです。
ユーザー名とパスワードを入力して、ルーターの管理画面にログインします。
※このパスワードは、Wi-Fi やプロバイダのパスワードとは違います。
ルーター本体の裏面や説明書に記載されているはずですが、それでもわからない場合、候補を総当たりにする荒業があります。
〇ユーザー名候補
- admin
- user
〇パスワード候補
- password
- admin
- user
- 0000
- 1111
これでログインできた場合は、次の作業に進みましょう。
ログインできなかった場合は、メモを探すなり、思い切って初期化をするなり頑張りましょう。
もし総当たりでログインできてしまった場合、それはそれで問題です。パスワードリスト攻撃という手法で、簡単にハッキングされる状態だと認識しましょう。
管理画面で、『詳細設定』を選択します。
『セキュリティ』項目の『ポート変換』を選択します。
必要項目を入力していきます。詳しくは以下の表を参考にしてください。
グループ | 何でも良いです。『Minecraft』とでもしておきましょう。 |
Internet側IPアドレス | 『エアステーションのInternet側IPアドレス』にします。 |
プロトコル | 『任意のTCPポート』にして、『25565』と記述します。 |
LAN側IPアドレス | 『サーバーのIPアドレス』を入力します。 |
LAN側ポート | 空欄でokです。 |
入力できたら、『新規追加』で設定完了です。
『詳細設定』の『NAT』からディスクリプターの設定を変更します。
YAMAHAでは『静的IPマスカレード』と呼びたがるみたいです。
内部アドレスはサーバーの IP、ポートはファイアーウォールで公開した番号です。
YAMAHA ルーターを扱うようなインフラおじさんには朝飯前でしょう。
これ以外のルーターは持っていなくて紹介できないので、『製品名 ポート開放 やりかた』といった検索ワードで調べてみてください。
そもそもポートを開放をすると何が変わるかというと、インターネット経由で…つまり外部から特定のポートに対して接続要求をすることができるようなります。
今回、Minecraft は 25565番のポートを使用していて、そのポートを開放することで、インターネット経由で Minecraft に参加できるようになるわけです。
この仕組みがわかれば、まさにリスクは外部から接続要求ができてしまうことだと理解できますね。何でもかんでもポート開放してはいけませんし、何番のポートを開放しているかを他人に教えるようなこともしてはいけません。
グローバルIPアドレス確認
ついに最後の作業です!
上記の URL にアクセスすると、以下のような画面が表示されます。
この『グローバルIPアドレス』の部分に表示されている数字をメモしましょう。
そして、Minecraft のマルチプレイ画面で、『Server Address』を『グローバルIPアドレス:ポート番号』のように記述しましょう。
この『グローバルIPアドレス:ポート番号』の情報を、一緒にマルチプレイしたい人に教えてあげましょう。
この『グローバルIPアドレス』はとても大事な情報です。SNS やブログなどで公開することのないよう、管理はしっかりとおこなってください。
ネットワークにおいて機器同士が何らかの通信をする場合、誰が誰に(どこからどこに)という情報が必要です。その『誰が』とか『どこから』に該当するのが IP アドレスです。なので、IP アドレスはよく『住所』に例えられます。対して、ポートは『扉』に例えられます。
そして、IP アドレスには『グローバル IP アドレス』と『プライベート IP アドレス』という2種類が存在します。屋内のように閉じられた空間のみで使えるのがプライベート IP アドレスで、インターネットで外の世界とやりとりするにはグローバル IP アドレスを用います。
『ip a』や『ipconfig』で調べた 192.168 で始まる番号がプライベート IP アドレスで、cman.jp で調べた番号がグローバル IP アドレスです。
つまり、屋内のみでマルチプレイする場合は、プライベート IP アドレスで良かったのですが、インターネット経由で友人と一緒に遊ぶために、自分のグローバル IP アドレスを調べたわけです。
サーバーの基礎構築と、マルチプレイの参加方法は以上です!
本当にお疲れさまでした♪
できるだけ多くのかたが達成できるよう丁寧に書きました。それでもできないよ…というかたは Realms の選択もナシではありません。
でも、少し頑張れば自前サーバーもそんなに難しくありません!構築できたときには大きな成長と達成感があるので、ぜひ味わってもらえればなぁと思っています。
以上、【Java版Minecraft】マルチサーバー構築【解説】でした。