こんちわ。
普段はゲーム会社でソシャゲを作ってます、あまがみです!
今回は誰でもMinecraftのModサーバーを構築する方法をまとめてみました!
参考記事があまりなかったので備忘録的な意味も込めて投稿します!
※ VMインスタンスは無料クレジット分で作成します。
※ バックエンド初心者なので大目に見てね ^^;
構築環境
- Windows10 Home 22H2
- Google Cloud Platform
- CentOS 7 (VM内)
1. VMインスタンスの作成
まずはVMインスタンスを作成します。
ComputeEngine > VMインスタンス > インスタンスの作成 をクリック。
項目 | 内容 | 備考 |
---|---|---|
名前 | minecraft-mod-server | お好きな名前で! |
リージョン | asia-northeast1(東京) | お好きなところで! |
ゾーン | asia-northeast1-b | |
マシンの構成 | n1-standard-2(2vCPU, 7.5GB) | |
可用性ポリシー | 標準 | スポットのが費用抑えられます。 |
ブートディスク | CentOS7 | |
ディスクの種類 | SSD 永続ディスク | |
ディスクサイズ | 50~60GB | 多いに越したことはない! |
基本ここだけ変更すればいい感じに動くと思われ!
2. Forgeのインストール
続いてModサーバーに必須なForgeをインストールします。
次に Forge DL からForgeをダウンロードします。
今回は Minecraftバージョン1.19.2
で運用したいので、下記画像の「Download Latest」のインストーラーをダウンロードします。
インストーラーを起動し、先ほど作成したフォルダを指定します。
この時Install server
が選択されているか確認してください!
3. 起動構成の変更
次にサーバーの起動構成を変更します。
メモリ割り当ての設定を行います。
以下のコードを追加し、保存してください。# Xmx and Xms set the maximum and minimum RAM usage, respectively. # They can take any number, followed by an M or a G. # M means Megabyte, G means Gigabyte. # For example, to set the maximum to 3GB: -Xmx3G # To set the minimum to 2.5GB: -Xms2500M # A good default for a modded server is 4GB. # Uncomment the next line to set it. + # -Xmx4G + # -Xms4G
次に
run.bat
をダブルクリックし、実行します。
色々ファイルが生成されるのですが、その中のeula.txt
を開きます。
以下のように
eula=false
をeula=true
に書き換え、保存してください。#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA). #Sun Apr 21 05:51:14 JST 2024 - eula=false + eula=true
4. アップロードデータの準備
サーバーにアップロードする準備をします。
※この段階で入れるmodが決まっていれば、mods
フォルダ内に入れてください!
※今回は Mekanism-1.19.2-10.3.9.13
をインストールします。
Modのインストールは こちら からどうぞ!
次にサーバーデータをzip化します。
先ほど作成したファイルたちをzipにしてください。(7zipおすすめ)
こんなかんじ。
5. ファイルアップロード
いよいよコンソールを触っていきますよ~
VMインスタンスのSSH接続を行います。
上部の「ファイルをアップロード」をクリックし、先ほど作成したzipファイルをアップロードします。
念のためファイルがちゃんとアップロードされているか確認するために以下のコマンドを実行してください。
ls
6. サーバーセットアップ
続いてサーバーのセットアップを行います。
既存パッケージを最新にアップデート
以下のコマンドを実行してください。
sudo yum -y update
OpenJDKのインストール
ここは運用するMinecraftのバージョンで変わってきます。
詳しくはGoogle先生にお聞きください...。
※1.19.2はJava17が推奨のため、以下のコマンドを実行します。sudo yum -y install https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm
ちゃんとインストールされているか確認しましょう。
これないと動かないので...。java -version
unzipのインストール
zipファイルを解凍するやつです。
以下のコマンドを実行してください。sudo yum -y install unzip
screenのインストール
バックグラウンドで動かしてくれるやつです。
以下のコマンドを実行してください。sudo yum -y install screen
7. サーバー、始動。
長らくお待たせいたしました。
ついにサーバーの起動です。
zipファイルを解凍する
以下のコマンドを実行し、ファイルの解凍を行います。
unzip ファイル名
※僕の場合は
unzip MinecraftVM.zip
と実行します。
ファイル確認
サーバー起動する
以下のコマンドを実行し、実行権限を付与します。
sudo chmod 777 run.sh
以下のコマンドを実行し、サーバーを起動します。
./run.sh
以下のように Done (34.127s)! For help, type "help"
と出力されていればOKです!
まだ設定が残っているので、一旦以下のコマンドでサーバーを停止させます。
白いテキストに戻ればOK。
stop
7. ポート開放
Minecraftのポートは 25565
なので、こいつを開放していきます。
以下のコマンドを順番に実行してください。
sudo firewall-cmd --permanent --add-port=25565/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
こんな感じで ports: 25565/tcp
と出力されていればOK!
8. ファイアウォール作成
外部からアクセスできるように、VMインスタンスにファイアウォールを設定していきます。
VPCネットワーク > ファイアウォール > ファイアウォールルールを作成をクリック。
以下の情報を入力します。
項目 | 値 | 備考 |
---|---|---|
名前 | minecraft-25565 | なんでもよし! |
ターゲット | ネットワーク上のすべてのインスタンス | ※1 |
送信元IPv4範囲 | 0.0.0.0/0 | |
プロトコルとポート | TCPにチェック + 25565 |
※1:本来はVMに対し個別でタグを作成し、そのタグと紐づけを行うほうが安全です。
詳しくはGoogle先生にお聞きください。
9. 静的外部IPの設定 [任意]
これは正直やってもやらなくてもって感じです。
やらなかった場合、接続IPが定期的に変わるので、変わるたびプレイヤーに入力してもらわなければなりません。(セキュリティ的にはいいけどね...。)
なので一応説明だけ。
VPCネットワーク > IPアドレス > 外部静的IPアドレスを予約します をクリック。
以下の情報を入力します。
項目 | 値 | 備考 |
---|---|---|
名前 | minecraft-ip | なんでもよし! |
IPバージョン | IPv4 | |
リージョン | asia-northeast1(東京) | サーバーと同じとこ! |
接続先 | minecraft-mod-server | 自分のサーバー名で! |
予約ボタンを押せば外部静的IPが発行され、割り当てられます。
10. 最後に
さぁ、マルチプレイできる環境が整いました。
サーバーを起動する際は、コンソールを閉じてもいいように screen
コマンドを使用します。
スクリーンを作成します。
screen -S スクリーン名
スクリーン内でサーバーを起動します
./run.sh
この2つさえ実行すればサーバーは立ちます。
screenコマンドを実行していれば、コンソール画面を閉じても大丈夫です!
以下の外部IPを、Minecraftの マルチプレイ > サーバー追加 > サーバーアドレス欄 に張り付けてして接続してみましょう。
無事には入れたら完璧!
エラーが出た場合は、プレイヤー側にサーバーと同じModが入っていなかったり...。
Google先生に聞いてください(n回目)
あとがき
以上になります。
海外の記事とかいろいろ参考にさせていただいたのでリンク張っておきます。
- Modサーバーの立て方
- OpenJDK17
- Java17
- IPアドレス
間違っている部分、記載ミス等ありましたらコメントにてお願いいたします。