# pmmp.ioのコードをgit cloneして使ってるので、うまいpharがでたら、記事をちょいと直します。
概要
-
Raspberry Pi 3に
- Pocketmine-MPベースのMCPEサーバソフトを入れ、
- 無線アクセスポイントにしてしまう
=> 直接、ラズパイにつなぐ
-
無線アクセスポイントにするのに、pi-holeを使って、dhcpサーバをさせる
=> 広告除去付 Wifi-APになる! -
もしかして、バッテリー駆動させれば、モバイルMCPE鯖になる???(未確認) ... ちゃんとシャットダウン処理しないと、データおかしくなるよな。
-
サイト
-
pmmp.ioは、最新のもの(1.6.2dev-110)で
Minecraft: PE server version v1.1.0.55
となったが、エラー([Server thread/CRITICAL]: InvalidArgumentException: "Inventory slot index "255" is out of range" (EXCEPTION) in "/src/pocketmine/inventory/PlayerInventory" at line 117
)でログインできなかったりして、 -
BlueLight (v1.0.9)をインストールが、こっちもだめ、、
-
pmmp.ioのgithubのコードが修正されたので、これを使用する。
環境
- サーバ
- Raspberry Pi 3
- Raspbian :
2017-04-10-raspbian-jessie-lite
- Wifiはアクセスポイントに使うので、有線側がインターネットにアクセスできて(ファイルとかダウンロードする)、おうちのPCからsshログインできるようにしておこう.
- クライアント
- iOS: Minecraft Pocket Edition (通称:MCPE)
v1.0.9
- Windows 10: Minecraft: Windows 10 Edition
- iOS: Minecraft Pocket Edition (通称:MCPE)
手順
下準備
-
いつも通りに、RaspbianイメージをSDに焼いて、
ssh
ファイルを作成し、ラズパイに挿して、起動。 - sshでログインして、こぴぺとか多いので、設定すると、らくかも。(ToDo: 一発スクリプトをつくる...)
PocketMine-MP のインストール
-
インストール
コピペ
DIR_PMMP=/home/pi/pocketmine
mkdir -p $DIR_PMMP
cd $DIR_PMMP
sudo apt update && sudo apt install -y build-essential git autoconf libtool-bin && curl -sL https://get.pmmp.io | sed -e 's@BCM270[89]@BCM@' | bash -s -
```bash:pmmp.ioのコードをクローン
DIR_PMMP=/home/pi/pocketmine
if [ -d $HOME/PocketMine-MP/.git ] ; then sh -c 'cd $HOME/PocketMine-MP && git pull && git submodule update'; else sh -c 'cd $HOME && git clone https://github.com/pmmp/PocketMine-MP && cd $HOME/PocketMine-MP && git submodule update --init'; fi
cp -r $HOME/PocketMine-MP/src $DIR_PMMP
#
```bash:BlueLightをダウンロード
BlueLightもダウンロード (Build#770は、v1.0.9)
curl -L -O http://jenkins.haniokasai.com/job/BlueLight-PMMP/770/artifact/artifacts/BlueLight-PHP7.phar
最新ビルドは
2. 初回起動: `./start.sh`
初回起動時、いろいろ聞かれるので、うまく設定していく。
```bash
DIR_PMMP=/home/pi/pocketmine
cd $DIR_PMMP
# git cloneしたヤツを使う
./start.sh -f src/pocketmine/PocketMine.php
# 普通の PocketMine-MP.phar使用時は、
# ./start.sh
# Bluelightを使用する場合
# ./start.sh -f BlueLight-PHP7.phar
- または
```bash:または、以下コピペして、30秒くらいしたら、Ctrl-Cを押して抜ける.19132の次の行の0を1にすると、クリエイティブモード
./start.sh -f src/pocketmine/PocketMine.php << EOF
jpn
y
n
Minecraft: PE Server
19132
0
20
y
OPeratorPlayerName
n
n
n
EOF
3. 設定後の起動
```bash:こぴぺ
cd /home/pi/pocketmine
./start.sh -f src/pocketmine/PocketMine.php
# ./start.sh
# Bluelightを使用する場合
# ./start.sh -f BlueLight-PHP7.phar
#
-
サービスとして登録する場合(電源ONで自動起動. サーバのコンソールは使えない)
以下コピペDIR_PMMP=/home/pi/pocketmine PMMP_EXEC=src/pocketmine/PocketMine.php #PMMP_EXEC=PocketMine-MP.phar #PMMP_EXEC=BlueLight-PHP7.phar cat << EOF | sudo tee /etc/systemd/system/pocketmine.service [Unit] Description=PocketMine-MP MCPE Server [Service] User=pi # ExecStart=$DIR_PMMP/start.sh 1>/dev/null 2>&1 # BlueLightを使うときはこっち. ExecStart=${DIR_PMMP}/start.sh -f ${DIR_PMMP}/${PMMP_EXEC} 1>/dev/null 2>&1 WorkingDirectory=/home/pi Restart=always RestartSec=5s [Install] WantedBy=multi-user.target EOF sudo systemctl enable pocketmine sudo systemctl status pocketmine sudo systemctl daemon-reload sudo systemctl restart pocketmine sudo systemctl status pocketmine
```bash:サービス登録をやめるとき
sudo systemctl status pocketmine
sudo systemctl stop pocketmine
sudo systemctl disable pocketmine
sudo systemctl status pocketmine
#
Wifi-AP + DHCPサーバ(Pi-hole使用)
コレにそって設定する。
-
hostapdをインストール
sudo su -c 'apt update && apt upgrade -y && apt install hostapd -y'
2. wlan0 を固定IPに (192.168.42.1)、 hostapd と ip-forwarding 設定をして、再起動。
SSIDとPassphraseの設定(`WIFI_SSID`と`WIFI_PASS`)をして、こぴぺ。
```bash:コピペ。一回だけだよ
# SSIDとPassphraseの設定
WIFI_SSID=Pi3-AP
WIFI_PASS=raspberry
###
# Make sure hostapd is installed :)
# sudo apt install hostapd -y
###
# Unmanage: wlan0 by DHCPCD
echo denyinterfaces wlan0 | sudo tee -a /etc/dhcpcd.conf
###
# Modify: /etc/network/interfaces
sudo sed -i \
-e 's/allow-hotplug wlan0/#allow-hotplug wlan0/g' \
-e 's/iface wlan0 inet manual/#iface wlan0 inet manual/g' \
-e 's@ wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf@# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf@' \
/etc/network/interfaces
cat <<EOF | sudo tee -a /etc/network/interfaces
#
# wlan0 - static IP
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0
network 192.168.42.0
broadcast 192.168.42.255
EOF
###
# Create: /etc/hostapd/hostapd.conf
# ssid/wpa_passphrase = Pi3-AP/raspberry
# you may modify them.
cat <<EOF | sudo tee /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
#driver=rtl871xdrv
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
ssid=${WIFI_SSID}
wpa_passphrase=${WIFI_PASS}
EOF
##
# Edit: /etc/default/hostapd
echo DAEMON_CONF=\"/etc/hostapd/hostapd.conf\" | sudo tee -a /etc/default/hostapd
##
# Setting: IP Forward
sudo sed -i -e 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
#
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
#
echo 'iptables-restore < /etc/iptables.ipv4.nat' | sudo tee /lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat
##
# Reboot!
sudo reboot
##
```
3. [pi-hole](https://pi-hole.net/)のインストール
```bash:こぴぺ。待つと、設定の画面が出てくる。
curl -L https://install.pi-hole.net | bash
-
[Enter] => [Enter] => [Enter] => ↓矢印キー => スペースキー => [Tab] => [Enter] と押して、
(*) wlan0 available
を選択 -
あとは、
<Ok>
=><Ok>
=><Ok>
と進める。 -
有線経由で、ラズパイにアクセスする。ブラウザを開いて、
http://<らずぱいのIPアドレス>/admin/settings.php
にアクセスする、パスワード聞かれるので、さっきのを入れる。 -
開いたら、Pi-Hole DHCP Serverのとこで、 [v] DHCP server Enabled にチェックを入れて、[Save]を押す。
-
再起動:
sudo reboot
接続
- 再起動後、スマホなどのWifiへ接続する設定で、SSIDが見えるはず、なのでつなぐ。(例: SSID:
Pi3-AP
/ パスワード:raspberry
) - PocketMine-MPが自動起動するようになってなければ、手動で、起動させる。
- Minecraft起動して、Friendsのとこから、LAN Gamesのとこに、サーバが出てくるはず
メンテナンス (TODO: そのうち...)
- pi-holeのアップデート
- PocketMine-MPのアップデート
トラブル??
-
なんかおかしい
- クライアントのバージョンが上がると、おかしくなった
=>今回も、記事を書いてる最中、おかしくなりました..(v1.0.9 => v1.1.0) - サーバのバージョンが上がると、おかしくなった
=>今回も、記事を書いてる最中、おかしk...
=> 自動起動をやめて、コンソール開いて、そこから、サーバを起動させると、いろいろメッセージがみれるかと...
- クライアントのバージョンが上がると、おかしくなった
-
pluginがバージョンチェックではじかれる..
- gitでクローンしたのを使ってるなら、version checkを無効に...(ぉ. いいのか?!
src/pocketmine/plugin/PluginManager.php$ diff -uprN src/pocketmine/plugin/PluginManager.php{.org,} --- src/pocketmine/plugin/PluginManager.php.org 2017-06-01 19:35:42.594662156 -0700 +++ src/pocketmine/plugin/PluginManager.php 2017-06-01 23:06:13.641016261 -0700 @@ -246,7 +246,7 @@ class PluginManager{ break; } - if($compatible === false){ + if(0 && $compatible === false){ $this->server->getLogger()->error($this->server->getLanguage()->translateString("pocketmine.plugin.loadError", [$name, "%pocketmine.plugin.incompatibleAPI"])); continue; } $
その他
-
ピストンブロックとか、使えないよね。
-
(メモ)swap消して、/var/log/あたりをtmpfsにしてる場合
cronを使って、起動時にlighttpdのフォルダ作成
$ sudo crontab -l | grep reboot
@reboot /home/pi/atstartup.sh
$ cat /home/pi/atstartup.sh
!/bin/bash
mkdir /var/log/lighttpd
chown www-data:www-data /var/log/lighttpd
3. (メモ) shutdown/rebootさせるURLみたいなの。セキュリティ無し。
```bash:こぴぺ
# メインページ
echo '<html><a href="shutdown-h.php">Shutdown</a><br><br><br><a href="shutdown-r.php">Reboot</a></html>' | sudo tee /var/www/html/shutdown.html
# shutdown スクリプト
echo "<?php system('sudo /sbin/shutdown -h now'); ?>" | sudo tee /var/www/html/shutdown-h.php
echo "<?php system('sudo /sbin/shutdown -r now'); ?>" | sudo tee /var/www/html/shutdown-r.php
#
# www-dataにsudo shutdownを使えるようにする
echo 'www-data ALL = NOPASSWD: /sbin/shutdown' | sudo tee /etc/sudoers.d/www-shutdown
#
```
- wifi-APに接続してるなら、`http://192.168.42.1/shutdown.html` にアクセス