【Minecraft Java版 1.18.1対応】ゼロからサーバ建ててみた【Linux】

伺か関連

結果

長文になってしまいました。需要はありませんが、私の初投稿にしてはマシなほうです。

それと知識がないと全く分からない記事になってしまったので、分からない方は読まないか、適宜ググって下さい。こうやってサーバって出来るんだーって思って見るのもアリです。

他の業界は知りませんが、IT業界は「ggrks」が常識です。もっとも、私は世間とはかけ離れた残念な性格なので連絡さえあればいくらでも教えます。危ないこと以外は。

最初に

この記事は当サイトでの初投稿及び、伺か2021アドベントカレンダーの12月5日分のものになります。

伺かと関係ない?伺か関係者用のサーバ作るんだから良いんだよ!(投げやり)

あ、勿論関係者でない方でも気軽に来てください。ただし、荒らしは即BANします。

早速取り掛かります。

サーバを建てるまでの準備と知識

前情報とか

マインクラフトは色々なバージョンがある

  • Java Edition
  • Bedrock Edition
  • Microsoft Dungeons
  • Microsoft Launcher
  • Education Edition
  • China Edition

いつの間にかMicrosoftに買収されていたのですね…。噂では聞いたことありましたが…。

どれを買えば良いか悩むのであれば、一定のスペック要件を満たしたパソコンを持っているならJava版を買えば間違いはありません。

そうでないなら、マルチプラットフォームでクロスプレイなどして遊べ、家庭用ゲーム機でプレイ出来るBedrockEdition(いわゆる統合版)で良いと思います。

私が最後にプレイしたのはPSVitaという謎機種でマルチプレイをして遊んでいたのが最後。その時はサーバを自前で建てる必要はありませんでした。ですが今回必要なのはマイクラのJava版なので自前でサーバを用意する必要があります。

当然ですがJava版と統合版の間ではクロスプレイは出来ません。(12/11追記:Java版のサーバ側でプラグインを入れると可能なようです)

役に立ったサイト様に感謝

以下はマインクラフトサーバを建てる方法をググった結果です。役立つ情報を提供してくださったサイト様に感謝。

このご時世、引用元や参考にしたサイト等を直リンクしてしまって良いのかも悩みものです。

そこらへんの知識はないので、そういうときは書かないのが安定。今後、指摘が無ければそれでいきます。だって、他者様のブログを直リンクするのは🥴

サーバ、選択肢は沢山!

公式でもRealmsというサーバを用意してくれていますが、制限が多い上に値段が高いです。ただし手間としては最もラクかもしれません。

自由にしたいなら、有名所だとConoHaVPS等のレンタルVPSでも良さそうです。サーバをレンタルするなら必ずVPSのものにして下さい。管理者権限が必要になる作業があります。

自宅でサーバを運用できそうなら、それも悪くありませんが、セキュリティに自信がないなら止めておいたほうが良いです。メリットとしては、自宅でサーバを建てれば電気代だけで済みます。それと勉強になる。レンタルVPSの月額とどっちが高くつくのか、それは分かりません!

自宅サーバを運用したい方は、「minecraft java サーバー 立て方」で調べると自宅でクライアント用のWindowsを使ってサーバを建てる方法がすぐに出てきます。

ですが残念なことに、Windowsはライセンスとして同時接続は20人までな上、クライアント用Windowsはサーバ目的で使用することは認められていません。

マイクロソフトソフトウェアライセンス条項を参照されたい。

リア友で数人で遊ぶなら良いのかもしれませんが(それでも多分グレーゾーンです)、今回はその予定ではありません。

要はサーバ建てるならOSは「Linuxを使え」ということです。第一、WindowsNT系は余計なリソースを使うのでサーバにするメリットが殆どない。WindowsServerは触ったこと無いので知りません。

今回は某所にて、敢えてゼロからサーバを構築します。でないと面白くありませんし、ちょっとだけですが勉強にはなります。

サーバを建てる

SSHで接続する

レンタルVPSでも自宅サーバでもゼロからやるなら大体同じ

今回私はDebian系を使います。自宅サーバの方は予め好きなLinuxをサーバとなるパソコンにインストールしておいて下さい。

クライアント側もLinuxを使います。Windows10や11の方でも今の時代はWSLを使えば容易にインストール出来ます。

レンタルならコントロールパネルから公開鍵を渡せますし、自宅ならローカルでパスワードログインした後公開鍵を渡せます。

鍵の作り方

https://docs.github.com/en/authentication/connecting-to-github-with-ssh を参照しました。

「鍵長2048以上のRSA」「ECDSA」「ED25519」が良いようです。

ssh-keygen -t rsa -b 4096 -C "ここにgithubのメアド"

ssh-keygen -t ed25519 -C "ここにgithubのメアド"

など。今はed25519が最善です。

パスフレーズは、各自安全なものを用意してください。保存場所やファイル名は適当に。

