【簡単】LinuxでマイクラJava版サーバーを構築する全手順

はじめに

マインクラフトというゲームは、不朽の名作として長らく知られています。もちろん一人でサバイバルで遊んでも楽しいのですが、この種のゲームは、他の人と協力しながらプレイするのもまた一興。マイクラのマルチプレイという遊び方は、一つのプレイスタイルとして今や確立されたものといえましょう。

Character
みんなでマイクラを遊べたらかなり楽しいですよ~

一方で、このマルチプレイですが、初心者が行おうとすると一定の技術的ハードルがあるのもまた事実。特に、その方法については一定のコマンドや専門的な知識が必要で、誰もが感覚的にできるかというと、そうとも言い難いのが現状です。

そこで今回は、LinuxというOSにおいてマイクラJava版サーバーを構築する方法を体系的に示していきます。これを一通り読めば、とりあえずマイクラサーバーが構築できる状態となることを目指します。

前提

なお、マイクラサーバーの構築は、必ずしもマルチプレイにおいて必須というわけではありません。特に同じ家庭内など、ローカルでマルチプレイをする場合には、単にマイクラに備わっている設定である「LANに公開」を選択することで完了します。詳細については以下の記事で解説しています:

以下では、ローカルではなく完全に遠隔でマルチプレイを行うことを前提とします。

準備するもの

ここでは、マイクラサーバーを構築するための方法を示していきますが、そもそもとして構築にあたっては、サーバーとなるための機器が必要です。そこそこのスペックがある不要なPCというのがよく使われると思いますが、もしそれがない場合には、ラズパイ(ラズベリーパイ)といった安価な超小型シングルボードコンピュータ、または比較的安価なミニPCを使うといった方法が考えられます。

Character
特に「N100」は、値段の割にスペックが高く、コスパがいいミニPCとして有名ですよね

そうしたPCの類がない場合は、レンタルサーバーを使うという手もあります。PCを自分で持たない代わりに、そのリソースをレンタルしてサーバーを運用するやり方であり、初期費用や電気代が不要・新規のIPアドレスを持てるという利点があります。これについては本記事の本題ではないのでここでは割愛しますが、以下の記事で詳細に解説しています:

以下では、サーバーを動かすPCなどを前提に説明を行います。

サーバーとは?

サーバーという言葉はよく耳にします。ここでも何気なくサーバーという言葉を使っていますが、その意味や種類にはどういったものがあるのでしょうか。

サーバーというのは、複数のプレイヤーが同じワールドに同時に接続し、リアルタイムで一緒に遊ぶための仕組み、またはその基盤となるコンピューターのことです。

通常のシングルプレイでは、自分のパソコンやスマートフォン、またはゲーム機の中でワールドを動かしていますが、マルチプレイではサーバーがその役割を集中して担います。

サーバーの役割としては、主に以下が挙げられます。

ワールドデータの管理
ブロックの破壊や設置、アイテムの移動、時間の経過などを記録し、参加者全員の画面に正しく同期する
プレイヤーの位置情報の処理
「誰がどこにいて、どちらを向いているか」を計算し、他のプレイヤーの画面にリアルタイムで反映させる
モブや自然現象の制御
ゾンビやクリーパーなどの敵、牛や豚などの動物の動き、天候の変化や作物の成長などを一括で処理する
Character
色々ありますが、自分のPCでやっていたようなことをサーバーが肩代わりするようなイメージですね

サーバーを導入することで、上記の役割によりゲーム機側の動作が軽くなるといったメリットが見込めるほか、ホストが不在であってもサーバーが動いている限り24時間稼働し続けることができます。後者のメリットは絶大で、正直、サーバーを構築する理由のほとんどがこれに集約されるのではないでしょうか。

早速、サーバーを作っていきましょう。

SSH接続

