0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マインクラフトサーバーの構築方法

Last updated at Posted at 2024-12-06

0.目的

友人から自前でサーバーを構築する方法を教えてほしいと言われたので,記事として残しておこうという目的で書きます。そこまで難しいことはやらないです。端的に言えばマイクラサーバーの構築は必要なソフトウェアを入れて,オプションを付けてコンソール上で実行するだけです。

//#はコメントアウトや補足をしたい時に使ってます。

1.必要なもの

<その1>
当たり前ですがPCがなきゃお話になりませんね。サーバー建てるPCなんてテキトーなもので良いんです。古い5,6年前のノートPC使ってもいいし,サーバー用のPCを新たに用意してもいいし,メインPCを使うでもなんでも良いんです。

<その2>
次に絶対必要なソフトウェアですが,JAVAですね。マインクラフトというゲームはJava Virtual Machineを使って実行しているゲームなので,そのサーバーを建てるのにもJAVAは必要になります。

本格的に構築するならOS(Operating System)はLinuxの方が良い。

<補足>
WindowsってServer版以外のHome,Pro,Pro for Workstations,Education,Business,Enterprise版のライセンスの制約で20台までのデバイスの接続しか認められていないので,そのような制限が存在しないLinux,macOSなどを使う方が良いでしょう。(Server版を買ってもいいけど最低55万円とかした気がする。)

Javaをインストールするといっても JRE(Java Runtime Environment)JDK(Java Development Kit) の2つがあってどっちをインストールすりゃいいんやってなる人がいると思います。サーバーを建てる場合は必ずJDKの方が必要になります。(古いバージョンの場合はJava8で動いているのでJava8ベースのJREでも動くことがあるみたいですが。 ver1.12.2まではJava8,1.13からは知らん。)

それではJDKのインストールをしていきましょう。まずはLinuxからです。(コマンド叩いて実行して終わりだから)

[手順] JDKのインストール

LinuxにJDKをインストールする場合

①ターミナルを開いて次のコマンドでインストールを行う。

Debian系(Ubuntu,Debianなど)
user@localhost: ~$ sudo apt-get install openjdk-*-jdk openjdk-*-jre
RHEL系(CentOS 5・6・7,Fedora,RHELなど)
user@localhost: ~$ sudo yum install java-*-openjdk
CentOS 8以降,Fedora,RHELなど
user@localhost: ~$ sudo dnf install java-*-openjdk

*(アスタリスク) を使ってワイルドガードで公式リポジトリに存在する全てのバージョンのJDKをインストールしておくと楽です。sudo update-alternatives --config javaと実行すれば変更ができるのでインストールできるだけしておくと良いでしょう。

インストールが完了したらjavaコマンドが実行できるか確認をしましょう。コンソールにjavaと入力して実行するだけでもいいですし,java --versionと入力し実行してバージョンの確認を行っても良いでしょう。

bash or zsh
user@localhost: ~$ java --version
WindowsにJDKをインストールする場合

①Oracleの公式サイトからJDKインストーラーを取得する。
この記事を書いてる時点での最新のJDKはJDK23です。好きなJDKのバージョンを選びます。

Windowsのセクションからx64 MSI Installerまたはx64 Installerのどちらかを選びダウンロードして実行しインストールをします。

Oracle公式サイト
Oracle公式サイトのJDKダウンロードサイト

②インストールができたら,コマンドプロンプトかPowershellを開きます。管理者権限は不要
コンソール画面が出たらjavaと入力して実行するかjava --versionと入力して実行してJDKのバージョンを確認しても良いでしょう。

コマンドプロンプト or Powershell
C:\Users\$USER> java --version

コマンドを実行したら
「'java' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と表示された場合はパスの設定を行います。システムの詳細設定を開くと,右下の方に「環境変数」と書かれた項目があるのでそれをクリックします。システム環境変数の方の項目にある「Path」を選択し編集します。
system-path.png
右側にある新規というボタンを押した後参照を押してJavaのバイナリーフォルダーを指定します。せんたくできたらOKを押してパスを追加します。OKを押せるだけ押して設定完了しました。パスの設定が出来たらまた②の最初の手順でjavaコマンドを実行できるか試してください。パスの設定をしても実行できなかったら一度Windowsを再起動してみてください。
スクリーンショット 2024-12-06 175825.png

2.マインクラフトサーバーを選ぶ

