CLOUD NAVIクラウドとは?からクラウドを支える技術や関連用語まで解説

FJcloud実践

FJcloud-VでMinecraftサーバーを構築する方法~基礎編~

0000年00月00日

この記事は、自宅に設置したオンプレサーバーでMinecraftサーバーを運用している著者が、FJcloud-V上でMinecraftサーバーを作り、その負荷検証を行うまでの記録です。

自宅サーバー

まず、自宅サーバーのスペックとインストールされているサーバーについて説明します。

もともと友人が運用していたサーバーなのですが、友人が引っ越すタイミングでサーバー運用を継続することが難しくなり、僕の方で引き取りました。
なので初期構築はしていません。
やっていることとしては、適宜バージョンアップをしたり、落ちたときに都度再起動をかけていることくらいです。

スペック

自宅サーバーのスペックは以下です。

  • CPU:Core i7(第3世代)
  • メモリ:8GB
  • GPU:オンボード
  • ストレージ:1TB(HDD)

Mackerelでモニタリングもしているのですが(特に自動で再起動させるジョブとかは仕込んでいません。なぜならやり方が分からなかったから)、ログを見ているとどうもメモリがいっぱいになって落ちてるので、メモリ不足なんだと思います。

そして、OSとしてUbuntu Desktop(黒い画面だけで解決させられる気がしなかったので……)をインストールし、SpigotMCサーバーを稼働させています。
時折過負荷でダウンしてしまいますが、その都度再起動をすることで対処しています。
噂によるとPaperMCという種類のサーバーは非常に軽量らしいので、今回はそちらをインストールしていこうかなと思います。

作業環境

  • Macを使っています。
  • terminal.app(Mac純正のターミナル)を使って作業します。

サーバー構築

では、サーバーを構築して行きたいと思います!

ログイン

ログイン画面はこちらとなります。

IDとパスワードを入力する画面があるだけのシンプル構成。
結構ログインに手間取るサービスって多いと思うんですが、FJcloud-Vはログインに悩むことはないと思います。

ちなみに、ログイン後は管理画面に遷移します。

管理画面のトップページには、各サービスの稼働状況が一覧で表示されています。
繋がらないぞ……!?というときは、まず管理画面にログインすれば障害状況が見えるのは良いですね。

セキュリティ周りの設定

最初にサーバーを操作するために必要となるSSHキーや不正なアクセスからサーバーを保護するために必要となるファイアウォールの設定を行います。

まずは、ファイアウォールの設定から始めます。
管理画面左上のマークをクリックすると出てくるメニューの中から「コンピューティング」をクリックします。

次に、左部メニューのファイアウォールをクリックします。

上部の「+ファイアウォールグループ作成」をクリックします。

四角で囲んだ部分を入力/選択します。

次に、INルールの設定に移ります。
Minecraftサーバーとしてクライアントと通信をするために必要となる25565ポートとSSH接続をする際に必要となる22ポートを開けておきます。

OUTルール/サーバー選択/ルーター選択/拠点間VPNGWはそのままで大丈夫です。
最後に確認の部分で問題ないことを確認し、「作成する」をクリックします。

これでファイアウォールの設定は完了です。

次に、SSHキーの設定に移ります。
左部メニューのSSHキーをクリックします。

次に、「+SSHキー作成」をクリックします。

SSHキー名/パスフレーズ/メモ(任意)を入力します。
パスフレーズは忘れないように控えておきましょう。
入力後、「作成する」をクリックしてください。

作成後、「SSHキー名_private.pem」という名前で秘密鍵がダウンロードされます。
後で使うので、削除しないよう大切に保管してください。
(ちなみに最初Safariでやって上手くいかなかったので、別のブラウザーがよさそうです)
SSHキーについてはこちらにわかりやすくまとまっているので、仕組みが知りたい方はこちらをご覧ください。

サーバー作成

次に、サーバーの作成に移行します。
管理画面左上のマークをクリックすると出てくるメニューの中から「コンピューティング」をクリックします。

そうすると現在稼働しているサーバーの一覧が表示されますので、左上の「+サーバー作成」をクリックします。

