Raspberry Pi 3 Model B+でMinecraft Java Editionのサーバーを構築する

Raspberry Pi 3 B+でMinecraftサーバーを立てる方法をご紹介します。Minecraftサーバーを立てたら常時稼働させておきたいところですが、負荷の高いMinecraftを通常利用しているPCで常時稼働させるのは難しいと思います。サーバー専用のPCを買うとなるとそれなりの出費ですし、電気代は言わずもがな。Raspberry Piであれば1万円以下の出費で低消費電力のサーバーを立てることが可能です。

本記事ではとりあえずサーバーとして稼働させるまでを紹介しています。このままの状態でインターネットには公開しないでください。まだセキュリティ面での対策を行っていないためです。インターネットに開放するためのポート開放とセキュリティ設定は別の記事に記載させて頂きます。

書いてから気づいたのですが、同様の記事が数多ありますね(笑)。一応の差別化として、本記事は以下のポリシーで書いています。

  • 対象者は、WindowsPCは扱えてMinecraftは大好きだけど、LinuxやRaspberry Piは扱ったことがない。ような方です。
  • 可能な限りシンプルかつ汎用的な手順、構成にするようにしています。screenは使っていません。
  • すでに構築済みのDebian系Linux環境があるなら、「4.Minecraftサーバーの構築」のみ実施いただければ構築できます。

目次

  1. 用意するもの
  2. OSのインストールと起動
    1. Raspbianのダウンロード
    2. イメージの書き込み
    3. Raspbianを起動
  3. Raspbianの初期設定
    1. Raspbianにログイン
    2. raspi-configによる設定
    3. IPアドレスの決定
    4. IPアドレスの設定
    5. TeraTermでの接続
    6. GPUメモリの縮小
  4. Minecraftサーバーの構築
    1. Javaのインストール
    2. Minecraftサーバーのダウンロード
    3. Minecraftサーバーの設定
    4. Minecraftサーバーのサービス化
    5. MinecraftサーバーにPCから接続する
  5. 動作について
  6. 電気代について
  7. 最後に

用意するもの

以下のものを用意します。秋葉原や大須等の電気街に行けば店頭でも売っていると思いますが、Amazonでも揃いますし、正規代理店のRSコンポーネンツでも良いかと。参考までにAmazonの該当商品へのリンクを張っています。

Raspberry Pi 3 Model B+ [5,000円程度]
MinecraftはそれなりにCPU、メモリを使用するため、本稿執筆時点で最新の3 B+を使用します。

ACアダプタ(5V,2.5A,Micro-B) [1,500円程度]
ACアダプタは出力電圧が5V、出力電流は2.5A以上、コネクタがMicro-Bのものを選びます。Raspberry Pi 3対応と銘打っているものを買えば間違いないです。私は3.0Aのものを買いました。電流が2.5Aより低いと高負荷時にダウンしてしまう場合があるようなので注意してください。

ファン付きケース [1,500円程度]
むき出し状態でも動きますが、取り扱いに注意が必要になってしまうのでケースに入れた方が良いです。Raspberry Pi 3対応のものを購入してください。また、前述のとおりMinecraftはそれなりにCPUを使うので、安定稼働のためにはヒートシンクとファンをつけた方が良いです。ケースに合うファンを別途探すのは難しいので、ケースとセットで売っているものをお勧めします。

MicroSDカード [1,000円程度]
MicroSDカードは転送速度重視で選びます。Raspberry Piの仕様書には転送速度の上限が書いていないのでよく分からないのですが、Class10、UHS-1のものを購入して問題なく稼働しています。容量は16GB~32GBで十分かと思います。ただ相性問題が多々あるようですので、ネット上で問題なしの実績があるものを選んだ方が無難です。私は店舗で購入するときに、隣に置いてあったこの製品を買いました。おそらく検証済みであろうということで。

LANケーブル
500-800円程度ネットワークに有線LANで接続する場合はLANケーブルを用意します。お持ちのRaspberry Piの設置場所からルーターもしくはスイッチングハブに届く長さを用意してください。無線LAN(WiFi)を使うなら不要です。