マインクラフトって結構色んな遊び方できますよね。例えば,modを入れたりバニラのままで遊んだりと。そのような感じでマインクラフトサーバーを建てるためのツールもたくさんあります。バニラ環境のみで遊びたい場合はMinecraft公式サイトやMinecraft Launcherから,バニラ環境にプラグインを入れたい場合はSpigotやBukkitなどがあります。他にもmodを入れたいならFablicやForge,プラグインとforge modを同時に入れたいのであればMohist MCやSpongeなどがあります。とりあえず色々あります。一番簡単なのはForgeとバニラですね。その次にSpigot/Bukkitになります。Mohist MCやSpongeは結構ややこしくて面倒です。

まずは簡単なバニラとForgeを紹介したいと思います。(正直Forgeバニラと変わらん。てかForgeの方でバニラ環境作れるからForgeだけでいい説)

バニラ/Forgeサーバー

面倒なのでForgeで全て済ませます。Minecraft Forgeをダウンロードします。
https://files.minecraftforge.net/
自分の遊びたいバージョンを選んでダウンロードすればいいです。安定版の方が良いと言う人いますが正直Forgeの場合はBeta版じゃなければ最新版の方が良いと思います。ダウンロードできたら実行します。すると,選択肢がいくつか出てくると思いますが今回はクライアント側ではなくサーバー側の話なので Install Serverを選択します。ただ,このままOKを押すとマインクラフトのクライアント側のフォルダ内がめちゃくちゃになるので,サーバー用のフォルダを用意して右下の「・・・」のボタンから用意したフォルダを選択してサーバーのインストールをしてください。

Windowsの場合 [手順1]サーバーを起動する サーバーのインストールができたらコマンドプロンプトを開いてください。 コマンドプロンプトを使ってサーバーを起動していきます。その前にちょっとしたコマンドの軽い解説をしていきます。詳しい事を知りたい場合は調べてみてください。

cd:change directoryのこと。コンソール内で作業するフォルダーを変更するコマンドになります。例えばC:\Users\shumaikun0716というユーザーフォルダ内に新しく作ったforgeという名前のフォルダがあるとします。そのフォルダに移動するときはcd forgeと実行すると移動できます。(このコマンドを実行するときの作業フォルダがC:\Users\shumaikun0716だった場合)

dir:フォルダ内に存在するファイルとフォルダの名前の一覧を出力するコマンドです。

では作業を始めていきます。cdコマンドでforgeフォルダに移動します。その次にdirコマンドで必要なファイルがあるか確かめます。(バージョンが古い場合のみ。多分1.12.2まで?)

<バージョンが古い場合>

javaコマンドでサーバーを一度起動します。eula.txtが生成されその中身がデフォルトではfalseになっているのでサーバーの起動が失敗します。メモ帳などでeula.txtを編集してfalseをtrueに書き換えて上書き保存し再度サーバーを起動します。

コマンドプロンプト
C:\Users\$USER> cd forge
C:\Users\$USER\forge> dir
2024/12/06  18:27    <DIR>          .
2024/12/06  18:26    <DIR>          ..
2024/12/06  18:27         4,466,148 forge-1.12.2-14.23.5.2860.jar
2024/12/06  18:27    <DIR>          libraries
2024/12/06  18:27        30,222,121 minecraft_server.1.12.2.jar

//このように表示されればOK
C:\Users\$USER\forge> java -jar -Xms2G -Xmx2G minecraft_server.1.12.2.jar nogui
//-jarでjarファイルの指定,-Xmx2Gで最大2GBまでのメモリーを割り当て,
  -Xms2Gで最低2GB以上のメモリーを割り当て,
  noguiでコンソールと別でウィンドウが起動しないようにする
  2Gで2GBなので1536Mにすると1536MBが割り当てられるようになる。

// eula.txtが生成されるのでそれを編集したら再度サーバーを起動する
C:\Users\$USER\forge> java -jar -Xms2G -Xmx2G minecraft_server.1.12.2.jar nogui

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[サーバーコンソール]
> stop         //stopコマンドでサーバーの停止が可能。opコマンドでOP権限の付与ができる。
server closed.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

minecraft_server.1.12.2.jarはバニラ環境であるのでforgeで遊びたければ再度起動し直す必要がある。再度起動するときに指定するjarファイルをforge-1.12.2-14.23.5.2860.jarに変えるだけでforgeで遊べるようになる。modはmodsフォルダ内に遊びたいmodファイルをぶち込んで起動すればmod入りで遊べる。

※追記
forge-*.jarの方はJava8じゃないと起動できないみたいです。Oracleのアカウントを作ってJDK8をダウンロードして使うかJREの方を使うかすれば起動できます。

