[メモ] ラズパイ3で、MinecraftPEサーバ(arm64版Ubuntu 18.04 + DockerでPocketMine-MPを動かす)

ラズパイ３向けの64bit対応Ubuntuイメージ(Official)が出たので、最新のPocketMine-MPを動かす。
![PMMP.png](https://qiita-image-store.s3.amazonaws.com/0/75594/ed104a0c-b5be-2acd-acd9-69f77931120e.png)

# 概要
- 以前、["らずぱい３で、MinecraftPEサーバ + Wifi-AP "](https://qiita.com/mt08/items/6e148bd305a8fd5b954d)という記事を書きましたが、PocketMine-MP本家が64bitシステムのみを扱うようになったり、ほかの分家(?)のものも更新されなくなったりでした。
- [Ubuntu 18.04.2 LTSリリースのダウンロードページ](http://cdimage.ubuntu.com/releases/18.04.2/release/)に、[Raspberry Pi 3 (64-bit ARM) preinstalled server image](http://cdimage.ubuntu.com/releases/18.04.2/release/ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz)が載り、イメージを焼くだけで、ラズパイ3なら、64bit Ubuntuが使えるようになりました。
- ということで、(2019年2月20日現在)最新のPocketMine-MPをラズパイ3で、動かそう


# 環境
- Raspberry Pi 3B / 3B+
- MicroSD: 16GB
- イメージ: [`ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz`](http://cdimage.ubuntu.com/releases/18.04.2/release/ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz) 
    - 2019-02-10 00:51 - 419M
    - user: `ubuntu` / 初期パスワード: `ubuntu`<br>(初回ログイン時に、パスワード変更を求められる。) 
- 有線LAN接続 (Wifiも設定すれば使える)
- Dockerfileなどは、こちら https://github.com/mt08xx/docker-pmmp-arm64

# 手順
1. [Etcher](https://www.balena.io/etcher/)で、イメージを焼く。(xzを解凍しないで、そのままファイルを指定すればOK. 解凍しながら焼いてくれる)
2. HDMIディスプレイ、キーボード、有線LANをつないで、起動。(IPアドレスが分かれば、親機からsshでログインできるので、有線LANのみでもいける)
3. user: `ubuntu` / password: `ubuntu`でログイン。<br>初回ログイン時、パスワード変更を求められるので、現在のパスワード(`ubuntu`)を入れて、新しいパスワードを２回タイプする。
4. 初期設定など.
    - `ip address show dev eth0` # IPアドレスを確認
    - `sudo hostnamectl set-hostname u1804 && sudo reboot` # ホスト名を`u1804`に変更/再起動
    - `sudo apt update && sudo apt upgrade -y && sudo reboot` # パッケージ更新/再起動
    - `sudo dpkg-reconfigure tzdata` # タイムゾーン設定
    - `sudo dpkg-reconfigure locales` # ロケールの設定 

5. dockerインストール

	```bash
	sudo bash # rootへ
	curl -fsSL https://get.docker.com | bash
	usermod -aG docker ubuntu
	reboot #再起動
	```


6. PocketMine-MP起動(初回、設定するので、`-it` オプション付きで。

	```bash:初回時
	docker run -it --rm -v ${HOME}/pmmp-arm64/data:/data -p 19132:19132/udp --name pmmp mt08/pmmp-arm64
	```
	- 最初の、言語選択で、`jpn`
	- ライセンスに同意に `y`
	- で、あと[Enter]連打...
	- データは、`${HOME}/pmmp-arm64/data`に作られるので、失敗したら、消して、やり直す..
	- うまくいったら、CTRL-P, CTRL-Q で、デタッチ。
	- `docker attach pmmp` # で接続
	- `docker logs pmmp` # でログがみれる


	```bash:設定後は、-dで(-itの代わりに)、バックグラウンド起動
	docker run -d --rm -v ${HOME}/pmmp-arm64/data:/data -p 19132:19132/udp --name pmmp mt08/pmmp-arm64
	```

7. 実行例

	```shell-session:logs
	ubuntu@u1804:~$ docker logs pmmp
	[09:14:22] [Server thread/INFO]: Loading pocketmine.yml...
	[09:14:22] [Server thread/INFO]: Loading server properties...
	[09:14:22] [Server thread/INFO]: 日本語（jpn）をデフォルトの言語として選択しました
	[09:14:22] [Server thread/WARNING]: Debugging assertions are enabled, this may impact on performance. To disable them, set `zend.assertions = -1` in php.ini.
	[09:14:22] [Server thread/INFO]: Minecraft: Bedrock Edition サーバーバージョン v1.9.0 を開始しています
	[09:14:22] [Server thread/NOTICE]: オンラインモードが有効になっています。サーバーは、プレイヤーが Xbox Live に認証されていることを確認します。
	[09:14:22] [Server thread/NOTICE]: 認証を無効にするには、server.properties で「xbox-auth」を「false」に設定してください。
	[09:14:22] [Server thread/INFO]: サーバーを 0.0.0.0:19132 で開始しています
	[09:14:22] [Server thread/INFO]: このサーバーは PocketMine-MP バージョン 3.6.2 を実行しています
	[09:14:22] [Server thread/INFO]: PocketMine-MP は LGPL ライセンスのもとで配布されています
	[09:14:23] [Server thread/INFO]: Loading resource packs...
	[09:14:23] [Server thread/INFO]: レベル「world」を準備しています
	[09:14:23] [Server thread/INFO]: GS4 ステータスリスナーを開始しています
	[09:14:23] [Server thread/INFO]: Query ポートを 19132 に設定しています
	[09:14:23] [Server thread/INFO]: Query は 0.0.0.0:19132 で動作しています
	[09:14:23] [Server thread/INFO]: デフォルトのゲームタイプ：サバイバルモード
	[09:14:23] [Server thread/INFO]: 完了（1.518 秒）！ヘルプについては「help」または「?」を入力してください
	[09:15:28] [Server thread/INFO]: HogeHoge123[/192.168.1.2:64684] がエンティティ ID 1 として (world, 256, 64, 256) にログインしました
	[09:15:48] [Server thread/INFO]: HogeHoge123 がゲームに参加しました
	[09:16:05] [Server thread/INFO]: HogeHoge123 がゲームを退出しました
	[09:16:05] [Server thread/INFO]: HogeHoge123[/192.168.1.2:64684] が client disconnect によってログアウトされました
	ubuntu@u1804:~$ 
	```


# その他
- とりあえず、動かした.
- (TODO) 自動起動の設定の方法