Ubuntuでマイクラ鯖立ち上げDAY① OSインストールからひとまず仮鯖立てまで完了。Javaのバージョンに注意!!
PCそのものにはそれなりな知識はあるものの、サーバーインフラ系は全くの無知であるへっぽこゲーマー船長が挑戦する、マイクラ自宅鯖立ち上げチャレンジ第一弾。今回はUbuntuのインストールからポート開放、鯖立てまで一日で”ひとまず”完了しましたので、その手順や注意点をご紹介していきます。
作業していて思ったことですが、筆者は「ある程度のネットサーフィン力」そして「ある程度の英語力」はあると自負していましたが、それでもUbuntuという希少なOSとMinecraftという頻繁にアップデートの行われるオンラインゲームという組み合わせということもあり、新しい情報にアクセスできず何度もつまずきました。このnoteをご覧の皆様も、これからの情報があくまで2021年11月現在の情報であることをご承知おきの上、ご自身で挑戦される際はバージョンの確認等をしっかり行って頂くようお願い致します。
参考にさせて頂きましたサイト様一覧
今回の自宅鯖立ち上げに際しまして参考にさせて頂きましたサイト様をまとめました。まず最初にご紹介させて頂くのがこちら。
今回のNoteもほぼ上記内容と同じ構成になっています。ざっくり言うと「Ubuntuで自宅マイクラ鯖立ち上げRTA!!」的な内容です。
僕もまずは上記内容で立ち上げてみましたが、先に言ってしまうと、将来性を考えて最初からやり直しをすることになります。
というのも、上記サイト様は先に紹介した通り”最速での立ち上げ”を目指した手順をご紹介されているようで、将来的に別鯖を立ち上げたり同サーバーPCを更に活用していく際のファイル階層管理やユーザー管理等を省いているのではないか?と感じたのが再インスコの主な理由です。
情報が古いですが、以下のソース様では「インストール用のフォルダ作成」及び「Minecraftサーバー管理用ユーザーの設定」を行っており、これをせずにインスコしてみたのですがjsonファイル等が一番上の階層に乱雑に配置されてしまい、またユーザーに関しても、rootではないもののMinecraft専用のユーザー設定ができていません(詳しい方ならゴニョゴニョ修正できるんだろうけど)。ズブ素人な私は怖いので、改めて知識を付けた上で再チャレンジしてみようと思いました。
今回ご紹介する内容は、僕自身の一回目のトライの際の反省点も踏まえ、アップデートした内容になります。
またnoteユーザーのみっくさんという方が、Ubuntuにてマイクラ鯖立ち上げ時に参考になるサイトをまとめられていますので、お時間のある方はこちらも是非ご覧くださいませ。
あ、あと今回は飛ばしますがPCの組み立てに関しては一般的な自作PCの組み立て方法とさほど変わらないと思います。より冗長性の高いパーツ選びのコツなどはあると思いますが、自分がまだまだその辺未熟な為(あとそこまで書くと長くなりすぎる)、今回は割愛させて頂きます。
では早速いきましょう!
Ubuntu Desktopのインストール
1. ISO イメージをダウンロード
まっさらド新品なサーバー用PCが組み上がったら、早速OSをぶち犯しま...失礼、ぶち込みます。このバージョン選びに関しても、安定性が高く先人の知恵も使える少し前のLTSを入れた方が...等の様々なご意見がありましたが、ここは初心者である自覚をもって、迷わず最新版のUbuntu Desktop LTSを導入しましょう。
ここで今組み立てたサーバーPCとは別のPCが必要になってしまうのですが、Ubuntuの公式サイトからインストールディスクを作成するためのisoデータをダウンロードする必要があります(サーバーを作ろうとしているくらいなので心配いらないでしょう)。下記リンクの "20.04LTS" (2021年11月現在) というボタンをクリックすると、自動的にダウンロードが開始されます。
ここでダウンロードされるのが.isoファイルというOSのデータになります。これをUSBやDVD経由でサーバー機にぶち込むわけですが、ISOイメージはいわゆる.zipのような圧縮ファイルと違い、「USBやDVDに書き込む」という作業が必要になります。単純にインストール用USBを差して、ダウンロードしてきた.isoファイルをコピーするだけではダメなので注意しましょう。
余談ですが、公式サイトからDLしたISOファイルからインストールしてもちゃんと日本語化されていたので、わざわざ日本語化されたものを拾ってくる必要はなさそうです。良かった良かった。
2. ISO イメージを USB メモリに焼く
僕が今回組んだサーバー用PCはMini-ITXマザーで、一応DVD/CDモジュールを入れられるケースではあるものの今回は用意していません。ということで今回はUSBにISOイメージを書き込みました。
書き込む際はRufus等のBootable USB Driveを作成できるソフトウェア(なんでもいいです)を使用しましょう。手順は各ソフトウェア毎に確認していただければと思いますが、基本順当にクリックしていけば完了できると思います。
これでUbuntu Desktopのインストール準備が整いました。
3. Ubuntu をインストールする
早速作成したインストールUSBをサーバー機にぶっ差します。このまま起動しても基本的には問題ないはずなのですが、知識のある方は一度BIOSにて各パーツが正しく認識していること、メモリクロックの確認、起動ディスクの順位確認等をしておきましょう。
※ここでUbuntuをはじめとするLinax系は起動ドライブをSATA0に接続しないと認識の順番がずれてちょっと面倒なことになるみたい?ですね。僕は前の記事でも書いた通りNVMe接続のM.2を起動ディスク兼ゲームデータ置き場、HDDをバックアップ用ディスクとしたいと思っていますので、その通りに進めていきます。
インストール手順についてはつくみ島だよりさんというサイトさんにて詳しくご紹介されていますので、是非こちらを参考にしてみてください。
Java JDK"16"←ココ重要!!のインストール
ここで最初のつまずきポイント。今回導入するMinecraftはJava版ということでこちらのサーバー機にもJavaを導入するのですが、日本語で紹介されているサイトではOpenJDKがどうだとかOracle JDKがどうだとか、はたまたdefault-jreまで出てくる始末。そして僕は溢れる(*古い)情報に惑わされた結果、ここで間違ったJavaバージョンを導入してしまい、失敗に終わったのでした。
*補足:Javaについて詳しく知りたい方は下記を参照。いらんと思うけど...
英語のサイトをみつけたのですが、Minecraft Server 1.17.1ではJava JDK16にて開発がされているようです。下記のサイトに従って、Javaをインストールしていきます。
また今回はGUIを搭載したUbuntu Desktopを使用していますが、今後Ubuntu ServerでメインとなるCLI(コードで指示を出すやつ)に切り替えていきたいので、Ubuntu Desktop内にあるターミナルにて導入しています。
まずはいつものやつ(って色んなサイトで言ってるけど実際何をしているのかはよく分かっていない)
※最初にsudoコマンドを使うといつもログイン認証させられるのはデフォなのでしょうか?sudo権限が上手く設定できていない?
$ sudo apt-get update
念の為、現在このPCにJavaが入っていないか、入っている場合はどのバージョンが導入されているかを確認します
$ java -version
Javaが現在インストールされていない場合は、次の出力が表示されます
コマンド 'java' が見つかりません。次の方法でインストールできます:
sudo apt install default-jre # version 2:1.11-72, or
sudo apt install openjdk-11-jre-headless # version 11.0.11+9-0ubuntu2~20.04
sudo apt install openjdk-13-jre-headless # version 13.0.7+5-0ubuntu1~20.04
sudo apt install openjdk-16-jre-headless # version 16.0.1+9-1~20.04
sudo apt install openjdk-17-jre-headless # version 17+35-1~20.04
sudo apt install openjdk-8-jre-headless # version 8u292-b10-0ubuntu1~20.04
Open JDK(JRE内包JAVA)16を導入します
$ sudo apt install openjdk-16-jdk-headless
ここでもう一度 java -versionで正しく64bit版がDLされているか確認
$ java -version
Output
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2, mixed mode)
# 正しく出力されていれば↑が64bitとなっているはずです
セキュリティ対策
1. 一度ファイアウォールを全て閉じる
デフォルトの状態ではファイアウォール全開放されておりセキュリティ的にガバガバになってしまっているので、安全策的にも一度全部閉じてから、必要なポートだけ開けるようにしましょう。
まずは現状の確認。
$ sudo ufw status
現状ではターミナル画面上に「Status: inactive」と表示されたかと思います。ファイアーウォールが有効ならターミナル画面上には「Status: active」と表示されます。
まずは下記のコマンドで一旦全部閉じます。
$ sudo ufw default deny
2. Minecraft用ポート開放(TCP/25565)
Minecraftがデータの送受信を行うのにポート開放が必要なTCP25565及びTCP25575をポート開放します ※これはPC側のポート開放です
$ sudo ufw allow 25565/tcp
$ sudo ufw allow 25575/tcp
$ sudo ufw enable
ここで外部の友人等とプレイされる方はルータ側のポート開放(ポートフォワーディング)も必要です。その手順については「ルータの型番 ポート開放」等でググって頂くのが一番早いかと思われます。
注意点としましては、内部IPと外部IPをそれぞれ設定する際、「〇〇-〇〇」のような形式で番号を記入する必要がある機種があります(僕がそうでした)。その場合は「25565-25565」「25575-25575」とそれぞれ設定して上げるといいと思います。
当たり前ですが、自宅のサーバのポートを開放すると、外部から不正にアクセスされる危険性もあります。あくまでも自己責任で行って頂くとともに、公開鯖とする際はDDoS対策等のセキュリティ面強化もお忘れなく。
サーバー本体のインストール
1. Minecraft管理ユーザ作成
マインクラフト用の管理ユーザーを作成します。
ここでは、マインクラフト用のユーザーに対してデフォルトの設定をします。今回はユーザー名を"mc"として作業をすすめます。
まずはユーザー作成。パスワード入力を求められますが、こちらは今回作成したユーザー専用の新規パスワードとなります。
$ sudo adduser mc
そのまま設定を進めると「Enter the new value, or press ENTER for the default」と出てきますので、空欄のままEnterキーを連打。
Is the information correct? [Y/n]
と最後に聞いてきますので、「y」と入力し、よろしくおねがいしま~す!と叫びながらEnterキーを叩きます。これでMinecraft用管理ユーザーの新規作成が完了しました。
2. インストール用ディレクトリの作成
ここも僕が初回でつまずいたところ。この作業を省いてしまった結果、ファイルが/home内に散らばってしまい、再インスコする羽目になってしまったのです。今回はインストールするためのディレクトリをしっかり作成し、ディレクトリの所有者をMinecraftサーバ動作用に作成したユーザに設定します。
$ sudo mkdir /opt/minecraft
$ sudo chown mc:mc /opt/minecraft
ここでユーザーを先ほど作成したMinecraftサーバー動作用に作成したユーザー(mc)へ切替えます
$ su - mc
先程作成した、サーバーデータをダウンロードしたいフォルダへ移動します。
$ cd /opt/minecraft
ここらへんで「コマンドライン頑張ってるわ~」感を感じてると思います。一息ついてから、いよいよマイクラのサーバーを起動することろまで一気に進めていきましょう。
3. 最新のマイクラサーバデータのダウンロード
ではいよいよサーバーのダウンロードをしていきます。
2021年11月現在はバージョン1.17.1となっていますので、そのまま下記のコマンドを打つことでダウンロードができます。ちなみに最新版のサーバーデータをダウンロードするには、下記の公式サーバーのダウンロードリンクをそのまま下記の"wget "以降のURLと入れ替えて頂ければDL可能です。
$ wget https://launcher.mojang.com/v1/objects/a16d67e5807f57fc4e550299cf20226194497dc2/server.jar
ダウンロードしたファイルがあるか再確認。
$ ls /opt/minecraft
# [minecraft_server.jar]と出てきたらダウンロード成功です。
4. server.jarファイルの名前変更
ダウンロードしてきたserver.jarファイルの名前を、どのバージョンの物なのかわかるように名前を変更しておきます。(変えなくても全然OKです)
$ mv server.jar server_1.17.1.jar
ターミナル上なんの変化も無いですが、GUIで確認するとしっかりファイル名が変更されていることがわかります。初心者に優しいGUI万歳。こんな感じにファイル名にバージョンをつけておけば、どのバージョンのjarファイルなのかが一目でわかりますね。
5. 仮実行
ではいよいよサーバーを起動していきます。
$ java -Xmx1024M -Xms1024M -jar server_1.17.1.jar nogui
#上記でファイル名を変更していない方は server.jar のままでOKです
一度目は規約(EULA)に同意していないため、必ず途中でエラーになるようになっています。
6. EULAに同意
eula.txtを編集して、eula=falseをeula=trueに変更します。LinuxのエディタとしてVimが有名らしいのですが、初心者には難しいのでより直感的なnanoを使います。
次のコマンドを実行するとテキストエディタに変わります。
$ nano eula.txt
上下キーを使ってeura=falseの所をeura=trueに変更してctrl+Sで保存、ctrl+Xでエディタを終了してください。
7. 実行
再度さっきのコマンドを実行してください。
$ java -Xmx1024M -Xms1024M -jar server_1.17.1.jar nogui
# 上記でファイル名を変更していない方は server.jar のままでOKです
# メモリ割当5Gで起動の場合、下記のコマンドを実行してください
$ java -Xmx5G -Xms5G -jar server_1.17.1.jar nogui
いろいろ画面に表示された後に、下のような文章が出力されたら起動完了です!お疲れさまでした。
[21:51:58] [Server thread/INFO]: Done (18.549s)! For help, type "help"
あとは一緒にプレイする方がログインしやすいように、IPアドレスの形からURLにして配布できるように、無料の変換サービスを使用していきます。
DDNS Nowを使ってIPアドレスを○○.f5.siに変更
どのサービスでもいいのですが、私は以下のサービスを使いました。順当に登録をしていくと、最終的にURL形式でのリンクが手に入ります。こちらを友人さんに配布していただき、サーバー接続していただくと無事マルチサーバー立ち上げ完了となります!
鯖立ち上げに成功したので、冗長化に向けて次回導入したいもの
取り敢えずサーバーが立った!ので、前回ご紹介したうんちゃまさんが導入されている(というか恐らく一般的に24h鯖では導入されているであろう)以下のスクリプトを次回は導入していきたいと思います。
1. サーバー自体の再起動システム
2. worldフォルダの自動バックアップ
3. 上記スクリプトの定時(毎日)実行
上記内容をscreenとcronを使用し、実現していきたいと思います。
取り敢えずは皆で遊べるようになった!嬉しい!!
#Minecraft #Minecraftサーバー #マインクラフト #マイクラ #マイクラサーバー #Ubuntu #UbuntuDesktop #自作PC #自作サーバー #自宅サーバー #添い寝サーバー #鯖