HDMIケーブル(A-A)
Raspberry PiはHDMIで映像を出力します。Raspberry Pi側はタイプA、モニター側は機器に合わせますが、通常はタイプAだと思います。モニターを接続するのは初期設定時のみなので、他の機器で使っているものを一時的に流用すれば十分です。なければ1000円以内で買えます。

キーボード&マウス
USB接続のキーボードとマウスを用意します。初期設定時にのみ使用するため、専用のものを用意する必要はありません。

PCモニター or TV
モニターは初期設定時にのみ接続するので、専用のものを用意する必要はありません。今のテレビはほとんどHDMI入力が付いているので、テレビを一時的に使えば問題ないです。

OSのインストールと起動

Raspberry Pi用のOSであるRaspbianをインストールします。OSのイメージファイルをダウンロードし、microSDカードに書き込んでRasbperry Piに差し込めばOKです。

Raspbianのダウンロード

Raspbian Stretch Liteをダウンロードします。

LiteはRaspbianの最小構成版です。Raspberry PiはMinecraftを動かすには性能的にちょっとギリギリで、必須ではないプログラムにリソースを使ってしまうのは惜しいのでLiteにしています。
ダウンロードサイトを開き、Raspbian Stretch Liteの「Download ZIP」をクリックしてダウンロードします。

ZIPファイルがダウンロードできたら、適当なアーカイバで展開します。

推奨されるアーカイバは7-Zipです。定番のlhaplusでも良いのですが、lhaplusは巨大なファイルや、多数のファイルを含むzipファイルを展開するとエラーが起きることがあるので、筆者としても7-Zipがお勧めです。

展開すると「2018-11-13-raspbian-stretch-lite.img」のようなイメージファイルが出来ます。「2018-11-13」の部分はリリースされた日付なので、さらに新しいバージョンが出れば変わります。

イメージの書き込み

イメージファイルをイメージ書き込みツールを使ってmicroSDカードに書き込みます。インストールガイドで推奨されているイメージ書き込みツールは「Etcher」もしくは「Win32DiskImager」です。操作はEtcherの方がシンプルです。Win32DiskImagerは少々複雑ですが、イメージファイルからSDカードへの書き込みだけではなく、SDカードからイメージファイルへの読み取りもできるので、バックアップ目的としても使えます。Etcherでの書き込み方法をインストールガイドから転記します。

  1. etcher.ioからWindowsインストーラをダウンロードする
  2. Etcherを実行し、解凍されたRaspbianイメージファイルを選択してください
  3. SDカードドライブを選択してください
  4. 最後に、書き込みをクリックしてSDカードにRaspbianイメージを書き込みます
  5. 進行状況バーが表示されます。 完了すると、ユーティリティはSDカードを自動的にアンマウントし、コンピュータからSDカードを安全に取り外すことができます。
一度Raspbianのイメージを書き込むと、SDカードの中に2つのパーティションが作られます。やり直す場合はSDFormatterを使用してFAT32でフォーマットし、再度イメージ書き込みを行います。
Raspbianを起動

セットアップガイドの転記ですが、以下のように接続して起動します。

  1. microSDカードを挿入します。
  2. HDMIケーブルでRaspberry Piとモニターを接続します。
  3. USBマウスとキーボードを接続します。
  4. 有線でネットワークに接続する場合は、LANケーブルでRaspberry Piとネットワーク機器(ルーター、スイッチングハブ、場合によってはPC)を接続します。
  5. ACアダプタの電源プラグをコンセントに差し込み、USB Micro-BコネクタをRaspberry Piに差し込みます。

Raspberry Piには電源ボタンがないので、v.の時点で電源ONとなります。虹色の画面が表示されたのち、しばらく起動処理が行われます。以下の「ログインプロンプト」が表示されれば起動成功です。

 

Raspbianの初期設定

Minecraftを動かす前に、Raspbianの初期設定を行います。インストール直後の状態ではインターネットに接続もできませんし、表示言語も日本語でないうえキーボード設定も違うので文字入力もままなりません。

Raspbianにログイン

Raspbianには最初から「pi」ユーザーが登録されていますが、piユーザーは「一般ユーザー」でシステムに関する設定やサービスの停止起動を行うことができません。OSの設定を行う場合は「root」ユーザーにスイッチします。rootユーザーとはそのOSのあらゆる操作を行うことができる「管理者ユーザー」です。
ここではpiユーザーでログインしたのちrootユーザーにスイッチしています。

