🐮

マイクラで始める自宅サーバー生活!マイクラサーバー(Java版)を建てる方法を解説する

2025/01/01に公開
1

どうもお疲れ様です。MESIです。
このたび自宅サーバーを始めたくてマイクラサーバーを建てました。
その内容を忘備録として残します。

前提

以下の前提で進めていきます!

  • Linuxの知識がある程度あること(今回はUbuntuを使用します)
  • すでにLinuxがサーバーマシンに入っていること
  • ネットワークの知識がある程度あること(基本情報技術者レベル)
  • サーバーにsshできること
  • サーバーのローカルIPアドレスは固定済みであること

使用するマシン


https://amzn.to/4gzqHqw

  • GMKtec ミニpc
  • CPU: AMD Ryzen 9 PRO 6950H
  • RAM: 32GB
  • ストレージ: 1TB

作業前のおまじない

まずはおまじない。アップデートしましょう。

sudo apt update
sudo apt upgrade -y

マイクラサーバー用ユーザーを作成

今回マイクラサーバー用にユーザーを作成します。

sudo adduser minecraft

このユーザーでsudoを使えるようにするためにsudoersに登録します。

sudo usermod -G sudo minecraft

つくったらユーザーを以下のコマンドで切り替え可能です。

sudo su - minecraft

マイクラサーバー用ディレクトリの作成

/home/minecraftディレクトリで新しくマイクラサーバー用ディレクトリを作成します。
ディレクトリ名は今回はminecraftsvとします。

mkdir minecraftsv

マイクラサーバーのインストール

先ほど作成したminecraftsvディレクトリでマイクラサーバー用のソフトのダウンロードを行います。
今回はPaperMCをダウンロードします。

wget https://api.papermc.io/v2/projects/paper/versions/1.20.6/builds/137/downloads/paper-1.20.6-137.jar

また、このままだとファイル名が"paper-1.20.6-137.jar"となっていて、起動時に毎回このファイル名を指定するのはめんどくさいので、paper.jarとかに変更してしまうと良いでしょう。

mv paper-1.20.6-137.jar paper.jar

Javaのインストール

マイクラサーバーを動かすためにはJavaが必要なのでインストールします。

sudo apt install -y openjdk-21-jdk

ファイアウォールの設定

ファイアウォールの設定を行います。
ファイアウォールの設定はUbuntuの場合は

sudo ufw status

で確認ができます。

Java版のマイクラサーバーで使うポートはTCPの25565なのでそのポート開放をしましょう。

sudo ufw allow 25565

最後に設定を有効化します。

sudo ufw enable

ポート開放

ルーターのポート開放を行います。これを行わないと外部ネットワークからサーバーにアクセスできません。
まずはルーターの設定画面を開きましょう。
192.168.1.1をブラウザでアクセスすればおそらくルーターの管理画面が表示されると思います。(自宅のネットワーク環境によって異なります)

TP-Link製のルーターを使用している場合はまず詳細設定を開きます。

NAT転送 > ポート転送から以下の画像のような設定でポート開放をします。
デバイスのIPアドレスはサーバーのローカルIPアドレスを入力します。

外部ポートは私は20560にしていますが、内部ポートと同じ25565にしても問題はありません。
また、私はDynmapを外部に公開するために8123も開放してます。

ポート開放のチェック

以下のサイトで外部からのアクセスができるか確認できます。
まずはマイクラサーバーを起動します。

https://www.cman.jp/network/support/port.html

上記のサイトで現在のIPアドレスというところを押すと、自分のグローバルIPアドレスが自動的に入力されます。

チェックポート番号は、今回の例だと20560を入れます。

サーバーの起動

マイクラサーバーをダウンロードしたminecraftsvディレクトリに移動して起動します。

java -Xms8G -Xmx8G -jar paper.jar

-Xms8G -Xmx8Gはメモリ割り当ての量の指定です。お使いのサーバーマシンのメモリ量と相談して変更してください。

初回起動するとminecraftsvディレクトリ内にいくつかサーバー用のファイルが生成されて、強制的に終了します。

最初は利用規約に同意していないので、初回は勝手に終了します。
なので利用規約に同意しましょう。

ファイルの編集は本記事ではvimを使いますがnanoやemacsでも好きなものをお使いください

vim eula.txt

eula=falseをtrueに変更します。

- eula=false
+ eula=true

完了したら再度サーバーを起動してください。

