⛏️

Ubuntu 20.04でMinecraftサーバー構築

2022/05/21に公開

概要

Ubuntu 20.04 にPaperMCを導入してMinecraftサーバーを構築します。
この記事ではサーバーを起動してJava版のクライアントからアクセスできるところまでの手順を説明します。

手順

Java 17をインストール

$ sudo apt install openjdk-17-jdk-headless

インストールが完了したら念のためバージョン情報を確認。

$ java -version
openjdk version "17.0.3" 2022-04-19
OpenJDK Runtime Environment (build 17.0.3+7-Ubuntu-0ubuntu0.20.04.1)
OpenJDK 64-Bit Server VM (build 17.0.3+7-Ubuntu-0ubuntu0.20.04.1, mixed mode, sharing)

ufw(ファイアウォール)の設定

SSH接続用ポート(22)とMinecraft接続用ポート(25565)以外のポートを閉じます。
デフォルトのポート番号を使いたくない方は適宜読み替えてください。

すべてのポートを閉じる

$ sudo ufw default deny
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)

22番ポートを開ける

$ sudo ufw allow 22/tcp
Rules updated
Rules updated (v6)

25565番ポートを開ける

$ sudo ufw allow 25565/tcp
Rules updated
Rules updated (v6)

ファイアウォールを有効化

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

念のためファイアウォールの状態を確認。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
25565/tcp                  ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
25565/tcp (v6)             ALLOW       Anywhere (v6)

タイムゾーン変更

タイムゾーンを日本時間に合わせておきます。

$ sudo timedatectl set-timezone Asia/Tokyo

現在時刻を確認。

$ date
Sat May 21 15:53:08 JST 2022

PaperMCをダウンロード

Minecraftのサーバーソフトウェアの一種である、PaperMCをダウンロードします。

PaperMCのダウンロードページから、任意のバージョンをダウンロードしてください。
PeperMCダウンロードページ
※水色のボタンがダウンロードリンクになっています。

今回はcurlコマンドでバージョン1.18.2-341のjarをダウンロードします。

$ curl -OL https://api.papermc.io/v2/projects/paper/versions/1.18.2/builds/341/downloads/paper-1.18.2-341.jar
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 33.1M  100 33.1M    0     0   245M      0 --:--:-- --:--:-- --:--:--  245M

ダウンロードしたjarファイルは、適当なパスに空のディレクトリを作成し、そこに移動させておきましょう。
jarファイルの設置場所が、Minecraftの実行ディレクトリとなります。

jarファイルを実行する

paper-1.18.2-341.jarが置いてあるディレクトリに移動し、jarファイルを実行します。

$ java -jar paper-1.18.2-341.jar
Downloading mojang_1.18.2.jar
Applying patches
Starting org.bukkit.craftbukkit.Main
System Info: Java 17 (OpenJDK 64-Bit Server VM 17.0.3+7-Ubuntu-0ubuntu0.20.04.1) Host: Linux 5.13.0-1027-oracle (aarch64)
Loading libraries, please wait...
[17:39:10 ERROR]: Failed to load properties from file: server.properties
[17:39:10 WARN]: Failed to load eula.txt
[17:39:10 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

初回起動時はEULA(使用許諾契約)への同意を求められて処理が終了します。
eula.txtというファイルがカレントディレクトリに作られているはずなので、そのファイルを編集します。

$ vi eula.txt

4行目のeula=false を eula=true に変えて保存してください。

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#You also agree that tacos are tasty, and the best food in the world.
#Sat May 21 17:39:10 JST 2022
eula=true

もう一度jarファイルを実行します。
以下のようなログが出力されたら起動成功です。

$ java -jar paper-1.18.2-341.jar
Starting org.bukkit.craftbukkit.Main
System Info: Java 17 (OpenJDK 64-Bit Server VM 17.0.3+7-Ubuntu-0ubuntu0.20.04.1) Host: Linux 5.13.0-1027-oracle (aarch64)
Loading libraries, please wait...
[19:38:05 INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[19:38:05 INFO]: Found new data pack file/bukkit, loading it automatically
[19:38:07 INFO]: Loaded 7 recipes
[19:38:08 INFO]: Starting minecraft server version 1.18.2
[19:38:08 INFO]: Loading properties
[19:38:08 INFO]: This server is running Paper version git-Paper-341 (MC: 1.18.2) (Implementing API version 1.18.2-R0.1-SNAPSHOT) (Git: fc1752f)
[19:38:08 INFO]: Server Ping Player Sample Count: 12
[19:38:08 INFO]: Using 4 threads for Netty based IO
[19:38:08 INFO]: Default game type: SURVIVAL
[19:38:08 INFO]: Generating keypair
[19:38:09 INFO]: Starting Minecraft server on *:25565
[19:38:09 INFO]: Using epoll channel type
[19:38:09 INFO]: Paper: Using libdeflate (Linux aarch64) compression from Velocity.
[19:38:09 INFO]: Paper: Using OpenSSL (Linux aarch64) cipher from Velocity.
[19:38:09 INFO]: Preparing level "world"
[19:38:19 INFO]: Preparing start region for dimension minecraft:overworld
[19:38:19 INFO]: Preparing spawn area: 0%
[19:38:19 INFO]: Time elapsed: 301 ms
[19:38:19 INFO]: Preparing start region for dimension minecraft:the_nether
[19:38:20 INFO]: Time elapsed: 322 ms
[19:38:20 INFO]: Preparing start region for dimension minecraft:the_end
[19:38:20 INFO]: Time elapsed: 289 ms
[19:38:20 INFO]: Running delayed init tasks
[19:38:20 INFO]: Done (11.599s)! For help, type "help"
[19:38:20 INFO]: Timings Reset
>

クライアントから接続してみる

Minecraftを起動して試しにアクセスしてみます。

ログにログイン履歴が出力されます。

[19:41:22 INFO]: UUID of player DE_TEIU is 7ce9bc06-45ad-4461-a131-02d63320c709
[19:41:22 INFO]: DE_TEIU joined the game
[19:41:22 INFO]: DE_TEIU[/IPアドレス:4110] logged in with entity id 306 at ([world]10.5, 113.0, 8.5)
>

ちなみにターミナル上で任意のコマンドを実行させる事もできます。

> kill DE_TEIU
[19:50:06 INFO]: DE_TEIU fell out of the world
[19:50:06 INFO]: Killed DE_TEIU

おわりに

まずはUbuntu 20.04にPaperMCを導入してMinecraftサーバーを立ち上げることができました。
他、諸々の設定などは別の記事で解説予定です。

Discussion