Minecraft PE版のサーバを建てた話

· 7 min read
Minecraft PE版のサーバを建てた話

今、夜勤の間で密かなブームとなっているMinecraft
一部界隈では「既にオワコン」と噂が流れている様ですが、私自体既にオワコンなので気にしません。

とりあえずMinecraftについての説明はここでは省きます。
サーバを建てて皆でプレイできたらいいね、という趣旨の元、覚書として残しておきます。


サーバーについて

そもそもどうやってサーバを立てるの?

サーバーを立てるといっても立て方はたくさんあります。
実際にどんなものがあるかあげてみます。

  • PCとサーバーソフトを使ったサーバー(pmmpやNukkit、Jupiter、MiNETなど)を使ったもの
  • Androidのアプリ(BlueLight Appなど)を使ったもの
  • 代行
  • MiRm
  • InstantMCPE
  • LEET

うーん、さっぱりよくわからんけど
職業柄、自分でイチから構築できたほうがいいと思うので、1番目の方法をとることに

サーバーを立てるのに必要なもの

  • Windows、Linux、MacOSなどを搭載したPC
  • サーバーソフト(PMMPやNukkit、Jupiter、MiNETなど)
  • 有線または無線LAN環境
  • ある程度のPCの知識
  • 根気
  • (英語も読めたほうがいい)

サーバーソフトの選び方

・プラグインをたくさん使ってみたい!
⇒PocketMine-MP(PMMP)

 

・とにかく早く設定してサーバーを立ててみたい!
⇒Nukkit/Jupiter (Java)

 

・C#を使ったことがあるから高度な鯖立てにチャレンジしてみたい!
⇒MiNET

 

なんか色々種類があるんでやんすね…

PocketMine-MPとやらを使って建ててみる

Googleとかで検索結果上位に出るのがこのPocketMine-MPというやつだったので
まぁまずはこちらで鯖建てしてみる

手順

今回はテストを兼ねて自宅サーバで構築。


  • 1 vCPU
  • RAM:512 MB
  • SSD:20GB
  • OS:AmazonLinux
  • 回線:100M共有 ダイナミックGIP持ち

とりあえずyum update

# sudo su -
# yum -y update && reboot

新規ユーザ作成&パスワード設定、最後にスイッチ

# useradd pmmp
# passwd pmmp
Changing password for user pmmp.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
# su - pmmp
$ 

PocketMine-MPをインストール。以下コマンドで自動的に入っちゃうみたい。
いい時代になったもんだ。

$ wget -q -O - https://get.pmmp.io | bash -s -
$ wget -q -O - https://get.pmmp.io | bash -s -
[*] Retrieving latest build data for channel "alpha"
[*] Found PocketMine-MP 3.9.4 (build 1775) for Minecraft: PE v1.12.0 (PHP 7.3)
[*] This alpha build was released on Fri Aug 16 16:58:54 UTC 2019
[*] Installing/updating PocketMine-MP on directory ./
[1/3] Cleaning...
[2/3] Downloading PocketMine-MP phar... done!
[3/3] Obtaining PHP: detecting if build is available... Linux PHP build available... downloading 7.3 ... updating php.ini... checking... downloaded PHP build doesn't work on this platform!
[3/3] No prebuilt PHP found, compiling PHP automatically. This might take a while.

[PocketMine] PHP compiler for Linux, MacOS and Android
[INFO] Checking dependencies
[ERROR] Please install "autoconf"
[ERROR] Please install "automake"
[ERROR] Please install "m4"
[ERROR] Please install "bison"
[ERROR] Please install "g++"
[ERROR] Please install "cmake"
[ERROR] Please install "libtool" or "libtool-bin"

おっほ、いきなりエラー。
なんか色々足りないみたいなのでyumでぶちこんでおく。

# yum install autoconf automake m4 bison cmake libtool gcc-c++

リトライ

$ wget -q -O - https://get.pmmp.io | bash -s -
[*] Retrieving latest build data for channel "alpha"
[*] Found PocketMine-MP 3.9.4 (build 1775) for Minecraft: PE v1.12.0 (PHP 7.3)
[*] This alpha build was released on Fri Aug 16 16:58:54 UTC 2019
[*] Installing/updating PocketMine-MP on directory ./
[1/3] Cleaning...
[2/3] Downloading PocketMine-MP phar... done!
[3/3] Obtaining PHP: detecting if build is available... Linux PHP build available... downloading 7.3 ... updating php.ini... checking... downloaded PHP build doesn't work on this platform!
[3/3] No prebuilt PHP found, compiling PHP automatically. This might take a while.