java -Xms8G -Xmx8G -jar paper.jar

Timings Resetと最後に出れば起動成功です。

[12:21:32 INFO]: Timings Reset

ここまで来たら一度マイクラサーバーに入れるか確かめてみましょう。
サーバーアドレスにはサーバーのローカルIPアドレスを入れます。

友達に外部からサーバーに入ってもらう際には、
グローバルIPアドレス:開放したポート
の形式で入力してもらいましょう。

先ほどの例だと111.96.238.104:20560を入力します。

tmuxを利用しよう

このままだとsshで繋いでいるサーバーマシンからログアウトするとマイクラサーバーが停止してしまう問題があります。
そこでtmuxを利用します。

tmuxをダウンロードします。

sudo apt install tmux

minecraftをいう名前をつけてセッションを開始

tmux new -s minecraft

セッション内でサーバーを起動します。

java -Xms8G -Xmx8G -jar paper.jar

セッションから抜ける場合は、下記のキーを押すことで抜けることができます。

Ctrl + b を押下後に d

セッションに戻る場合は以下のコマンドで戻れます。

tmux a -t minecraft

これでサーバーからログアウトしてもマイクラサーバーは停止しません!

【おまけ】systemdを使用して自動再起動を行えるようにする

Minecraftサーバーを運用していて、再起動するたびに手動で起動コマンドを実行するのは面倒くさいですね。そこでsystemdを使用して自動再起動を行えるようにします。

まず以下2点のスクリプトを/home/minecraftディレクトリに作成します。

起動用スクリプトの作成

start.sh
#!/bin/bash

# screenの名前
SCREEN_NAME='minecraft'

# サーバーディレクトリ
SERVER_DIR='/home/minecraft/minecraftsv'

# サーバーを起動
cd $SERVER_DIR
tmux new -s $SCREEN_NAME -d 'java -Xms8G -Xmx8G -jar paper.jar'

スクリプトの実行権限を忘れずに与えます。

chmod +x start.sh

終了用スクリプトの作成

stop.sh
#!/bin/bash

# screenの名前
SCREEN_NAME='minecraft'

if [ -n "$(tmux list-sessions | grep -o "${SCREEN_NAME}")" ]; then
    # サーバー停止開始
    echo [`date '+%F %T'`] 'server stop script start'

    # サーバー内にアナウンス
    tmux send-keys -t $SCREEN_NAME "say 30秒後にサーバーを停止します" ENTER
    sleep 30s

    # セーブコマンド発行
    tmux send-keys -t $SCREEN_NAME "save-all" ENTER
    sleep 5s

    # 停止コマンド発行
    tmux send-keys -t $SCREEN_NAME "stop" ENTER

    # 停止実行待機
    sleep 30s
else
    echo [`date '+%F %T'`] 'server is not running'
fi

こちらもスクリプトの実行権限を忘れずに与えます。

chmod +x stop.sh

Unitファイルを作成

自動起動の制御をするためにファイルを作成します。
作成先は/etc/systemd/system/で、ファイル名はminecraft.serviceとします。

minecraft.service
After=network.target

[Service]
Type=forking
User=minecraft
Group=minecraft
WorkingDirectory=/home/minecraft/
ExecStart=/home/minecraft/start.sh
ExecStop=/home/minecraft/stop.sh
Restart=always

[Install]
WantedBy=multi-user.target

上記ファイルを作成したら以下のコマンドを実行します。

サービスの再読み込みをする

systemctl daemon-reload

自動起動を有効化

systemctl enable minecraft

状態確認

systemctl status minecraft

以下のようにLoaded:loadedになっていたら成功です!

● minecraft.service
     Loaded: loaded (/etc/systemd/system/minecraft.service; enabled; preset: enabled)

これで一度サーバー自体を再起動して、正常にマイクラサーバーが起動したら完了です。

【おまけ2】私のマイクラサーバー

mesicraft.ddns.net:20560

私のマイクラサーバーのアドレスです。
2025年1月1日現在は誰でも入れます。興味があったら遊びに来てみてください!

参考サイト

https://yufunagi.hatenablog.jp/entry/2024/06/10/180000
https://blog.huwasaku.com/147

Discussion

ABAB↑↓BAABAB↑↓BA

ミニPCでサーバ運用良いですね!

マイクラサーバとして、スペックは過剰なのか、不足しているのか
どれぐらいリソースを消費していて、電気代はどれくらいか?

などが気になりました!