するとポップアップが出てきて、どのようなサーバーを構築するかを聞かるんですが、僕はubuntuしか触ったことがないので今回もubuntuで行こうと思います。
というわけで、上部の検索窓に「ubuntu」と入力して、「Ubuntu Server 22.04 LTS」を選択します。
ちなみにLTSとはLong Term Supportの略で、長い期間サポートを継続してくれる、いわば安定版のようなものです。特別な事情がなければLTSにしておけば良いと思います。

次にゾーンとタイプの選択に遷移します。ちなみにゾーン別機能対応表を見ればわかりますが、選択肢に出てくるeast-11, 12, 13, 14は全て東日本のリージョンです。今回はeast-11を選択しました。
リージョンやゾーンについて詳しく知りたい方はこちらをご参照ください。
サーバーのタイプですが、今回はc-medium8を選択しました。

次に、サーバーの情報や料金プラン、ネットワークなどを聞かれるので入力していきます。
※料金プランは長期利用が想定される場合は月額、短期的な利用の場合は従量のほうがお得です。
その際、SSHキーとファイアウォールの部分は先ほど作成したものを選択してください。
また、ネットワークのグローバルの部分のIPアドレスは「自動割り当て」にしておきましょう。
入力が完了の後、確認画面を経てサーバーを作成してください。

作成したサーバーが一覧に表示され、ステータスの部分が処理中からオンラインに変わったら作成は完了です。

サーバーログインからインストールまで

サーバー作成が完了したので、作成したサーバーにログインし、Minecraftのインストールへ進んでいきます。

秘密鍵の設置

ユーザーホームディレクトリ(\~/)に.sshというディレクトリを作成します。

秘密鍵を配置する用のディレクトリです。

% mkdir ~/.ssh

作成したディレクトリに、秘密鍵を移動させます。

% mv ~/Downloads/秘密鍵.pem ~/.ssh/秘密鍵.pem

※先ほど作成したディレクトリ「.ssh」に移動するように指定してください。

パーミッションの変更

.sshディレクトリの権限を変更します。

% chmod 700 ~/.ssh

証明書ファイルのパーミッションを変更します。

% chmod 600 ~/.ssh/証明書.pem

接続

証明書の設定ができたところで、サーバーに接続します。

% ssh -l root -p 22 -i ~/.ssh/秘密鍵.pem ホスト名

初回はフィンガープリントの確認が表示されるため、yesを入力します。

また、パスフレーズを聞かれるため、入力します。

OpenJDKのインストール

これからインストールするMinecraftサーバーはJavaで稼働します。

そのため、Javaの実行環境であるOpenJDKをインストールします。

% sudo apt update
% sudo apt install -y openjdk-17-jdk

インストールが完了したら、バージョン確認コマンドを実行し、インストールされていることを確認します。

% java --version

OpenJDKのバージョンが表示されたらインストール完了です。

PaperMCのダウンロード

こちらから、PaperMCのダウンロードリンクをコピーします。

現時点での最新URLは https://api.papermc.io/v2/projects/paper/versions/1.19.4/builds/546/downloads/paper-1.19.4-546.jar となります。

次に、/rootの上に/minecraftというディレクトリを作成し、その中にPaperMCをダウンロードします。

% mkdir /root/minecraft
% cd /root/minecraft

ダウンロードが完了したら、lsコマンドでファイルがダウンロードできていることを確認してください。

% ls

PaperMCの実行/EULAの同意

いよいよ、サーバーを起動したいと思います。

% java -Xms7000M -Xmx7000M -jar paper-1.19.4-546.jar

そうすると、「You need to agree to the EULA in order to run the server. Go to eula.txt for more info.」というメッセージが表示され、起動に失敗すると思います。

これはEULA(End User License Agreement)といって、利用規約に同意する必要があるということを指しています。

再度lsコマンドを入力すると、eula.txtというテキストファイルが作成されていると思いますので、そちらを編集し、利用規約に同意します。

% ls
% vi eula.txt

vi(テキストエディタ)が起動しますので、iを押して挿入モードに切り替えた後、3行目のeula\=falseの部分をeula\=trueに書き換えて、Esc→:wq→Enterで上書き保存します。

