なにこれ
Windows 11 Pro !!
RAM 64 GB !!
i7 12700kf !!
RTX 4060ti !!!
いええええええええい!!!!
ってノリノリに話してたら「じゃあ Minecraft サーバ立てて」とぶん殴られてひいこら立てた話。
Hyper-V
Pro なので、せっかくだから Hyper-V で構築しようと考え構築開始。
とりあえず脳死で Microsoft 社のページに行って、Hyper-V 有効化のコマンドを powershell にポイ。
Set-VMProcessor -VMName Windows10 -ExposeVirtualizationExtensions $true
Setting
そのあとのプロセスは以下ページを参照して Hyper-V、CentOS 再起動まで構築。
CentOS Stream 9
OS は Ubuntu か CentOS どっちにしようかなと悩んでいたのでとりあえず調査。
Ubuntu は 22.04 が安定版の最新で 2027/4 ぐらいにサポ終、20.04 は 2023/4 にサポ終とのこと。
対して CentOS Stream 9 は 2027/5 にサポ終。
また、RHEL 9 と同じくらいまで品質を保つと Red Hat 社が明言していたそう。
じゃあ CentOS でいいじゃんってことで選択。
ちなみに minecraft の java のバージョンと CentOS のデフォルトのバージョンの対応が以下なので、合うもので作るのがおすすめです。
Minecraft | Java | CentOS |
---|---|---|
1.20.1 | 17 | Stream 9 |
1.21.2 | 21 | Stream 10 |
Install
早速インストールしようとしたらなんか Hyper-V で起動しないエラー。
なんやこれと調べて以下を発見。
デフォルトじゃダメみたいですね。
その後は上の Hyper-V->Setting に貼った thinkit のページを参考にしながらポチポチ
ちなみにインストールタイプは thinkit のページと違う上、 java の選択がなかったので、FTP があればよいのかなと Server を選択し、FTP やほかに使いそうなもの(Network 関係とか System 関係とか)のチェックを入れてインスコ。(結局 FTP は使わず sftp で全部やり取りした)
基本的に以下設定でいいと思います。
言語 : English または 日本語
キーボード : japanese
言語サポート : English, Japanese
Security policy : 放置
Install Source : Local
ソフトウェアの選択 : Server
インスコ先 : クリックして即 Done(完了)
KDUMP : チェックを外す
ネットワークとホスト : 以下参照
その他、Minecraft サーバの IP を固定したいので、ネットワーク設定にて IP アドレスは Manual を選択し、マスク内の適当なアドレスをセット。
再起動->ログインした後に DNS の名前解決ができないという問題が発生したが、ネットワーク設定でやらかしをしていたので、/etc/resolv.conf にて nameserver をとりあえず 8.8.8.8 に設定。しばらく待ったらつながった。
その後は以下を参考にしながらゴニョゴニョ。
ちなみに結論から言うと screen は使わず tmux を使用したので、epel の設定などはやらなくていいです。
この辺で forge と spigot どっちを入れようか迷って結局 spigot にしました。
mod の管理ダルそうだし、慣れたら forge にしよう。
GeyserMC とかは公式のページが変わっていたようで、あまりよく分からないで以下にあった似てるのを入れました。
あとから最新バージョンが出ているのでインスコしよう!的なメッセージが流れてきたので、公式にあるのを入れたほうがいいかも。(ちなみに Bedrock ver では結局バージョンが古くて入れなかった。)
systemd の .service ファイルを書き始めたところで、以下の記事を参考に screen を tmux に変更。
ちなみに Type=forking を抜くと起動しないので [Service] 以下につけましょう。
セキュリティあれこれ
あとは最後に firewalld の設定として、/usr/lib/firewalld/services/ 以下に minecraft-bedrock.xml と ssh-neo.xml を設定。
ベースファイルとして ssh.xml をコピーして内容を変更。
$ sudo cp ssh.xml ssh-neo.xml
$ sudo cp ssh.xml minecraft.xml
$ sudo vi ssh-neo.xml
$ sudo vi minecraft-bedrock.xml
$ cat ssh-neo.xml
...
<port protocol="tcp" port="2222"/>
...
$ cat minecraft-bedrock.xml
...
<portt protocol="tcp" port="25565"/>
<portt protocol="udp" port="25565"/>
...
$ sudo firewall-cmd --add-services={ssh-neo,minecraft-bedrock} --permanent
$ sudo firewall-cmd --remove-services=ssh --permanent
$ sudo firewall-cmd --reload
ssh のポートを 2222 に変え、ssl 公開鍵認証を設定して完了!
SELinux を有効にしているので SSH のポート変更に備えて以下も実行。
# semanage port -a -t ssh_port_t -p tcp 2222
おしまい。
後日談
Hyper-V で起動しようとしたら、復元できませんでしたとのエラーが発生。
原因を調べていると以下を発見。
状態を保存していると復元の際にメモリエラーで死ぬらしい。
学び。
後々日談
別鯖にて 1.21.2 の minecraft server が欲しいとの要望が来まして。
CentOS Stream 10 が対応する java バージョンに合うからと前々に Download しておいた CentOS Stream 10 にて構築しようとしたら、 dnf update の際に package ほげほげ requires debhelper, but none of the providers can be installed
とか怒られました。
原因は古い rpm がサポートされなくなって依存関係がぶっ壊れてたらしい。
参考:
その為 --allowerasing
オプションが必要でした。
学び。