[PocketMine] PHP compiler for Linux, MacOS and Android
[INFO] Checking dependencies
[INFO] Compiling for current machine using 64-bit
[PHP] downloading 7.3.8... done!
[zlib] downloading 1.2.11... checking... compiling... installing... done!
[GMP] downloading 6.1.2... checking... compiling... installing... done!
[OpenSSL] downloading 1.1.0k... checking... compiling... installing... done!
[cURL] downloading curl-7_65_3... checking... compiling... installing... done!
[YAML] downloading 0.2.2... checking... compiling... installing... done!
[libzip] downloading 1.5.2... checking...
$

お、インストール終わったみたいですね。結構時間かかりました。
では、起動してみましょう。

$ ./start.sh 
./start.sh: line 26: type: php: not found
Couldn't find a working PHP 7 binary, please use the installer.
えぇ…(困惑)
PHPがインストールできてない模様
$ ll /home/pmmp/bin/php7/bin/
total 3156
-rwxr-xr-x 1 pmmp pmmp    6214 Sep  1 14:58 c_rehash
-rwxr-xr-x 1 pmmp pmmp  344880 Sep  1 14:59 curl
-rwxr-xr-x 1 pmmp pmmp    6146 Sep  1 14:59 curl-config
-rwxr-xr-x 1 pmmp pmmp 2864136 Sep  1 14:58 openssl

確かにbin配下にphp見当たらないな…
もっかいイチからインストール試してみるか。

結論からいうとインストールできませんでした

正確には、AmazonLinuxでは対応していない、という話です。
この後、再インストールしたり、別途php7をyumやソースで手動で入れてみましたが
どうやってもうまく動いてくれませんでした。

実はこの答えは最初にインストールした時に既に出ていました。

[3/3] Obtaining PHP: detecting if build is available... 
Linux PHP build available... downloading 7.3 ... updating php.ini... checking... 
downloaded PHP build doesn't work on this platform!

最後の行

PHP build doesn't work on this platform!

この環境ではPHPは動きません、ってはっきり書いてありますね。
読んでませんでした。

もちろん色々テストすれば動くのでしょうが
私は命をかけてまでインストールしたい訳ではありません。
ぶっちゃけサッと入れられればええねん。

というわけでAmazonLinuxでのインストールは断念することに。

Ubuntuにインストールしてみる

先に行っちゃいますね。
Debian系OSなら一瞬ですぐインストールできます。

$ wget -q -O - https://get.pmmp.io | bash -s -
[*] Retrieving latest build data for channel "alpha"
[*] Found PocketMine-MP 3.9.4 (build 1775) for Minecraft: PE v1.12.0 (PHP 7.3)
[*] This alpha build was released on Fri Aug 16 16:58:54 UTC 2019
[*] Installing/updating PocketMine-MP on directory ./
[1/3] Cleaning...
[2/3] Downloading PocketMine-MP phar... done!
[3/3] Obtaining PHP: detecting if build is available... Linux PHP build available... downloading 7.3 ... updating php.ini... checking... done
[*] Everything done! Run ./start.sh to start PocketMine-MP

$ ./start.sh
[*] PocketMine-MP set-up wizard
[*] Please select a language
 العربية => ara
 Английски => bul
 Čeština => ces
 中文 (简体) => chs
 Deutsch => deu
 Ελληνικά => ell
 English => eng
 Eesti => est
 Suomi => fin
 Français => fra
 Gaeilge => gle
 עברית => heb
 Engleski => hrv
 Magyar => hun
 Bahasa Indonesia => ind
 Italiano => ita
 日本語 => jpn
 한국어 => kor
 Latviešu => lav
 Malti => mlt
 Bahasa Melayu => msa
 Nederlands => nld
 Norsk => nor
 Polski => pol
 Português => por
 Pyccĸий => rus
 Español => spa
 Svenska => swe
 Tagalog => tgl
 ภาษาอังกฤษ => tha
 tlhIngan => tlh
 Türkçe => tur
 Українська => ukr
 Tiếng Việt => vie
 中文(繁體) => zho
[?] Language (eng): jpn
[*] 日本語が正しく選択されました。
[*] PocketMine-MP にようこそ!
サーバーのセットアップを開始する前に、ライセンスに同意する必要があります。
PocketMine-MP は LGPL ライセンスのもとで許諾されており、
このフォルダーで LICENSE ファイルを読むことができます。

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