ログインプロンプト(login:)の後に初期ユーザー名「pi」を入力しEnterキーを押します。

password:と表示されたら、piユーザーの初期パスワード「raspberry」を入力します。パスワードは入力しても文字は表示されません。表示されない!と思って何度も入力しないよう注意してください。

★より後は説明なので、入力しないでください。これ以降も同様です。
rootユーザーにスイッチします。

piユーザーにログインした直後の場合、パスワードの入力を求められない場合があります。

$や#は「プロンプト」といって、入力可能を意味する記号です。自分で入力するものではないので注意してください。
raspi-configによる設定

raspbianにはOSを設定するためのraspi-configが付属していますので、それを利用してOSの初期設定を行います。

raspi-configと入力してEnterを押します。

以下の画面が開きます。

基本的な操作方法は、矢印上下キー(↓↑)でカーソル移動、Tabキーでカーソルジャンプ、スペースで選択、Enterで決定です。

WiFi設定

「2 Network Options」にカーソルを合わせて決定
「N2 Wi-fi」にカーソルを合わせて決定
「JP Japan」にカーソルを合わせて決定
「Wi-fi country set to JP」と表示されるので<Ok>
SSIDを入力して<Ok>
パスフレーズを入力して<Ok>

※SSIDとパスフレーズはお使いのWiFiルーターを確認してください。有線LANで接続する場合はこの設定は不要です。

タイムゾーン設定

「4 Localisation Options」にカーソルを合わせて決定
「I2 Change Timezone」にカーソルを合わせて決定
「Asia」にカーソルを合わせて決定
「Tokyo」にカーソルを合わせて決定

キーボード設定

「4 Localisation Options」にカーソルを合わせて決定
「I3 Change Keyboard Layout」にカーソルを合わせて決定
「Generic 105-Key(Intel) PC」にカーソルを合わせて決定
「Other」で決定
「Japanese」にカーソルを合わせて決定
「Japanese – Japanese(OADG 109A)」にカーソルを合わせて決定
「The default for the keyboard layout」にカーソルを合わせて決定
「No compose key」にカーソルを合わせて決定

SSHサーバーの有効化

「5 Interfacing Options」にカーソルを合わせて決定
「P2 SSH」にカーソルを合わせて決定
「Would you like the SSH server to be enabled?」と表示されるので<Yes>にカーソルを合わせて決定
「The SSH server is enabled」と表示されるので<Ok>

終了

最後に<Finish>にカーソルを合わせて決定

「Would you like to reboot now?」と表示された場合は<Yes>で再起動します。
再起動が完了しログインプロンプトが表示されたら、再度piユーザーでログインします。

過去のRaspbianではファイルシステムのサイズがイメージファイルのサイズと同じになっており、raspi-configを使ってSDカードの最大容量まで拡張する操作が必要でしたが、現在は初回OS起動時に自動拡張されるため不要になりました。
IPアドレスの決定

Raspbianをネットワークに接続するためのIPアドレスを決めます。分かる方は「D.IPアドレスの設定」まで読み飛ばしてください。この項はWindows PCでの操作です。お使いのPCとRaspberry PiにローカルIPアドレスを設定する想定で記載させて頂きます。

スタートボタンから「Windows システム ツール」→「コマンド プロンプト」を開きます。
以下のコマンドを実行します。

有線でネットワークに接続している場合(PCにLANケーブルが繋がっている場合)は「ローカル エリア接続」を、無線LAN(WiFi)で
ネットワークに接続している場合は「Wi-Fi」と書かれている項目を探します。見つかったら、「IPv4 アドレス」「サブネット マスク」「デフォルト ゲートウェイ」「DNS サーバー」の値をメモしておきます。

※この画像はWiFiの場合の例です。

「IPv4アドレス」が以下のいずれかの範囲にあることを確認します。これらは「ローカルIPアドレス(プライベートIPアドレス)」と呼ばれ、企業内や家庭内など、その名の通り「ローカルな」環境で使われるIPアドレスです。これ以外の値の場合は、確認する場所が間違えているか、グローバルIPアドレスを使用しているかです。