まずは、サーバーの中に入って操作できるようにします。これを、「SSH接続」といいます。そのためには、SSHを構築しなければなりません。これは、手元のメインPCから、ディスプレイやキーボードが繋がっていないラズパイやミニPC(サーバー側)にネットワーク経由でログインし、コマンド操作を行うための仕組みです。まずは手元の作業用PCでコマンドプロンプトまたはPowershellを開きましょう。

Character
Windowsの場合、タスクバーの「検索」欄に「cmd」などと入力すれば起動できます

続いて、以下のコマンドを実行します:

Copied!
ssh-keygen

何か聞かれた場合、エンターキーを押下してください。

これを実行すると、秘密鍵と暗号鍵の2つがC:\User\(UserName)\.sshなどに生成されます。

公開鍵
サーバー側に保存するファイル。.pubといった拡張子がある。
秘密鍵
その名の通り、手元のPCに厳重に保管するファイル。.pemまたは拡張子なしの鍵ファイル。

このうち、公開鍵のテキストを、ラズパイやミニPC(サーバー側)内の指定された場所(~/.ssh/authorized_keys というファイル)に書き込みましょう。手元のPCにある秘密鍵と、サーバーにある公開鍵がペアとして合致したときのみ、安全にログインできるようになります。

  • ~/.ssh/authorized_keysがない場合、新規にファイルを作成してください

セキュリティ設定

続いて、サーバー側のセキュリティを設定するため、以下のコマンドをサーバー側で実行しましょう。

まずは、.sshディレクトリを所有者だけが読み書き・実行できる設定にしておきます:

Copied!
chmod 700 ~/.ssh

続いて、公開鍵を読み込むファイルであるauthorized_keysを所有者だけが読み書きできる設定にしておきます:

Copied!
chmod 600 ~/.ssh/authorized_keys
  • セキュリティ上の仕様により、これらの設定は必須です

接続

さて、先ほど準備した秘密鍵が、C:\Users\ユーザー名\.ssh フォルダなど分かりやすい場所にあることを確認出来たら、続いて接続を行っていきます。

ここで接続に当たっては、IPアドレスの確認が必要になります。接続先(サーバー側)のPCで、以下のコマンドを実行しましょう:

Copied!
ip address
Character
Windowsの場合、”ipconfig”で確認できます

表示されるテキストのうち、ens3の「inet 162.○○.○○.○○」などと書かれていたら、この部分(162.~~)がIPアドレスです。スラッシュ以降は無視して構いません。

さて、ここまで実行すれば、準備が整いました。次に接続を行っていきます。以下のコマンドを、手元の作業用PCで実行しましょう:

Copied!
ssh -i "【鍵ファイルの場所】" 【接続先ユーザー名】@【サーバーのIPアドレス】

例えばpemファイルが「C:\Users\taro\.ssh\key.pem」にあって、接続先サーバーのユーザー名が「taro」、IPアドレスが「123.45.67.89」である場合には「ssh -i “C:\Users\taro\.ssh\key.pem” taro@123.45.67.89」となりますね。

「Are you sure…?」と聞かれたら yes と入力してEnterを入力しましょう。

これらが完了すると、「【ユーザー名】@…:~#」と表示されるはずです。こうなれば成功です!

  • 次回以降も同様に、sshコマンドで接続を行うことになります

サーバーの準備

続いて、以下のコマンドを1行ずつコピーして、黒い画面に貼り付けをし、Enterで実行してください。Windowsの場合は「Ctrl+V」で貼り付けられます。

まずは、サーバーの中身を最新の状態にアップデートします:

Copied!
sudo apt update

続いて、後述する操作で必須となる各種ツールをインストールします:

Copied!
sudo apt install -y wget screen nano
Character
特にwgetやscreenは必須です

さらに、サーバー内部のセキュリティ設定を行います。SSH(遠隔操作)とマイクラ(Java版のポート番号:25565)だけを通すようにしましょう:

Copied!
sudo ufw allow 25565
ufw allow ssh
ufw enable

Javaのインストール

ご存じの通り、マインクラフトJava版はJavaというプログラムで動いています。サーバーも同様です。そのため、サーバーの中にJavaをインストールする必要があります。