これでサーバーの構築自体は完了です。サーバーPCのIPアドレスを入力すればサーバーに接続できます...と言いたいところですがポート開放されていないと接続できないです。(サーバーPCとクライアントPCが違う場合)

サーバーPCとクライアントPCが一緒であればMinecraftを起動してlocalhostをipアドレスとして打ち込めば接続できます。

Windowsのポート開放だるいんだよなぁ。Linuxだったらfirewalldとかufwでコマンド打ち込んで開放できるし。でも面倒なのはGUIアプリケーションにおける話だ。コマンド上でも制御できる。

[手順2]ポート開放
管理者権限で起動したPowershellを用意しましょう。
New-NetFirewallRuleコマンドを用いて新しいルールを作り通信できるようにします。

管理者Powershell
C:\Windows\System32> New-NetFIrewallRule -DisplayName {英数字のみで好きなルール名を付ける}`
                     -Protocol TCP  -LocalPort 25565 -RemotePort 25565 -Action Allow `
                     -Profile Any -Enabled True -LocalAddress Any -RemoteAddress Any

これでルール名が{好きなルール名}・プロトコルがTCP・ローカルポートが25565・リモートポートが25565・通信を許可・どのファイアウォールプロファイルでも適用する・ルールを作成後有効にする・どのローカルアドレスからも通信可・すべてのグローバルアドレスから通信可 という状態でポート開放が行われます。

<バージョンが新しい場合>

javaコマンドでサーバーを一度起動します。eula.txtが生成されその中身がデフォルトではfalseになっているのでサーバーの起動が失敗します。メモ帳などでeula.txtを編集してfalseをtrueに書き換えて上書き保存し再度サーバーを起動します。

コマンドプロンプト
C:\Users\$USER> cd forge
C:\Users\$USER\forge> dir
2024/12/06  23:57    <DIR>          .
2024/12/06  18:26    <DIR>          ..
2024/12/06  18:15    <DIR>          libraries
2024/12/06  18:15               374 run.bat
2024/12/06  18:15               366 run.sh
2024/12/06  18:49               346 user_jvm_args.txt

//このように表示されればOK
C:\Users\$USER\forge> run.bat
//バッチファイルを実行するとeula.txtが作られる。

// eula.txtが生成されるのでそれを編集したら再度サーバーを起動する
C:\Users\$USER\forge> run.bat

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[サーバーコンソール]
> stop         //stopコマンドでサーバーの停止が可能。opコマンドでOP権限の付与ができる。
server closed.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

これでサーバーの構築は完了です。あとは生成されたmodsフォルダー内に自分の遊びたいmodを実行するための.jarファイルをぶち込んでサーバーを起動すればmod入りのサーバーで遊べます。

user_jvm_args.txtというファイルがあるのでそのファイルを編集するとサーバー起動時に割り当てるメモリーの量を変更できる。

user_jvm_args.txt
# 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  (デフォルトでは先頭に#タグが付いているので#を消してコメントを解除するか
#         新たにオプションを書くかのどちらかをすればよい。)
#That is an example
-Xms4G -Xmx4G

//  -Xms2Gで最低2GB以上のメモリーを割り当てる。
//  -Xmx2Gで最大2GBまでのメモリーを利用可能にする。
//  2Gで2GBなので1536Mにすると1536MBが割り当てられるようになる。

サーバーPCのIPアドレスを入力すればサーバーに接続できます...と言いたいところですがポート開放されていないと接続できないです。(サーバーPCとクライアントPCが違う場合)

サーバーPCとクライアントPCが一緒であればMinecraftを起動してlocalhostをipアドレスとして打ち込めば接続できます。

Windowsのポート開放だるいんだよなぁ。Linuxだったらfirewalldとかufwでコマンド打ち込んで開放できるし。でも面倒なのはGUIアプリケーションにおける話だ。コマンド上でも制御できる。

[手順2]ポート開放
管理者権限で起動したPowershellを用意しましょう。
New-NetFirewallRuleコマンドを用いて新しいルールを作り通信できるようにします。

管理者Powershell
C:\Windows\System32> New-NetFIrewallRule -DisplayName {英数字のみで好きなルール名を付ける}`
                     -Protocol TCP  -LocalPort 25565 -RemotePort 25565 -Action Allow `
                     -Profile Any -Enabled True -LocalAddress Any -RemoteAddress Any

これでルール名が{好きなルール名}・プロトコルがTCP・ローカルポートが25565・リモートポートが25565・通信を許可・どのファイアウォールプロファイルでも適用する・ルールを作成後有効にする・どのローカルアドレスからも通信可・すべてのグローバルアドレスから通信可 という状態でポート開放が行われます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?