はじめに
ラズパイで遊んでみたいな~と思ってた矢先,息子からマイクラ一緒にやろうというお誘いがありました.それではと,ラズパイでサーバーを立ててみることにしました.
意外と簡単にできたので,その備忘録です.
OSのインストール
ラズパイですが,勢いでRaspberry Pi 4 Model Bのメモリ8Gバージョンを買ってしまいました.OSはRaspberry Pi OSを入れるのが色々と簡単かなと思っていたのですが,Raspberry Pi OSは32bit版になるので,メモリが無駄になります.
加えて,設定が終わって稼働し始めたら,ディスプレイ,キーボード,マウスなど全部外して部屋の片隅に置いておくつもりなので,以下の構成にしました.
- Raspberry Pi 4 Model B/8G
- Ubuntu Server 20.04.3 LTS
OSの初期設定
ディスプレイ無しで動かしたいので,可能な設定は先にすませておきます.
現在のIPアドレスを確認するには
現在のIPアドレスはipコマンドで確認できます.
ip addr show または ip a (どちらも同じ)
動作確認してみる
以上でとりあえず必要な設定は終わりましたので,SDカードをラズパイに差し込み起動してみます.(初回は何かと時間がかかったりしますので,モニタとキーボードを繋いで様子を見た方が安心です)
初期のユーザ名,パスワードはともに「ubuntu」です.ログインプロンプトが出たら,ログインしてみます.初回はパスワードの変更を求められますので変更しておきます.
また,適当なホストにpingを打ってみて,ネットワーク接続されていることを確認しておきます.下の例は接続したwifiルータにpingを打った結果です.ちゃんと返ってきてますのでOKです.
次にSSHでの接続も確認します.別のPCから,Teraterm等のターミナルソフトを使ってラズパイに接続します.下はRLoginというアプリを使って接続した例です.
先ずは接続の設定をします.特に難しくはなく,ラズパイのIPアドレス,ログインユーザ名,パスワードを入力し,プロトコルにsshを選択するだけです.
接続すると,プロンプトが表示されちゃんと接続されたことが分かります.これでディスプレイ,キーボードを繋がなくても,全ての操作がPCから可能になりました.
JAVA 17をインストールする
マイクラサーバを動かすにはJAVAが必要になりますのでインストールします.
2022年1月8日現在のマイクラサーバ(公式)のバージョンは1.18.1で,これを実行するにはJAVA17が必要になります.
まずは,aptコマンドでインストールできないか見てみました.パッケージ情報が古いとJava 17が取得できない場合もあるのでaptコマンドで最新のパッケージ情報にアップデートします.
sudo apt update
この環境では以下のような結果になりました.JAVA 17のJDKはリストに出てきませんのでaptコマンド一発でインストールできないようです.
ubuntu@ubuntu:~$ sudo apt search openjdk-\(\.\)\+-jdk$
Sorting... Done
Full Text Search... Done
openjdk-11-jdk/focal-updates,focal-security 11.0.11+9-0ubuntu2~20.04 arm64
OpenJDK Development Kit (JDK)
openjdk-13-jdk/focal-updates,focal-security 13.0.7+5-0ubuntu1~20.04 arm64
OpenJDK Development Kit (JDK)
openjdk-14-jdk/focal-updates 14.0.2+12-1~20.04 arm64
OpenJDK Development Kit (JDK)
openjdk-16-jdk/focal-updates,focal-security 16.0.1+9-1~20.04 arm64
OpenJDK Development Kit (JDK)
openjdk-8-jdk/focal-updates,focal-security 8u292-b10-0ubuntu1~20.04 arm64
OpenJDK Development Kit (JDK)
しかたがないので,手作業でインストールしていくことにします.ダウンロード用URLを以下から調べます.openjdkとかでも大丈夫です.
ラズパイで動かすので,「Arm 64 Compressed Archive」のURLを調べ,wgetでダウンロードします.
wget --no-check-certificate https://download.oracle.com/java/17/latest/jdk-17_linux-aarch64_bin.tar.gz
今回はホームディレクトリにJDKsというディレクトリを作り,その中にJDKをインストールすることにします.上でゲットした圧縮ファイルをJDKsの中に展開します.
mkdir JDKs
tar --extract --file jdk-17_linux-aarch64_bin.tar.gz --directory=./JDKs/
その後は,update-alternativesで/usr/bin/javaにリンクを作ります.パスの設定なども自動でやってくれます.
sudo update-alternatives --install "/usr/bin/java" "java" "/home/ubuntu/JDKs/jdk-17.0.1/bin/java" 1
もし,バージョンの異なる複数のJAVAがインストールされている場合は以下のコマンドで選択が可能です.
sudo update-alternatives --config java
最後に,動作確認を兼ねてバージョンを確認しておきます.以下のように出てくれば成功です.
ubuntu@ubuntu:~$ java -version
java version "17.0.1" 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)
マイクラサーバをインストールする
インストールするといっても,サーバのjarファイルをダウンロードして適当な場所に配置するだけの作業です.
公式webサイトでダウンロード用のURLを調べます.
今回は,ホームディレクトリにminecraftというディレクトリを作り,その中に配置することにします.
mkdir minecraft
cd minecraft
wget https://launcher.mojang.com/v1/objects/125e5adf40c659fd3bce3e66e67a16bb49ecc1b9/server.jar
サーバを起動します.メモリはとりあえず3G割り当ててみました.
java -Xmx3072M -Xms3072M -jar server.jar nogui
初回起動時はいろいろ表示された後
(これより上は省略)
Starting net.minecraft.server.Main
[19:15:15] [ServerMain/ERROR]: Failed to load properties from file: server.properties
[19:15:16] [ServerMain/WARN]: Failed to load eula.txt
[19:15:16] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
のようなメッセージが出て終了します.サーバと同じディレクトリに「eula.txt」というファイルができていますので,これを書き換えてサーバの起動を許可する必要があります.
ubuntu@ubuntu:~/minecraft$ more eula.txt
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Wed Jul 21 19:15:16 UTC 2021
eula=false (eula=trueに書き換える)
eula.txtの内容を見ると上のようになっていますので,「eula=false」を「eula=true」に書き換えて,サーバを再度起動します.
再度起動して以下のような表示が出れば,マイクラサーバは起動しています.初回は結構時間がかかります.
Done (216.861s)! For help, type "help"
サーバを停止するには
stop
と打ち込みます.
サーバ起動用スクリプト
サーバ起動のコマンドが長ったらしくて覚えられないので,スクリプトを作っておきます.
mStart.shという名前(何でも良い)でファイルを作り,以下の内容を書いておきます.
#!/bin/sh
java -Xmx3072M -Xms3072M -jar ./server.jar nogui
作ったmStart.shに実行可能フラグを立てます.
chmod +x mStart.sh
これで,./mStart.shと打ち込めばサーバが起動します.
screenでセッションを保存する
基本的には以上でOKですが,このままではサーバを起動したユーザがログアウトしたり,SSH接続が切れたりすると,サーバのプロセスも終了してしまいますので,screenコマンドで新しいセッションを作り,その中でサーバを動かすことにします.
新しいセッションを作ってサーバを起動する
screen
何やらメッセージが出てきます.
Enterを押すと通常のプロンプトが出てきます.何の変哲も無いプロンプトですが,先ほどとは異なるセッションで動いています.
ここで,マイクラサーバを起動します.
./mStart.sh
サーバが起動したらこのセッションから抜けます(デタッチ).
(Ctrl + a) d
Ctrlを押しながらaを押し,その後でdを押します.
デタッチした後は,ログアウトしたりSSH接続を閉じたりしても,ラズパイの電源が入っていればサーバは動き続けます.
サーバが動いているセッションに入り直す
screenコマンドで作ったセッションリストを確認します.
screen -ls
以下のようにセッションのリストが出てきます.
ubuntu@ubuntu:~$ screen -ls
There is a screen on:
2816.pts-0.ubuntu (07/21/21 20:14:03) (Detached)
1 Socket in /run/screen/S-ubuntu.
この場合,セッションIDが「2816」で一つ動いているのが分かりますので,「screen -r」にセッションIDを指定することで,そのセッションに戻る(アタッチする)ことができます.
screen -r 2816
使用感
まだ使い込んでいませんが,家庭内LANで2,3人でプレイする分には特に問題無く動いているように思います.
家にサーバマシンを置いておくスペースも無いですし,お金払ってRelmsを使う(月々4ドル~8ドルくらい)よりコスパ良いのではと思っています.