遊ぶバージョンによって必要なJavaの種類が異なりますが、現在の主流であるバージョン1.17以降(1.20.1など)で遊ぶ場合は「Java 17」が必要です。

以下のコマンドを使ってインストールしましょう。

Copied!
sudo apt install openjdk-17-jre-headless -y

これを実行し、以下のコマンドで無事にjavaがインストールされているかどうかを確認できます:

Copied!
java -version

このように、バージョンの情報が表示されれば成功です!

1.16.5以前の古いバージョンで遊びたい場合は「Java 8」が必要になるので注意してください。

Java版サーバーのインストール

さらに、これらが完了したら今回の本題、Java版サーバーの構築を行っていきます。

通常のMODを入れたことのある方ならご存じだとは思いますが、MODの導入に際しては「Forge」や「Fabric」といったMODローダーが必須です。今回は、利用者が多いForgeを用いた導入方法を解説していきます。

まずは、サーバー用のフォルダを作って移動しましょう。VPS上の任意の場所に、「minecraft」という名前(※この名前は何でもいいです)のフォルダを作成します:

Copied!
mkdir minecraft

このフォルダ内に移動しましょう:

Copied!
cd minecraft

次に、Forgeの公式サイトからインストーラーをダウンロードしてくるのですが、ここで少しコツが入ります。まず、以下のForgeの公式サイトにアクセスしましょう:

どれを選んでも良いのですが、ここでは対応しているMODが多いバージョンを選んでおくことをおススメします。個人的おススメは1.20.1です。

Character
大体1.20.1、そうでなければ1.12.2で遊んでいる人が多いように思います

バージョンを選んだら、「Installer」というボタンをクリック。

すると広告ページに飛ばされますが、慌てて変なところをクリックしてはいけません。画面の右上に数秒カウントダウンが出た後、「SKIP」というボタンが現れるので、そこを右クリックして、「リンクのアドレスをコピー」を選択します。

Character
画面中央は広告です。間違えてクリックしないように..

コピーできたら、コマンドの画面に戻って wget コマンドで直接ダウンロードします。【コピーしたURL】の部分を、先ほどコピーしたものに書き換えてください

Copied!
wget 【コピーしたURL】

例えば、1.20.1のforgeを入れる場合は以下のようになります(※これは例です)。よく分からない場合はこれを直接実行することで1.20.1のforgeを入れられます:

Copied!
wget https://maven.minecraftforge.net/net/minecraftforge/forge/1.20.1-47.2.0/forge-1.20.1-47.2.0-installer.jar

その後、このjarファイルを展開します。【インストールしたjarファイル名】の部分を、置き換えてください:

Copied!
java -jar 【インストールしたjarファイル名】 --installServer

例えば1.20.1の場合は以下のようになります。よく分からない場合はこれを実行しましょう:

Copied!
java -jar forge-1.20.1-47.2.0-installer.jar --installServer

メモリの設定

サーバーファイルを生成したら、そのまま起動するのではなく、メモリの設定を行うのがForgeサーバーの定石です。MODサーバーはメモリを大量に消費するため、ここでしっかりと割り当てておかないとすぐに動作が重くなってしまいます(1敗)。

Character
4GBのメモリで30個MOD入れようとした私が通りますよ

メモリ設定用のファイル user_jvm_args.txt を編集します:

Copied!
nano user_jvm_args.txt

編集画面が開くので、中身をすべて消して以下の内容に書き換えてください。ただし、数値(6G)は契約しているVPSのプランに合わせて調整してください:

Copied!
-Xmx6G
-Xms6G
Character
自分の契約しているメモリサイズより若干小さいサイズを指定するといいと思います

書き換えが終わったら、Ctrl + X を押し、保存するか聞かれるので Y を押し、最後に Enter を押して保存します。

次に、サーバーを起動するためのスクリプト、「start.sh」を作成します:

Copied!
nano start.sh

shファイルの中身は以下のようにします:

Copied!
./run.sh nogui

