分からないところからRaspberry Pi3B+でHamachi+Minecraft serverを立ててみた
Raspberry Piを衝動的に買って、遊んでみた。
そのうちの一つ、Minecraftサーバーを立ててみるテスト。
- 目標:ほとんど触ったことのないRaspberry Piで、RaspbianOS+minecraft server+hamachiをやってみる
- 目標2:もっと安定化しているといわれるSpigot serverも入れてみる
- Raspberry pi:3B+
- Minecraft:minecraft_server.1.13.2
- Hamachi:2.1.0.198-1
- 元PC Windows10 64bit
- 揃えたもの
- スタート
- Raspbian、etcherをwinPCに入れる
- MicroSDにbootイメージを書き込む
- etcherを起動し、raspbianを選択してburn
- Raspberry piに、ヒートシンクをつける
- Raspberry piに、microSD、USBキーボード、HDMIケーブルをつける
- ACアダプターをつけて起動する
- 初期アカウントでログインする
- id:pi
- password:raspberry
- config
- Raspbian、etcherをwinPCに入れる
- 初期設定
- つなぐと、読み込み後にデスクトップが起動する マウスでnext
- country:japan
- language:japanese
- timezone:tokyo
- new password設定
- wifiが自動検索される。いったんskip
- アップデートが自動検索される。ネットにつながっていないのでエラーになる
- rebootで再起動される
- account変更 (仮名:raspberrysan)
- $sudo adduser raspberrysan
- $groups pi
- $sudo usermod -G pi,adm,……
- $groups raspberrysan
- piアカウントを一応消しておく
- $userdel -r pi
- sshd_configで、ポートや直接ログイン禁止を設定
- アップデート
- リモートデスクトップ(ローカル時のみ)
sshでもよかったけれど、いったん無効にして、win10とPiをVNCでつなぐ。
こちらを参考に。
-
- 自分のルーターにアクセスし、raspberry pi(MACアドレスがb8:27:eb……)のIPアドレスを192.168.1.10に固定
- メニュー>設定>Raspberry Piの設定>インターフェース>VNC:有効にする
- ネットワークアイコンにカーソルを合わせ、eth0が設定した192.168.1.10になっていることを確認
- win10では、VNC Viewerをダウンロード、インストール
- VNC Viewerを起動して、192.168.1.10にアクセス、フレーズ等確認してOK
- これでリモートデスクトップ完了
- 切るときはVNC Viewer上部の×を押す
- CLI設定
起動したときにコマンドラインで起動するように
-
- Raspberry piの設定>システム>ブート:CLIに
- Raspberry piの設定>パフォーマンス>GPUメモリ:16に
- $reboot
以降、デスクトップを起動したいときは$startxで。デスクトップから$rebootでもCLIに戻れる。
ここまででいったんMicroSDをバックアップしておいた。
ここからがMinecraft Server導入。
- Minecraft Serverのインストール。今回は1.13.2。
こちらを参考に。
- screenのインストール
- $sudo apt-get install screen
- フォルダの作成
- $sudo mkdir /home/raspberrysan/minecraft
- serverファイル取得
- 権限切り替え(行わないとたまにパーミッションエラーになる)
- $cd ~
- $sudo chmod 747 /home/raspberrysan/minecraft
- 作業フォルダ移動
- $cd /home/raspberrysan/minecraft
- 一度目の起動
- Stopping serverを確認し、当該フォルダのeula.txtを開き、「eula=false」を「eula=true」にする
- 二度目の起動(ゆっくり待つ)
- 起動用シェルスクリプトの作成(上記サイト参照)
- 起動コマンド中に指定するメモリ割り当て量は、上記では800MBにしているものの、ぎりぎりまで上げたいところ。$freeでフリーメモリをみておいて、その分を入れておきたい。
- $reboot
Hamachiの導入
グローバルIP指定やポート開放ができるのであればこれは省略。hamachiを使う場合は必ず身内用で。
こちらを参考に。
最新のHamachi for Linuxはこちら。今回は2.1.0.198-1。
https://www.vpn.net/linux
- ダウンロード
- インストール
- グループ参加
(あらかじめ、hamachiアカウントを登録しておく。ここでは例としてa@b。グループがなければそれも作成する。ここでは例として000000/password)
こちらを参考に。
ここまでで二度目のバックアップ。
通常起動
-
- $./startmc.sh
- $screen -r
- 「Done!」が出ればサーバー起動成功
あとはそのまま。(stopでサーバー停止。Ctrl+A+DでCLI画面に戻る)
クライアントwinPC
- クライアントをダウンロード、1.13.2をインストール
- hamachiクライアントをインストール、raspberry piと同じグループに入る
- クライアントを起動、マルチプレイ>サーバーに192.168.1.10(もしくはhamachiに表示されているpiのIP)を指定
- プレイ可能
//////////
ここまでの感想
導入は意外と簡単に感じた。たまにパーミッションで引っかかることはあるものの、それ以外はスムーズに。あと、サーバー起動時にメモリ量設定をしないとメモリ不足エラーになる。
サーバーが起動しなくなることはほぼなく、worldの散歩もできる。しかし、実際のプレイ感としては、ところどころに重い部分がある。
主なエラーとして、
"Can't keep up!"
という、メモリ不足による処理エラーが数十秒に一度出る。あまりにこの数値が大きいときはラグも大きめ。
あまりにひどいと、木を伐採したのが無効化されたり、数秒巻き戻されたりする。
また、
"Player moved quickly!"
という、キャラクタの移動が速いエラーも起こる。特にworldの新しい場所に行ったときに頻発。
もちろん、接続人数が二人に増えるとラグも多め。特に、ネザーゲートを作成した途端かなり重くなった。
対策としては下記になるだろうか。
・なるべく多めにメモリを充てる
・CPUのオーバークロック (3B+だとデフォルトで無効?)
・server.properties中のview-distanceを少なめにする
・spigotサーバーを導入してみる
というわけで、spigotサーバーも試してみた。
//////////
Spigotサーバーの導入
こちらを参考に。
- gitを入れる
- $sudo apt-get install git
- 別のフォルダbを作る
- $sudo mkdir /home/raspberrysan/minecraftb
- $sudo chmod 747 /home/raspberrysan/minecraftb
- $cd /home/raspberrysan/minecraftb
- 取得
- ビルド
$git config --global --unset cora.autocrlf
$java -jar BuildTools.jar -rev 1.13.2
↑がかなり時間がかかる。とまっているように見えるときも進んでいる。
successで成功。spigot-1.13.2.jarが目的ファイル。
- 一度目の起動
- $java -jar -server -Xmx800M -Xms800M spigot-1.13.2.jar nogui
- Stopping serverを確認し、当該フォルダのeula.txtを開き、「eula=false」を「eula=true」にする
- 二度目の起動(ゆっくり待つ)
- $java -jar -server -Xmx800M -Xms800M spigot-1.13.2.jar nogui
- 起動用シェルスクリプトのminecraft_server.1.13.2.jarをspigot-1.13.2.jarに書き換える
- $reboot
- バックアップ
- $./startmc.sh
- $screen -r
//////////
Spigotの感想
エラーが減るとのことで試してみたところ、確かにCan't keep upエラーはまずでなくなった。比較してもかなり軽い。本当たまにtoo moved quicklyエラーが出るくらい。しかし、マルチで各プレイヤーが離れるとラグも増え、敵の挙動が少し変わる。
//////////
//////////
その他やってみたいこと
- オーバークロックでarm_freq=1000,over_voltage=2にしたら改善傾向
- 定期的な再起動
- もっと軽くする
//////////