はるさめ氏の日常

主に弱電とマイコンを扱っています。たまにネットワークも

お気持ちでマイクラ鯖を立てる|Ubuntu Server 22.04.2 LTS

備忘録兼ねて。早速やっていきましょう

マシンのセットアップ

Windows (Server エディションを除く)で鯖ホストするのは EULA が~とかいう論争をそもそも生まないためにも元から Server 用の OS を使えばいいじゃんということで、Ubuntu Server を使用します。CLI アレルギーの方は Ubuntu Desktop もありますヨ
ただ、どちらにせよ CLI 操作の方が圧倒的に楽なので CLI アレルギーの方はそもそも鯖立てるのを諦めましょう

そんなことはさておき、OS インストールは画面の通り進めるだけなので省きます

SSH の下準備

SSH でアクセスできるようにします

sudo ufw default deny
sudo ufw allow 22/tcp

sudo apt install openssh-server 
sudo openssh-server enable

ちなみに、IP アドレスの固定はルータ側で行っているので、ここではいじりません

ここからは SSH 接続を使ってメイン PC から作業をします

タイムゾーンの設定

一応やっておきます

sudo timedatectl set-timezone Asia/Tokyo

screen のインストール

仮想コンソールとでもいいましょうか、これがないとめんどくさいので入れます

sudo apt install screen -y

screen でよく使う操作まとめ

個人的によく使う操作を纏めておきます

スクリーンを新規起動させる

screen -S [name]

スクリーン一覧を表示する

screnn -ls

スクリーンに入る

screen -r [name]

スクリーンを削除する①

screen kill [PID]

※ PID は screen -ls を実行した際にスクリーンの名前の前に付けられる数字で、以下の例の場合は 1149 となる

harusame@mc-1:~$ screen -ls
There is a screen on:
        1149.mc       (02/24/2023 02:47:21 PM)        (Detached)
1 Socket in /run/screen/S-harusame.

スクリーンを削除する②

exit をすることでスクリーンから抜けると同時にそのスクリーンを削除することもできる

harusame@mc-1:~$ screen -ls
There is a screen on:
        10454.mc        (02/26/2023 12:55:03 PM)        (Detached)
1 Socket in /run/screen/S-harusame.
harusame@mc-1:~$ screen -r mc

~~~

harusame@mc-1:~$ exit
exit

~~~

[screen is terminating]
harusame@mc-1:~$ screen -ls
No Sockets found in /run/screen/S-harusame.

スクリーンから抜ける

[ctrl] + [A] -> [D]

鯖の jar ファイルを置くディレクトリを掘る

今後複数起動させたいとなった時にも対応できるように、mc/main/ ディレクトリに配置することにします

mkdir mc/main/

Java 17 のダウンロード

Open JDK を使います

sudo apt install openjdk-17-jdk

イクラ鯖構築

ここからは screen を使用します。便利だからね

screen -S mc

これで mc というスクリーンを作り、mc に入ります

ディレクトリを移動

先程作ったディレクトリに移動します

cd mc/main/

ビルドツールをダウンロード

今回は SpigotMC を使用しますが、大人の事情で自前でビルドする必要があります。ただ、結構簡単にできるようにしてくれているので感謝

wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastStableBuild/artifact/target/BuildTools.jar

SpigotMC をビルド

先程ダウンロードしたビルドツールを実行します

一応ファイルが存在するかを確認

harusame@mc-1:~/mc/main$ ls
BuildTools.jar

~/mc/mainBuildTools.jar が配置されていることが確認できましたので、こいつを実行します
今回使用するバージョンは 1.19.2 とします

sudo java -jar BuildTools.jar --rev 1.19.2

マシンスペック等にもよりますが結構時間がかかるのでコーヒーでも飲んで待ちましょう

終わったらこんな表示が出ます

Success! Everything completed successfully. Copying final .jar files now.
Copying spigot-1.19.2-R0.1-SNAPSHOT-bootstrap.jar to /home/harusame/mc/main/./spigot-1.19.2.jar
  - Saved as ./spigot-1.19.2.jar
harusame@mc-1:~/mc/main$

これでビルドは完了

ファイアウォールを開ける

イクラ鯖は通常 25565/tcp で通信を行うので、ポート開放を行います

sudo ufw allow 25565/tcp
sudo ufw enable

ビルドしたやつの実行とその他

先程ビルドした Java ファイルを実行します

java -jar spigot-1.19.2.jar nogui

こんな表示が出て止まるはず。それで正常

[14:31:33] [ServerMain/INFO]: Building unoptimized datafixer
[14:31:35] [ServerMain/ERROR]: Failed to load properties from file: server.properties
[14:31:35] [ServerMain/WARN]: Failed to load eula.txt
[14:31:35] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
harusame@mc-1:~/mc/main$

止まると同時に eula.txt やその他色々が生成されます。これを編集し、EULA に同意することで実行ができます

sudo nano eula.txt

これで eula=true にして保存します

続いて、server.properties を編集します

sudo nano server.properties

これは任意ですが、今回は以下の項目を編集します

motd=HarusameTech Home Server
pvp=false
white-list=true

そして、実行します

java -jar spigot-1.19.2.jar nogui

ホワイトリストを有効にしたため、このままでは誰も入れません。なので、whiltelist add ${username} で登録しましょう

これでお気持ちマイクラ鯖の完成

実際に入るとこんな感じ

プラグインを追加

試しに、一括破壊プラグインの Timber を追加してみます
wget が使えればよかったのですが、見当たらなかったので下記リンクより一旦 PC にダウンロードします

https://www.spigotmc.org/resources/timber.28236/

「Downlowd Now」をクリックしてダウンロードします

TeraTerm のウィンドウに D&D し、ディレクトリを入力して転送します

ディレクトリを確認

harusame@mc-1:~/mc/main/plugins$ ls
PluginMetrics  Timber.jar

ちゃんと転送できました

余談ですが、このスクリプトはバージョン 1.7, 1.8, 1.9, 1.10, 1.11, 1.12 でしかテストされてないようですが、試した限り Spigot 1.19.2 でも動作しました

起動スクリプト作成

起動させる度にいちいち引数指定するのはめんどっちいので、シェルスクリプトを作ります

sudo nano start.sh
#!/bin/bash

echo "Starting SpigotMC..."

sudo java -Xms2G -Xmx2G -jar spigot-1.19.2.jar nogui

実行テスト

bash start.sh
harusame@mc-1:~/mc/main$ bash start.sh
Starting SpigotMC...
Unbundling libraries to /home/harusame/mc/main/bundler
Starting server
Loading libraries, please wait...

~~~

[11:41:49] [Server thread/INFO]: Time elapsed: 2517 ms
[11:41:49] [Server thread/INFO]: [Timber] Enabling Timber v1.1
[11:41:49] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[11:41:49] [Server thread/INFO]: Done (13.731s)! For help, type "help"

htop を見ると、ちゃんと渡した引数通り実行されていることが確認できました