マイクラで始める自宅サーバー生活!マイクラサーバー(Java版)を建てる方法を解説する
どうもお疲れ様です。MESIです。
このたび自宅サーバーを始めたくてマイクラサーバーを建てました。
その内容を忘備録として残します。
前提
以下の前提で進めていきます!
- Linuxの知識がある程度あること(今回はUbuntuを使用します)
- すでにLinuxがサーバーマシンに入っていること
- ネットワークの知識がある程度あること(基本情報技術者レベル)
- サーバーにsshできること
- サーバーのローカルIPアドレスは固定済みであること
使用するマシン
- 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も開放してます。
ポート開放のチェック
以下のサイトで外部からのアクセスができるか確認できます。
まずはマイクラサーバーを起動します。
上記のサイトで現在の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ディレクトリに作成します。
起動用スクリプトの作成
#!/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
終了用スクリプトの作成
#!/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とします。
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日現在は誰でも入れます。興味があったら遊びに来てみてください!
参考サイト
Discussion
ミニPCでサーバ運用良いですね!
マイクラサーバとして、スペックは過剰なのか、不足しているのか
どれぐらいリソースを消費していて、電気代はどれくらいか?
などが気になりました!