概要
AWS 上に Minecraft サーバを構築する手順について記述する。
解説しない事
- AWS アカウントの用意
- AWS アカウントの day 1 対応
- AWS 上への具体的なインスタンスの立て方
環境
- Ubuntu: 24.04
- Minecraft: 1.21.1
手順全体像
- セキュリティグループの設定
- 依存関係のインストール
- Minecraft プロセスを動かす為のユーザ作成
- サーバインストール
- 自動起動設定
解説
セキュリティグループの設定
いわゆる「ポート開放」にあたる作業。
セキュリティグループのインバウンドルールで 0.0.0.0/0 -> 25565 を許可する。
依存関係のインストール
Minecraft サーバの本体は、以下 URL から DL 出来る server.jar ファイル。
これを実行する為に必要な様々なプログラムを予め用意する必要がある。
#!/bin/bash
apt update
## install
apt install openjdk-21-jdk-headless screen collectd -y
Minecraft プロセスを動かす為のユーザ作成
Minecraft サーバは、server.jar を実行している間だけ機能する。
セキュリティの観点から、この server.jar を実行する為の専用ユーザを作成しておく。
→ もし server.jar を管理者で実行していた場合、サーバを攻撃されて権限を盗まれたら、何でも出来てしまう為。
## pre-setup
useradd -m -s /bin/bash mcuser
echo "mcuser:P@ssw0rd" | chpasswd
cd /home/mcuser
mkdir minecraft
cd minecraft
サーバインストール
Minecraft 本体のインストール。
本体の実行には、以下コマンドを入力する。
java -Xmx1024M -Xms1024M -jar server.jar --nogui
## install server
wget https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar
java -Xmx1024M -Xms1024M -jar server.jar --nogui
echo "eula=true" > eula.txt
自動起動設定
前述の通り、Minecraft サーバは、server.jar を実行している間だけ機能する。
当然、サーバを停止するとプロセスも停止する為、そのままだと、次に遊ぶ時に手動でプロセスを起動しなければならない。
Linux サーバには用意したプログラムを起動・停止時に自動実行する機能がある為、それを設定する。
- 複数行のコマンド実行に対応する為や、メンテナンスを簡単にする為、起動・停止をシェルスクリプト化する
- daemon 化する (serviceファイルを作成する)
- 自動起動設定を行う
## create start.sh
cat <<EOF > start.sh
#!/bin/bash
screen -S minecraft -U -d -m java -Xmx1024M -Xms${MaxMemorySize}M -jar server.jar --nogui
EOF
chmod 755 start.sh
## create stop.sh
cat <<EOF > stop.sh
#!/bin/bash
screen -p 0 -S minecraft -X eval 'stuff "stop\015"'
EOF
chmod 755 stop.sh
chown -R mcuser:mcuser ../minecraft/
## create daemon
sudo cat <<EOF > /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Server
After=network.target
[Service]
ExecStart=/home/mcuser/minecraft/start.sh
ExecStop=/home/mcuser/minecraft/stop.sh
Restart=always
Type=forking
WorkingDirectory=/home/mcuser/minecraft/
User=mcuser
Group=mcuser
[Install]
WantedBy=multi-user.target
EOF
### enable process
sudo systemctl daemon-reload
sudo systemctl enable minecraft.service
## start process
sudo systemctl start minecraft.service
Minecraft から本サーバの IP を指定して、ワールドに入れたら構築完了。
参考