同様に Ctrl + XYEnter で保存してください。最後に、このスクリプトを実行できるように権限を与えます:

Copied!
chmod +x start.sh

これで起動環境が整いました!


利用規約の同意

ここで、一度サーバーを試しに実行してみます。以下を実行しましょう:

Copied!
./start.sh

おそらくサーバーがすぐに停止すると思います。これは利用規約(EULA)に同意していないためです。生成された eula.txt を編集して同意しましょう:

Copied!
nano eula.txt

ここで中にある eula=false という部分を eula=true に書き換えて保存します:

これで準備が整いました。もう一度以下のコマンドを実行することで、無事サーバーが起動するはずです:

Copied!
./start.sh

次回以降も、このファイルがあるフォルダに移動(cd ./minecraftなど)し、このコマンドを実行することで起動できます。後述するscreenという方法を使うとVPSとの接続を切ってもサーバーが止まらないようにできます。

サーバーの確認

この状態で、正常にサーバーに入れるかどうかを確認してみましょう。まず、Minecraft(Java版)を起動し、「マルチプレイ」を押します:

続いて、「サーバーを追加」を押します:

最後に、サーバー名を任意の名前に設定してサーバーアドレスを入力します。これは、先ほど確認したサーバーのIPアドレス(162.~~)です。

Character
ここでは説明を割愛しますが、ドメインを持っている場合、DNS設定というものを使えば任意の名前のアドレスにできます

これで「完了」を押し、追加されたサーバーをクリックし、無事入ることができればOKです。次回以降も、今回と同様にsshで接続後、cdコマンドでマインクラフトのフォルダに移動し、./start.shを実行することで起動できます。

サーバーの常時起動設定

最後に、VPSとの接続を切ってもサーバーが止まらないようにするコマンド、screenを使います。これは先ほどインストールしているはずです。

まず、新しい仮想画面を作ります。名前は何でも良いですが、ここでは分かりやすく mc としておきました。

Copied!
screen -S mc

その中でサーバー起動スクリプトを実行します:

Copied!
./start.sh

しばらく待機すればサーバー起動が成功するはずです。ここでキーボードの Ctrl + A を押し、指を離してから D を押してください。これで元の画面に戻ることができます。

これでSSH接続を切っても、マインクラフトは常時稼働し続けます。もしサーバーの様子を見たくなったら、以下のコマンドで再接続できます:

Copied!
screen -r mc
Character
ちなみにこの手法はマイクラに限らず、VPS触ると様々なところで使います

IPアドレス問題

さて、ここでは不要なPCやラズパイ等を用いてLinux環境でのマイクラサーバーを構築する方法について解説しました。ここでは上記の通り、接続にあたってIPアドレスが必要になります。このIPアドレスですが、親しい人の間で共有する分には何ら問題はありませんが、不特定多数が参加する大規模サーバーを構築する場合、その管理や漏洩に関して大きな問題になります。

Character
基本的にIPアドレスを不特定多数に公開してはいけません

この意味で大規模なサーバーを構築する場合、IPアドレスそのものを新規に作成できるレンタルサーバーに軍配が上がります。

さらに電気代や機器代まで削減できるという点で、レンタルサーバーは侮ることができません。実際、以下に示す通り普通に自宅PCで24時間稼働させるより安価でサーバーを運用できる点は大きな魅力です。

項目 自宅PC
(100W稼働)
シンVPS
(12ヶ月)
シンVPS
(36ヶ月)
月額 約2,232円 1,200円 980円
年間 26,784円 14,400円 11,760円
差額
(年間)
基準
(高い)
+1.2万円
お得
+1.5万円
超お得

※電気代単価: 31円/kWh (24時間稼働で試算)

★当サイト限定:上記価格からさらに初回10%OFF

Character
自宅PCの場合、これ以外にもPCパーツの寿命やセキュリティ関係のリスクなども考慮しなければいけません

この辺りの事情については、以下の記事が詳しいです:

最新情報をチェックしよう!