レンタルVPSならコントロールパネルからファイルマネージャで渡します。自宅サーバの方は、ローカル内で鍵を渡しておきます。

ssh-copy-id -i [公開鍵のパス] [リモートユーザ]@[リモートサーバホスト名]

公開鍵認証でSSH接続出来るか確認

ssh -i [秘密鍵のパス] [リモートユーザ]@[リモートサーバホスト名]

尚、エイリアスを登録しておくと今後のログインが楽になります。幾つでも登録できます。

Host [エイリアス名]
  HostName リモートホスト名
  User リモートユーザ
  IdentityFile [秘密鍵のパス]
ssh [エイリアス名]

パスワード認証無効化とルートログイン無効化

最低限のセキュリティ設定を行っておきます。

/etc/ssh/sshd_config を開いてPasswordAuthenticationとPermitRootLoginを編集します。私の場合はコメントアウトされていました。

sudo vi /etc/ssh/sshd_config
PermitRootLogin no

PasswordAuthentication no

これでrootへの直接のログインとパスワードでのログインを無効化します

その後sshのデーモンを再起動します

sudo systemctl restart sshd

日本語化する

sudo apt update
sudo apt upgarade
sudo apt -y install language-pack-ja # manpages-ja manpages-ja-dev(必要なら)
sudo update-locale LANG=ja_JP.UTF-8 # ロケールを日本語に変更
exit # 再接続します
ssh [エイリアス名]
sudo timedatectl set-timezone Asia/Tokyo # タイムゾーンも東京に変更
sudo systemctl restart systemd-timedated.service # 多分これでサービス再起動

マイクラのサーバとしての準備

マイクラのサーバソフトウェアはSpigotが良いらしいですので、今回はそれを使います。

まずはJavaをインストールします。現在の最新版は17です。適宜最新のものにして下さい。

 sudo apt install openjdk-17-jre-headless

さて、SpigotはどうやらDCMAの問題があってユーザがビルドしなければならないらしいです。

ですがhttps://getbukkit.org/download/spigothttps://getbukkit.org/download/spigot にビルド済みファイルが置いてあります。どうなっているのかは不明です。

※多分ここでフォルダを作っておいたほうがよい

基本中の基本ですが、作業用フォルダを作って、そこで下記の作業はやったほうがよさそうです。

mkdir [好きなフォルダ名] && cd [好きなフォルダ名] # フォルダを作ってそこに移動

Spigotのビルドツールを取ってきます。

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

次にビルドします。1.18.1の部分はその時の最新のものと置換してください。

java -jar BuildTools.jar --rev 1.18.1

起動する

初回はズラーっとログが出て終了します。

java -jar spigot-1.18.1.jar

するとeula.txtが生成されます。MINECRAFT エンド ユーザー ライセンス条項 を読み、同意するならeula.txtを以下のように編集します。

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Sat Dec 04 23:24:16 JST 2021
eula=true

eula=falseをeula=trueにするだけです。

再度、java -jar spigot-1.18.1.jar を実行するとワールド生成とサーバ接続待機の状態になります。

確認できたらCtrl+cで閉じます。

起動スクリプト作成

ここらへんからは分からないので、ほぼ引用元のまんまです。後々勉強して変更していきたい所です。

バックグラウンドで実行するためにscreenをインストール。私はtmuxしか使ったことが無いので分かりません!

sudo apt install screen

Makefileを作ります。※インデントはタブで行ってください。

start:
    screen -d -m -S "spigot" java -Xms1G -Xmx2G -XX:+UseConcMarkSweepGC -jar spigot-1.18.1.jar
make start # これでサーバを起動出来ます!

makeコマンドが見つからないと怒られた場合はインスコしてください。

sudo apt install make

基本設定

下記ファイルで色々設定できます。勉強中です。

ポート番号はセキュリティのために変えておきます。他は自由です。

max-players=32
white-list=true
motd=UkagakaMinecraftServer
server-port=[設定したいポート番号]

プラグイン導入

pluginsフォルダの中に実行ファイルをぶち込むだけでプラグインの導入が出来るらしいです。便利!

プラグインについては今は検討中です。

セキュアに!

あとはできるだけセキュアにするだけです。SSHのポートを変えたり、ファイアウォールをいじったり。

ファイアウォールの設定

sudo ufw status # 最初は無効になっています
sudo ufw allow [ssh接続したいポート番号]/tcp
sudo ufw allow [マイクラに設定したいポート番号]/tcp
sudo ufw allow 22/tcp # 念の為。後で消しても良い
sudo ufw enable
sudo ufw status # 表示されればOK

終わりに

疲れた…。

何時間連続で書いたか分かりませんが、とりあえず今日はこのへんで。どう見てもsystemdのサービスを作ったほうが良いですが、今はこの方法に留めておきます。

クライアント側の接続方法など後日追記していきますー。

コメント

タイトルとURLをコピーしました