192.168.*.*
172.16.*.*~172.32.*.*
10.*.*.*
※「*」は0~255の数字が入ります。

PCのIPv4アドレスを確認できたら、そこからRaspberry PiのIPアドレスを決めます。

PCのIPv4アドレスは3つの「.」で区切られていますので、一番右の数値を変えてRaspberry PiのIPアドレスにします。
例えばPCのIPアドレスが192.168.0.10だった場合、192.168.0.110にするなどです。あまり近い数値だとDHCPで自動設定される範囲に入ってしまう可能性が高いので、ある程度離した値にすることをお勧めします。

いったん決めたら、以下のコマンドを実行します。

IPアドレスは同じネットワーク内(家庭内)で重複することはできませんので、同じIPアドレスを持った機器(PC、スマホ、プリンタなど)がないかを確認しています。以下のように表示される場合は問題ありません。

実行したときに、以下のように表示された場合は、そのIPアドレスの機器が存在するので、他のIPアドレスに変えて再度pingを実行してください。

IPアドレスの設定

家庭内でDHCPサーバーが稼働している場合は自動的にIPアドレスが設定されていると思いますが、サーバーとして稼働させるためにはIPアドレスを固定しておいた方がよいです。IPアドレスはdhcpcd.confファイルで設定します。ここからはRaspbian上での操作です。

dhcpcd.confを開く。

Raspbianではデフォルトのエディタがnanoのようなので、nanoで開いていますが、viでもかまいません。nanoの使い方はこちらが分かりやすいです。
設定ファイルの中に以下の内容を追記します。

#でコメントアウトされた同様の記述があるので、#を外して編集すると楽です。

各値の決め方は以下の通りです。

インターフェース名 WiFiで接続する場合は「wlan0」、有線LANで接続する場合は「eth0」
IPアドレス Rapspberry Piに設定する固定IPv4アドレス
プレフィックス長 サブネットマスクが255.255.255.0なら「24」、それ以外の場合はこちらの早見表で確認
デフォルトゲートウェイ インターネットに抜けるゲートウェイになるルーターのIPアドレス。LANに接続しているPCと同じ値にする。
DNSサーバー 名前解決を行うDNSサーバーのIPアドレス。複数ある場合は半角スペースで区切って記述する。

編集できたら、Ctrl + Oで保存し、Ctrl + Xで終了します。
設定を反映するため、OSを再起動します。

piユーザーでログインしたのち、ネットワークが設定できたことを確認します。

下記のように表示されれば問題ありません。1秒間隔で出力され続けるので、Ctrl + Cを押して止めてください。

※「*」にはFQDNまたはIPアドレスが入ります。

pingは相手との通信相手との疎通を確認するコマンドです。
「ping <IPアドレス>」がうまくいったら、Raspbianのネットワーク設定は問題ありません。
「ping <デフォルトゲートウェイ>」がうまくいったら、デフォルトゲートウェイと通信できています。デフォルトゲートウェイに接続できていれば、大抵の場合家庭内の他の機器とも通信できます。
「ping www.fukushimaya.xyz」は本サイトへのpingです。宛先をgoogleやyahooにしてもかまいません。これができれば、インターネットへ接続できていること、DNSの設定に問題がないことが分かります。

TeraTermでの接続

ネットワークの設定ができたらPCからリモート操作(遠隔操作)ができるようになります。リモート操作を行うには「ターミナルソフトウェア」が必要です。特にこだわりがなければ定番の「TeraTerm」を使いましょう。

こちらのサイトを開き「ダウンロードファイル一覧」をクリックします。
最新バージョンの「teraterm-x.xxx.exe」をダウンロードします。x部分にはバージョン番号が入ります。
ダウンロードした「teraterm-x.xxx.exe」を実行してインストールします。インストールウィザード中の選択肢の意味が分からない場合は、すべて変更せずに「次へ」で進めてください。
インストールできたら、TeraTermを起動します。
「ホスト」にRaspberry Piに設定したIPアドレスを入力して「OK」をクリックします。

初回接続時はセキュリティ警告が表示されます。「このホストをknown hostsリストに追加する」にチェックが入っていることを確認して「続行」をクリックします。この警告は2回目以降の接続では表示されません。