上書き保存が完了した後、再度サーバーを起動します。

% java -Xms7000M -Xmx7000M -jar paper-1.19.4-546.jar

これで起動完了です。

グローバルIPをMinicraftソフトのサーバーアドレスに入力するとMinecraftサーバーにログインすることができるようになります。

負荷検証

では、早速構築したサーバーで遊んでいきたいと思うんですが、折角なら、どの程度の負荷に耐えることができるのか、検証をして行きたいと思います。

というわけで、これまで数多のMinecraftサーバーに負荷をかけてきた有識者Aさんにご協力いただき、かけられるだけの負荷をかけていただきました。

効率的に負荷をかけてもらうために、Aさんに管理者権限を渡しました。

SSHした後、minecraftディレクトリにops.txtを作成し、管理者権限を渡したい人のユーザー名を記入し、プロセスを再起動します。

% vi /root/minecraft/ops.txt

テキストファイルにAさんのユーザー名を入力した後、

:wq

でテキストエディタを終了し、サーバーを再度起動することで、管理者権限を渡すことができます。

というわけで、検証をしていただきました。

第一ラウンド:村人大量出現

同一座標に大量に村人を設置することで、村人同士の接触が高速に行われ、どの程度負荷を与えることができるかを検証いただきました。

結果、なんの問題もなく処理を継続しました。

勝者:FJcloud-V!

第二ラウンド:ニワトリ大量出現

村人に次いで、ニワトリを大量設置しました。

ニワトリは、消滅時に鶏肉などをドロップする影響で、若干村人よりも処理が重くなることが予想されます。

結果、変わらず問題なく処理されました。

勝者:FJcloud-V!

第三ラウンド:ボート大量密集

ボートを一箇所に大量密集させた後に開放することで、ボート同士が瞬時に大量にぶつかり、高負荷を与えることができます。

結果、こちらも難なく処理。

勝者:FJcloud-V!

第四ラウンド:ネザー/オーバーワールド高速往復

ネザーゲートを設置し、ネザーとオーバーワールド間を高速往復することにより、負荷を与えようとしていただきました。

しかし、ネザーに移動した際の描画があまりにも高速で、検証にならず、FJcloud-Vの不戦勝。

勝者:FJcloud-V!

第五ラウンド:スカルクセンサー大量同時反応

音に反応して処理を行われるスカルクセンサーを大量に平面に設置し、その上に音符ブロックを設置することで、大量のスカルクセンサーを反応させ、負荷向上を狙いました。

しかし、こちらも難なく処理。

勝者:FJcloud-V!

第六ラウンド:オーバーワールド高速移動

エンダードラゴンを討伐後、エンドで手に入れることができるエリトラという高速移動に使用する装備を用い、オーバーワールド内を高速で移動することで、大量のマップを同時に生成させ、負荷向上を狙いました。

こちら、カクつくものの特に落ちることはありませんでした。負荷が一定以上になる前に処理を止めている印象を受けました。

勝者:FJcloud-V!(?)

第七ラウンド:松明大量設置

松明を大量に並べることで、光の処理を大量に行わせ、負荷向上を狙いました。

結果、しばらくして処理が耐えられなくなったのか、サーバーがダウンしました。

勝者:Aさん!

まとめ

というわけで、サーバー構築し、負荷検証として段階ごとに処理を重くしていってもらったのですが、6段階耐えることができました。

Aさんいわく、普通に遊ぶ分には一切問題にならないレベルとのことで、特にネザーなどのワールド間を移動する際の描画の速度がとても速いとのことでした。

カタログ上、現在運用している近いスペックの物理サーバーよりやや負荷に強い印象といった形だそうです。

これまで、ゼロからMinecraftサーバーを構築したことはなかったので、OpenJDKのインストールなど、やったことがない対応をいくつかやれたので、少しサーバーに詳しくなれたかな? と思いました。

あと、マイクラ民の皆様はご存じと思いますが、Minecraft Mod/Pluginを対象としたマルウェア“fractureiser”にはご注意くださいね!

PageTop