備忘録兼ねて。早速やっていきましょう
マシンのセットアップ
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/main
に BuildTools.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 を見ると、ちゃんと渡した引数通り実行されていることが確認できました