piユーザーのユーザー名とパスワードを入力して「OK」をクリックするとログインできます。

次の作業のためrootユーザーにスイッチしておきます。

TeraTermで接続できたら、それ以降はモニターを外してもかまいません。
GPUメモリの縮小

Raspberry Piの少ないリソースを少しでもMinecraftサーバーに割り当てるため、GPUに割り当てるメモリを縮小します。デフォルトで64MBがGPUに割り当てられていますが、モニターをつなげてGUIで操作しない限りそこまでのサイズは不要なので、設定可能な最小サイズまで縮小し、その分をシステムで使用できるようにします。こちらを参考にさせて頂きました。

作業前のメモリ使用状況を確認してみます。この状態でTotalが927MBです。

config.txtファイルを開きます。

ファイルの末尾に以下の記述を追記し保存します。

設定を反映するためにOSを再起動します。

一旦TeraTermの接続が切れるので、再度TeraTermで接続しrootユーザーにスイッチします。
作業後のメモリ量を確認します。Totalが976MBに増えていることが確認できます。

Minecraftサーバーの構築

いよいよMinecraftサーバーの構築に入ります。こちらのサイトを参考にしました。

Javaのインストール
minecraftはJavaで動いていますので、動作に必要となるJRE(Java Runtime Environment:Java実行環境)をインストールします。

インストールされたことを確認するためにバージョンを表示します。エラーが出なければOKです。

JavaのVM(Virtual Machine)にはクライアントVMモードとサーバーVMモードがあり、サーバー用途で使う場合はプログラム実行速度が最大になる「サーバーVM」を使用することが望ましいです。上記の「OpenJDK Server VM」部分で、サーバーVMであることが分かるので、変更する必要はありません。
Minecraftサーバーのダウンロード
minecraftを稼働させるためのユーザーを作成し、パスワードを設定します。

「-d /home/minecraft」の部分が後々重要になってきますので、間違わないようにしてください。

作成したminecraftユーザーにスイッチします。

サーバーを保存するディレクトリ(Windowsでのフォルダ)を作成します。

minecraftのサーバーアプリケーションをダウンロードします。

Teratermとは別にブラウザを開き、Mojangの公式サイトに接続して画面右上のメニューをクリックします。

「トライアル&ダウンロード」をクリックします。

トライアル&ダウンロード画面を下の方までスクロールすると「MINECRAFT: JAVA EDITION サーバーソフトウェアをダウンロード」という項目がありますので、「ここから入手」ボタンをクリックします。

「minecraft_server.1.13.2.jar」右クリックしてリンクアドレスをコピーします。ブラウザがChromeなら「リンクのアドレスをコピー」、Edgeなら「リンクのコピー」です。

Teratermに戻り「wget」と入力してから半角スペースを入れ、右クリックしてサーバーのダウンロードアドレスを張り付けてEnterキーを押します。本稿執筆時点では以下のコマンドになります。

server.jarが存在することを確認します。

このままでは実行できないので、server.jarに実行権限を付与します。

特にインストーラーなどはありません。このserver.jarがサーバーとして動作します。

Minecraftサーバーの設定

Minecraftの動作設定を行います。

server.jarを実行します。この時にeura.txtファイル等が作成されます。

初回は起動できず「Stopping server」で終了します。

eura.txtファイルを編集します。このファイルはソフトウェアの使用許諾契約に同意するかを記載するファイルです。

ファイル内に記載されているURLを開くとMINECRAFT エンド ユーザー ライセンス条項が確認できますので、同意できるようならファイル中の「eula=false」を「eula=true」に変更して保存してください。ちなみに同意しないとサーバーは起動できません。Minecraftで遊んでいるならすでに同意しているはずなので「true」にしましょう。

これで起動させることができます。以下コマンドを実行してください。この初回起動時にMinecraftサーバーの動作に必要となるファイル・ディレクトリが作成されます。

「Done」と表示され、Minecraftサーバーが起動しました。定期的に「server overloaded」と表示されますが、おそらくCPU、メモリ性能が足りないためかと思います。このまま利用することもできますが、Ctrl + Cで停止させてください。

パフォーマンスに直結するMinecraftの設定を行います。

以下のパラメーターを変更します。