[?] ライセンスに同意しますか? (y/N): y
[?] セットアップウィザードをスキップしますか? (y/N): y
[15:15:12] [Server thread/INFO]: Loading pocketmine.yml...
[15:15:12] [Server thread/INFO]: Loading server properties...
[15:15:12] [Server thread/INFO]: 日本語(jpn)を基本言語として選択しました
[15:15:12] [Server thread/INFO]: Minecraft: Bedrock Edition サーバーバージョン v1.12.0 を開始しています
[15:15:12] [Server thread/NOTICE]: オンラインモードが有効になっています。サーバーは、プレイヤーが Xbox Live に認証されていることを確認します。
[15:15:12] [Server thread/NOTICE]: 認証を無効にするには、server.properties で「xbox-auth」を「false」に設定してください。
[15:15:12] [Server thread/INFO]: サーバーを 0.0.0.0:19132 で開始しています
[15:15:12] [Server thread/INFO]: このサーバーは PocketMine-MP バージョン 3.9.4 を実行しています
[15:15:12] [Server thread/INFO]: PocketMine-MP は LGPL ライセンスのもとで配布されています
[15:15:12] [Server thread/INFO]: Loading resource packs...
[15:15:12] [Server thread/NOTICE]: ワールド「world」が見つかりませんでした
[15:15:12] [Server thread/INFO]: ワールド「world」を準備しています
[15:15:12] [Server thread/NOTICE]: ワールド「world」のスポーン地形がバックグラウンドで生成されています
[15:15:12] [Server thread/INFO]: GS4 ステータスリスナーを開始しています
[15:15:12] [Server thread/INFO]: Query ポートを 19132 に設定しています
[15:15:12] [Server thread/INFO]: Query は 0.0.0.0:19132 で動作しています
[15:15:12] [Server thread/INFO]: デフォルトのゲームタイプ:サバイバルモード
[15:15:12] [Server thread/INFO]: 完了(0.268 秒)!ヘルプについては「help」または「?」を入力してください

所要時間およそ1分。なんだこれは、たまげたなぁ…
最初に苦戦したセットアップはなんだっんだ。。

というか、ネットの記事を見ると、ほとんどがプラットフォームに
Ubuntuを採用していることが判明。うーむ悔しい。

というわけで、今後Minecraftのサーバ構築についてはDebian系のOSを推奨いたします。

起動

start.shを実行した段階でサーバが起動します。
停止する際はCtrl+Cを入力するか、stopと打ち込めば止まります。

stop
[15:20:07] [Server thread/INFO]: ワールド「world」をアンロードしています
[15:20:07] [Server thread/INFO]: Stopping other threads

バージョン情報

version
[15:20:01] [Server thread/INFO]: このサーバーは Minecraft: Bedrock Edition v1.12.0(プロトコルバージョン 361)用 PocketMine-MP 3.9.4 を実行しています

細かい設定はserver.propertiesというファイルで編集可能です

ポートを開ける

開け方はiptables、FW、ルータなど環境によって異なるので
ここでは一概に説明が難しいですが、自宅で構築してるのでルータ側でポート開放を行いました。

ちなみにiptablesを利用している場合は下記コマンドで

$ sudo iptables -A INPUT -p udp -m udp --dport 19132 -j ACCEPT

開けるポートはUDP:19132です。UDPです、TCPじゃありません。
一瞬ここでハマりました。お気をつけを。

アプリから接続

  1. アプリ起動
  2. 一番右のサーバータブを選択
  3. サーバを追加を選択
  4. サーバ名は適当に、サーバーアドレスは自宅のGIPもしくはドメイン
  5. ポートはそのままで保存
  6. 保存したサーバに接続

これでうまく行けば接続できるはず…

繋がったッー!!!
やったー!!

今は初期状態でほぼ何もありません。
ゲーム内の設定は先述した通り、server.propertiesというファイルでカスタム可能です。

あとはプラグインなども入れたり、pmmpをバックグラウンドで動かす設定入れたり
色々できますが、ここでは端折ります。好きにしてください。

おわり

最後になりますが、実はこのPocketMine-MP。もう使ってません。

というのも、デフォルトの状態で何もなさすぎて困ったのです。

正直サクッと入れてワイワイ遊ぶ趣旨だったのですが
全然遊び要素が少なすぎたので、現在はNukkitというソフトを使ってます。

こちらはPMMPと違いjavaで動かしてるので非常に動作が安定してます。
いつか余裕があればこちらも解説したいと思います。