view-distance
表示できるチャンク数の最大値を狭くします。表示チャンク数はシングルプレイでもパフォーマンスに多大な影響を与えますが、サーバーでも同じのようです。
view-distance=10

view-distance=4

max-players
同時接続できるユーザー数を減らします。これは検証していませんので、しばらく稼働させてみて適切な値を決めようと思っています。
max-players=20

max-players=10

Minecraftサーバーのサービス化

上記の方法ではserver.jarを起動したコンソール(TeraTerm)を開き続けていないと使用できません。Raspbian起動時に、コンソール接続なしで自動的に起動させる設定(サービス化)を行います。Raspbianを含む多くのLinuxディストリビューションでは、systemdでサービスを管理していますので、server.jarをそれに登録します。

minecraftユーザーにスイッチしている場合は、rootに戻ります。

UNITファイルを新規作成します。

以下の内容を入力して保存します。内容はこちらを参考にしました。

javaの起動オプションである-Xmsおよび-Xmxには900Mを指定しています。これは「3.F.GPUメモリの縮小」により確保したTotalメモリ領域976MBから、Minecraft起動前のメモリ使用量33MBと、JavaのMetaspace量39MB(jstatで確認)を差し引き、若干の余裕を持たせた値です。
(976 – 33 – 39 = 904MB)
systemdをリロードして、UNITファイルの追加を反映します。

minecraftをサービスとして登録します。

minecraftサービスを起動します。

minecraftサービスの状態を確認します。

「Active:」に「active (running)」と記載されていれば、起動に成功しています。

javaコマンドで起動した場合に出力されていたメッセージは「logs/」ディレクトリ内にログファイルとして出力されています。latest.logが最新のログなので、確認してみましょう。

止めるときはCtrl + Cキーを押してください。

OS起動時に自動的にminecraftサーバーが起動していることを確認するため、再起動します。

再度Teratermを起動し、piユーザーでログインします。
スタータスを表示し「 active (running) 」になっていることを確認します。

MinecraftサーバーにPCから接続する
Minecraft Launcherより、サーバーと同じバージョンのMinecraft Java Editionを起動します。

起動したらマルチプレイをクリックします。

「サーバーを追加」をクリックします。

以下の情報を入力して「完了」をクリックします。

サーバー名:任意の名前
サーバーアドレス:Raspberry PiのIPアドレス

サーバーが追加されました。右三角ボタンをクリックして接続します。

接続中…

接続できました!

動作について

動作を確認してみたところ、チャンクを生成している際に動きがカクついたり、フリーズしてしまうことがあります。また、モブを攻撃した際の動ぎがカクカクしていることがあります。それらを除けば特に問題はありませんでした。おそらくサバイバルモードで普通に遊ぶ範囲であれば大丈夫です。クリエイティブモードで空を飛んで、高速で移動するような操作は難しいでしょう。

ワールドの様子はシングルプレイと特に変わりません。村も生成されています。表示距離を短くしているので、遠くの景色は見えません。

村人もいます。

性能の低いPCではOFFにした方がよい葉の透過(設定の「グラフィックス:描画優先」)は特に変更していませんが、動作に影響しているように見えません。おそらくクライアント側で処理されており、サーバーの性能とは関係ないようです。
チャンクの生成と、同時に動くモブ数およびプレーヤー数がサーバー側の性能に依存すると考えています。未検証ですが。

動画です。すでに生成されたチャンク内を移動しているので、滑らかに動きます。

電気代について

minecraftを稼働させた状態のRasbperry Piの使用電力を計測したところ、30日稼働させておよそ2kWhでした。
東京電力の電気料金一覧を参考に1kWhあたり26円とすると、1か月稼働させて発生する電気代は52円です。サーバーを稼働させる電気代と考えると、かなり安いです。

最後に

いかがでしたでしょうか?Raspberry Pi 3 B+とRaspbianの組み合わせであればほぼ間違いなく再現できるはずです。
試験的に今回構築したサーバーを公開しています。サバイバルモードで特に制限はかけていませんので、以下のFQDNに接続して遊んでみてください。
www.fukushimaya.xyz
何か問題がありましたらコメントしていただければ、(可能な範囲で)対応します!

最後までご覧いただきありがとうございました。よろしければ広告もご覧ください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*